================ @@ -91,6 +93,53 @@ TEST_F(InterpreterTest, IncrementalInputTopLevelDecls) { EXPECT_EQ("var2", DeclToString(*R2DeclRange.begin())); } +TEST_F(InterpreterTest, BadIncludeDoesNotCorruptTU) { ---------------- devajithvs wrote:
The state of the AST before and after the failed statement will not be identical (and asserts on AST dump). I could not find a way to emit/dump AST on a failed statement. ``` int i = 10; #include "interp-bad-include.h" int j = 20; ``` cat "test.C" | bin/clang-repl -Xcc -Xclang -Xcc -ast-dump I get: ``` ... ... TranslationUnitDecl 0x5af994c521d0 prev 0x5af994c26c18 <<invalid sloc>> <invalid sloc> `-VarDecl 0x5af994c52250 <input_line_1:1:1, col:9> col:5 i 'int' cinit `-IntegerLiteral 0x5af994c522b8 <col:9> 'int' 10 In file included from <<< inputs >>>:1: In file included from input_line_2:1: ./interp-bad-include.h:1:1: error: use of undeclared identifier 'error_here' 1 | error_here; // expected-error {{use of undeclared identifier}} | ^~~~~~~~~~ error: Parsing failed. TranslationUnitDecl 0x5af994c52438 prev 0x5af994c52328 <<invalid sloc>> <invalid sloc> `-VarDecl 0x5af994c524b8 <input_line_3:1:1, col:9> col:5 j 'int' cinit `-IntegerLiteral 0x5af994c52520 <col:9> 'int' 20 ``` There are no dumps after the failed statement. Do you know of another way to dump the AST (to trigger the assertion)? https://github.com/llvm/llvm-project/pull/153945 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits