fix a buggy fall through that caused a crash-on-invalid. rdar://6248081

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60961 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-12-12 19:20:14 +00:00
Родитель 3e6e67f631
Коммит fdb548e822
2 изменённых файлов: 12 добавлений и 6 удалений

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

@ -644,16 +644,16 @@ Parser::OwningExprResult Parser::ParseCastExpression(bool isUnaryExpression) {
SourceLocation AtLoc = ConsumeToken();
return Owned(ParseObjCAtExpression(AtLoc));
}
case tok::l_square:
// These can be followed by postfix-expr pieces.
if (getLang().ObjC1)
return ParsePostfixExpressionSuffix(Owned(ParseObjCMessageExpression()));
// FALL THROUGH.
case tok::caret:
if (getLang().Blocks)
return ParsePostfixExpressionSuffix(Owned(ParseBlockLiteralExpression()));
Diag(Tok, diag::err_expected_expression);
return ExprError();
case tok::l_square:
// These can be followed by postfix-expr pieces.
if (getLang().ObjC1)
return ParsePostfixExpressionSuffix(Owned(ParseObjCMessageExpression()));
// FALL THROUGH.
default:
UnhandledToken:
Diag(Tok, diag::err_expected_expression);

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

@ -1,4 +1,4 @@
// RUN: clang -fsyntax-only -verify -pedantic %s
// RUN: clang -fsyntax-only -verify -pedantic -fblocks %s
// PR2241
float test2241[] = {
@ -59,3 +59,9 @@ struct S { void *X, *Y; };
struct S A = {
&BADIDENT, 0 /* expected-error {{use of undeclared identifier}} */
};
// rdar://6248081
int test6248081() {
[10] // expected-error {{expected expression}}
}