зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
3e6e67f631
Коммит
fdb548e822
|
@ -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}}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче