[clang-repl] Correctly disambiguate dtor declarations from statements.
authorVassil Vassilev <v.g.vassilev@gmail.com>
Sun, 30 Apr 2023 19:43:38 +0000 (19:43 +0000)
committerVassil Vassilev <v.g.vassilev@gmail.com>
Sun, 30 Apr 2023 19:44:52 +0000 (19:44 +0000)
Differential revision: https://reviews.llvm.org/D148425

clang/lib/Parse/ParseTentative.cpp
clang/test/Interpreter/disambiguate-decl-stmt.cpp

index b26faaf..934087e 100644 (file)
@@ -88,10 +88,8 @@ bool Parser::isCXXDeclarationStatement(
       }
       case tok::kw_operator:
         return true;
-      case tok::annot_cxxscope: // Check if this is a dtor.
-        if (NextToken().is(tok::tilde))
-          return true;
-        break;
+      case tok::tilde:
+        return true;
       default:
         break;
       }
index 0022ad7..8f8a2a9 100644 (file)
@@ -26,6 +26,10 @@ I x = 10;
 x.I::~I();
 x = 20;
 
+struct Dtor1 {~Dtor1();};
+Dtor1::~Dtor1() { printf("Dtor1\n"); }
+Dtor1 d1;
+
 // Ctors
 
 // Deduction guide