preprocessor: add regression test for unterminated macro call at EOF Signed-off-by: Eylon Krause <eylon1909@gmail.com>
diff --git a/verible/verilog/preprocessor/verilog-preprocess_test.cc b/verible/verilog/preprocessor/verilog-preprocess_test.cc index ae33567..7048888 100644 --- a/verible/verilog/preprocessor/verilog-preprocess_test.cc +++ b/verible/verilog/preprocessor/verilog-preprocess_test.cc
@@ -139,6 +139,16 @@ } } +// A function-like macro invoked with fewer arguments than parameters and no +// closing ')' (EOF reached mid-call) must not spin ConsumeAndParseMacroCall +// forever. Reaching any assertion below proves the preprocessor terminated and +// back-filled the missing arguments instead of hanging. +TEST(VerilogPreprocessTest, UnterminatedMacroCallDoesNotHang) { + PreprocessorTester tester("`define FOO(a, b) a\n`FOO(x", + VerilogPreprocess::Config({.expand_macros = true})); + SUCCEED(); +} + #define EXPECT_PARSE_OK() \ do { \ EXPECT_TRUE(tester.Status().ok()) << "Unexpected analyzer failure."; \