diff options
author | David Majnemer <david.majnemer@gmail.com> | 2013-09-22 01:24:26 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2013-09-22 01:24:26 +0000 |
commit | a5e92556ac18ff0fde5000ee252d79fe2c4a7b00 (patch) | |
tree | 977dfdcf8ecbc17c3b7b4a8abfee7bcb9037faac /clang/test/Parser/cxx-decl.cpp | |
parent | e9ef51222b8b00074a7a66d15dd3b280c2f07133 (diff) | |
download | bcm5719-llvm-a5e92556ac18ff0fde5000ee252d79fe2c4a7b00.tar.gz bcm5719-llvm-a5e92556ac18ff0fde5000ee252d79fe2c4a7b00.zip |
Parse: Don't crash during parsing if we lack a simple-type-specifier
Summary:
Parsing cast expressions during error recovery can put us in a bad
state. Check to see if the token for a simple-type-specifier makes
sense before further parsing.
Fixes PR17255.
Reviewers: rsmith, doug.gregor, CornedBee, eli.friedman
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1696
llvm-svn: 191159
Diffstat (limited to 'clang/test/Parser/cxx-decl.cpp')
-rw-r--r-- | clang/test/Parser/cxx-decl.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/test/Parser/cxx-decl.cpp b/clang/test/Parser/cxx-decl.cpp index 281e33b20f8..c33a8d561ca 100644 --- a/clang/test/Parser/cxx-decl.cpp +++ b/clang/test/Parser/cxx-decl.cpp @@ -209,6 +209,14 @@ namespace PR5066 { using T = int (*T)(); // expected-error {{type-id cannot have a name}} expected-warning {{C++11}} } +namespace PR17255 { +void foo() { + typename A::template B<>; // expected-error {{use of undeclared identifier 'A'}} \ + // expected-error {{expected a qualified name after 'typename'}} \ + // expected-warning {{'template' keyword outside of a template}} +} +} + // PR8380 extern "" // expected-error {{unknown linkage language}} test6a { ;// expected-error {{C++ requires a type specifier for all declarations}} \ |