diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-12-09 04:17:57 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-12-09 04:17:57 +0000 |
| commit | c88e40450d38533980387c8ed0c9ecd9b7e287c4 (patch) | |
| tree | 63ac4477e385b26dbcefc62841305ac60d71e338 | |
| parent | 95de7c37e286bf85d9111718caf48466eb1ac784 (diff) | |
| download | bcm5719-llvm-c88e40450d38533980387c8ed0c9ecd9b7e287c4.tar.gz bcm5719-llvm-c88e40450d38533980387c8ed0c9ecd9b7e287c4.zip | |
PR14549. Don't assert if we see an incomplete decltype specifier at the end of the file.
llvm-svn: 169688
| -rw-r--r-- | clang/lib/Parse/ParseDeclCXX.cpp | 3 | ||||
| -rw-r--r-- | clang/test/Parser/bracket-crash.cpp | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 503d436c3bd..2e7592f4dd9 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -707,8 +707,7 @@ SourceLocation Parser::ParseDecltypeSpecifier(DeclSpec &DS) { if (SkipUntil(tok::r_paren, /*StopAtSemi=*/true, /*DontConsume=*/true)) { EndLoc = ConsumeParen(); } else { - assert(Tok.is(tok::semi)); - if (PP.isBacktrackEnabled()) { + if (PP.isBacktrackEnabled() && Tok.is(tok::semi)) { // Backtrack to get the location of the last token before the semi. PP.RevertCachedTokens(2); ConsumeToken(); // the semi. diff --git a/clang/test/Parser/bracket-crash.cpp b/clang/test/Parser/bracket-crash.cpp index bcc6eabc6e9..93b52940773 100644 --- a/clang/test/Parser/bracket-crash.cpp +++ b/clang/test/Parser/bracket-crash.cpp @@ -4,3 +4,6 @@ decltype(; struct{ a } + +// PR14549. Must be at end of file. +decltype( |

