]> granicus.if.org Git - clang/commitdiff
[Parse] Don't crash on ~A::{
authorBenjamin Kramer <benny.kra@googlemail.com>
Sun, 29 Mar 2015 14:35:39 +0000 (14:35 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sun, 29 Mar 2015 14:35:39 +0000 (14:35 +0000)
Found by clang-fuzz.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@233492 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseExprCXX.cpp
test/Parser/cxx-class.cpp

index 1030072068ff69c50af255298934825bebf402f5..08606d03e7ca0596c99c1c937613b2bc97f884ca 100644 (file)
@@ -2535,7 +2535,7 @@ bool Parser::ParseUnqualifiedId(CXXScopeSpec &SS, bool EnteringContext,
       if (SS.isNotEmpty())
         ObjectType = ParsedType();
       if (Tok.isNot(tok::identifier) || NextToken().is(tok::coloncolon) ||
-          SS.isInvalid()) {
+          !SS.isSet()) {
         Diag(TildeLoc, diag::err_destructor_tilde_scope);
         return true;
       }
index 215c941a4610fcd42ae872b2d2cc4c27bf1b6012..f46e752bcb09395828b008b4c0f68043e4d94827 100644 (file)
@@ -159,6 +159,7 @@ namespace DtorErrors {
   ~D::D() throw(X) {} // expected-error {{'~' in destructor name should be after nested name specifier}}
 
   ~Undeclared::Undeclared() {} // expected-error {{use of undeclared identifier 'Undeclared'}} expected-error {{'~' in destructor name should be after nested name specifier}}
+  ~Undeclared:: {} // expected-error {{expected identifier}} expected-error {{'~' in destructor name should be after nested name specifier}}
 
   struct S {
     // For another struct's destructor, emit the same diagnostic like for