diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-27 05:24:00 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-27 05:24:00 +0000 |
commit | fa933d12255d2d9ed3c447da542fdf00a5c26f70 (patch) | |
tree | fb5d2cb1ebebf41f13b4900829ea6ae325c14428 | |
parent | 317640dfd0908e286ad9f2818b007340e0ee3c77 (diff) | |
download | bcm5719-llvm-fa933d12255d2d9ed3c447da542fdf00a5c26f70.tar.gz bcm5719-llvm-fa933d12255d2d9ed3c447da542fdf00a5c26f70.zip |
Fix decltype crash-on-invalid, if we don't find a matching ')' for an ill-formed
decltype expression.
llvm-svn: 151515
-rw-r--r-- | clang/lib/Parse/ParseDeclCXX.cpp | 4 | ||||
-rw-r--r-- | clang/test/Parser/bracket-crash.cpp | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index d798281f40f..3bf7005769e 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -674,9 +674,9 @@ SourceLocation Parser::ParseDecltypeSpecifier(DeclSpec &DS) { 0, /*IsDecltype=*/true); Result = ParseExpression(); if (Result.isInvalid()) { - SkipUntil(tok::r_paren, true, true); + SkipUntil(tok::r_paren); DS.SetTypeSpecError(); - return Tok.is(tok::eof) ? Tok.getLocation() : ConsumeParen(); + return StartLoc; } // Match the ')' diff --git a/clang/test/Parser/bracket-crash.cpp b/clang/test/Parser/bracket-crash.cpp index fd18e0e25fe..bcc6eabc6e9 100644 --- a/clang/test/Parser/bracket-crash.cpp +++ b/clang/test/Parser/bracket-crash.cpp @@ -1,6 +1,6 @@ -// RUN: not %clang_cc1 -fsyntax-only %s +// RUN: not %clang_cc1 -fsyntax-only -std=c++11 %s // PR7481 +decltype(; struct{ a } - |