diff options
Diffstat (limited to 'clang/lib/ExtractAPI/DeclarationFragments.cpp')
-rw-r--r-- | clang/lib/ExtractAPI/DeclarationFragments.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/clang/lib/ExtractAPI/DeclarationFragments.cpp b/clang/lib/ExtractAPI/DeclarationFragments.cpp index a569ff9..75d360a 100644 --- a/clang/lib/ExtractAPI/DeclarationFragments.cpp +++ b/clang/lib/ExtractAPI/DeclarationFragments.cpp @@ -593,20 +593,21 @@ DeclarationFragments DeclarationFragmentsBuilder::getFragmentsForObjCMethod( // For Objective-C methods that take arguments, build the selector slots. for (unsigned i = 0, end = Method->param_size(); i != end; ++i) { - Fragments.appendSpace() - .append(Selector.getNameForSlot(i), - // The first slot is the name of the method, record as an - // identifier, otherwise as exteranl parameters. - i == 0 ? DeclarationFragments::FragmentKind::Identifier - : DeclarationFragments::FragmentKind::ExternalParam) - .append(":", DeclarationFragments::FragmentKind::Text); + // Objective-C method selector parts are considered as identifiers instead + // of "external parameters" as in Swift. This is because Objective-C method + // symbols are referenced with the entire selector, instead of just the + // method name in Swift. + SmallString<32> ParamID(Selector.getNameForSlot(i)); + ParamID.append(":"); + Fragments.appendSpace().append( + ParamID, DeclarationFragments::FragmentKind::Identifier); // Build the internal parameter. const ParmVarDecl *Param = Method->getParamDecl(i); Fragments.append(getFragmentsForParam(Param)); } - return Fragments; + return Fragments.append(";", DeclarationFragments::FragmentKind::Text); } DeclarationFragments DeclarationFragmentsBuilder::getFragmentsForObjCProperty( |