[CodeCompletion] Fix incorrect Objective-C block parameter formatting
This commit fixes an incorrectly formatted Objective-C block parameter placeholder in a code completion result. The incorrect parameter had a redundant leading parenthesis. rdar://25224416 llvm-svn: 287771
This commit is contained in:
parent
4ad5def9b0
commit
01bcfc1414
|
@ -2264,9 +2264,13 @@ static std::string FormatFunctionParameter(const PrintingPolicy &Policy,
|
|||
QualType Type = Param->getType().getUnqualifiedType();
|
||||
|
||||
if (ObjCMethodParam) {
|
||||
Result = "(" + formatObjCParamQualifiers(Param->getObjCDeclQualifier(),
|
||||
Type);
|
||||
Result += Type.getAsString(Policy) + Result + ")";
|
||||
Result = Type.getAsString(Policy);
|
||||
std::string Quals =
|
||||
formatObjCParamQualifiers(Param->getObjCDeclQualifier(), Type);
|
||||
if (!Quals.empty())
|
||||
Result = "(" + Quals + " " + Result + ")";
|
||||
if (Result.back() != ')')
|
||||
Result += " ";
|
||||
if (Param->getIdentifier())
|
||||
Result += Param->getIdentifier()->getName();
|
||||
} else {
|
||||
|
@ -2275,7 +2279,7 @@ static std::string FormatFunctionParameter(const PrintingPolicy &Policy,
|
|||
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
||||
// We have the function prototype behind the block pointer type, as it was
|
||||
// written in the source.
|
||||
return formatBlockPlaceholder(Policy, Param, Block, BlockProto,
|
||||
|
|
|
@ -51,3 +51,22 @@ typedef int (^BarBlock)(int *);
|
|||
//CHECK-CC1-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText performB}{LeftParen (}{Placeholder int x}{Comma , }{Placeholder int y}{RightParen )} (35)
|
||||
|
||||
@end
|
||||
|
||||
// rdar://25224416
|
||||
|
||||
@interface NoQualifierParens
|
||||
|
||||
@property(copy) void (^blockProperty)(void);
|
||||
@property BarBlock blockProperty2;
|
||||
|
||||
@end
|
||||
|
||||
void noQualifierParens(NoQualifierParens *f) {
|
||||
[f setBlockProperty: ^{}];
|
||||
}
|
||||
|
||||
// RUN: c-index-test -code-completion-at=%s:65:6 %s | FileCheck -check-prefix=CHECK-CC2 %s
|
||||
//CHECK-CC2: ObjCInstanceMethodDecl:{ResultType void (^)(void)}{TypedText blockProperty} (35)
|
||||
//CHECK-CC2-NEXT: ObjCInstanceMethodDecl:{ResultType BarBlock}{TypedText blockProperty2} (35)
|
||||
//CHECK-CC2-NEXT: ObjCInstanceMethodDecl:{ResultType void}{TypedText setBlockProperty2:}{Placeholder BarBlock blockProperty2} (35)
|
||||
//CHECK-CC2-NEXT: ObjCInstanceMethodDecl:{ResultType void}{TypedText setBlockProperty:}{Placeholder void (^)(void)blockProperty} (35)
|
||||
|
|
Loading…
Reference in New Issue