From a853253fc1958000ecad8543d5fd15b6a6b34959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sat, 14 Dec 2024 12:52:44 +0000 Subject: [PATCH] Fix #400 (inner macro not expanded after hash hash) (#401) --- simplecpp.cpp | 2 +- test.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/simplecpp.cpp b/simplecpp.cpp index 604bdd1..3e9dda6 100755 --- a/simplecpp.cpp +++ b/simplecpp.cpp @@ -2066,7 +2066,7 @@ namespace simplecpp { } TokenList temp(files); calledMacro.expand(&temp, loc, tokens.cfront(), macros, expandedmacros); - return recursiveExpandToken(output, temp, loc, tok2, macros, expandedmacros2, parametertokens); + return recursiveExpandToken(output, temp, loc, tok2, macros, expandedmacros, parametertokens); } if (tok->str() == DEFINED) { diff --git a/test.cpp b/test.cpp index 97686ae..3ff00b3 100644 --- a/test.cpp +++ b/test.cpp @@ -841,6 +841,15 @@ static void define_define_21() // #397 DEBRACKET macro ASSERT_EQUALS("\n#line 5 \"a.c\"\nB", preprocess(code3)); } +static void define_define_22() // #400 inner macro not expanded after hash hash +{ + const char code[] = "#define FOO(a) CAT(DO, STUFF)(1,2)\n" + "#define DOSTUFF(a, b) CAT(3, 4)\n" + "#define CAT(a, b) a##b\n" + "FOO(1)\n"; + ASSERT_EQUALS("\n\n\n34", preprocess(code)); +} + static void define_va_args_1() { const char code[] = "#define A(fmt...) dostuff(fmt)\n" @@ -3020,6 +3029,7 @@ int main(int argc, char **argv) TEST_CASE(define_define_19); TEST_CASE(define_define_20); // 384 arg contains comma TEST_CASE(define_define_21); + TEST_CASE(define_define_22); // #400 TEST_CASE(define_va_args_1); TEST_CASE(define_va_args_2); TEST_CASE(define_va_args_3);