diff --git a/simplecpp.cpp b/simplecpp.cpp index 050a5d08..604bdd19 100755 --- a/simplecpp.cpp +++ b/simplecpp.cpp @@ -2056,6 +2056,7 @@ namespace simplecpp { if (tok->next->op == '(') tok2 = appendTokens(&tokens, loc, tok->next, macros, expandedmacros, parametertokens); else if (expandArg(&tokens, tok->next, loc, macros, expandedmacros, parametertokens)) { + tokens.front()->location = loc; if (tokens.cfront()->next && tokens.cfront()->next->op == '(') tok2 = tok->next; } diff --git a/test.cpp b/test.cpp index bf83763e..97686aec 100644 --- a/test.cpp +++ b/test.cpp @@ -833,6 +833,12 @@ static void define_define_21() // #397 DEBRACKET macro "#define B(val) val\n" "A\n"; ASSERT_EQUALS("\n\n\nB ( 2 )", preprocess(code2)); + + const char code3[] = "#define __GET_ARG2_DEBRACKET(ignore_this, val, ...) __DEBRACKET val\n" + "#define __DEBRACKET(...) __VA_ARGS__\n" + "#5 \"a.c\"\n" + "__GET_ARG2_DEBRACKET(432 (33), (B))\n"; + ASSERT_EQUALS("\n#line 5 \"a.c\"\nB", preprocess(code3)); } static void define_va_args_1()