Issue better syntax error when objc's messaging

ares are not separated by ':' (radar 7030268).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100040 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Fariborz Jahanian 2010-03-31 20:22:35 +00:00
Родитель 4a2023f501
Коммит 809872eca7
2 изменённых файлов: 11 добавлений и 2 удалений

Просмотреть файл

@ -1817,9 +1817,12 @@ Parser::ParseObjCMessageExpressionBody(SourceLocation LBracLoc,
SkipUntil(tok::r_square);
return ExprError();
}
if (Tok.isNot(tok::r_square)) {
Diag(Tok, diag::err_expected_rsquare);
if (Tok.is(tok::identifier))
Diag(Tok, diag::err_expected_colon);
else
Diag(Tok, diag::err_expected_rsquare);
// We must manually skip to a ']', otherwise the expression skipper will
// stop at the ']' when it skips to the ';'. We want it to skip beyond
// the enclosing expression.

Просмотреть файл

@ -1,6 +1,12 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
@interface A
+(void) foo:(int) a;
@end
int main() {
id a;
[a bla:0 6:7]; // expected-error {{expected ']'}}
[A foo bar]; // expected-error {{expected ':'}}
[A foo bar bar1]; // expected-error {{expected ':'}}
}