Extend bracket insertion to message sends to "super", e.g.,
super method:arg] will now recover nicely and insert the '[' before 'super'. llvm-svn: 113971
This commit is contained in:
parent
851b323866
commit
7617c7d295
|
@ -663,6 +663,18 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In an Objective-C method, if we have "super" followed by an identifier,
|
||||||
|
// the token sequence is ill-fomed. However, if there's a ':' or ']' after
|
||||||
|
// that identifier, this is probably a message send with a missing open
|
||||||
|
// bracket. Treat it as such.
|
||||||
|
if (getLang().ObjC1 && &II == Ident_super && Tok.is(tok::identifier) &&
|
||||||
|
getCurScope()->isInObjcMethodScope() &&
|
||||||
|
(NextToken().is(tok::colon) || NextToken().is(tok::r_square))) {
|
||||||
|
Res = ParseObjCMessageExpressionBody(SourceLocation(), ILoc, ParsedType(),
|
||||||
|
0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Make sure to pass down the right value for isAddressOfOperand.
|
// Make sure to pass down the right value for isAddressOfOperand.
|
||||||
if (isAddressOfOperand && isPostfixExpressionSuffixStart())
|
if (isAddressOfOperand && isPostfixExpressionSuffixStart())
|
||||||
isAddressOfOperand = false;
|
isAddressOfOperand = false;
|
||||||
|
|
|
@ -18,4 +18,18 @@ void f(A *a, int i, int j) {
|
||||||
a method1:5+2 second:+(3.14159)];
|
a method1:5+2 second:+(3.14159)];
|
||||||
a method1:[a method1:3 second:j] second:i++]
|
a method1:[a method1:3 second:j] second:i++]
|
||||||
a getBlah];
|
a getBlah];
|
||||||
|
|
||||||
|
int array[17];
|
||||||
|
(void)array[a method1:5+2 second:+(3.14159)]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@interface B : A
|
||||||
|
- (int)method1:(int)x second:(float)y;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation B
|
||||||
|
- (int)method1:(int)x second:(float)y {
|
||||||
|
super method1:x second:y];
|
||||||
|
return super getBlah];
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
Loading…
Reference in New Issue