aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-23 19:41:12 +0900
committernsfisis <nsfisis@gmail.com>2026-01-23 19:41:12 +0900
commit7838acf484f7cb64b7723f2a1dd2fe00f53b77fc (patch)
tree9ec40c3dd7e17d671b454d0e97ad97c2539ace92
parent98fb9ed53b6f6c7b792a751ed1f448af5c680877 (diff)
downloadducc-7838acf484f7cb64b7723f2a1dd2fe00f53b77fc.tar.gz
ducc-7838acf484f7cb64b7723f2a1dd2fe00f53b77fc.tar.zst
ducc-7838acf484f7cb64b7723f2a1dd2fe00f53b77fc.zip
fix: skip removed tokens from macro arguments
-rw-r--r--src/preprocess.c4
-rw-r--r--tests/macro_operators.sh10
2 files changed, 13 insertions, 1 deletions
diff --git a/src/preprocess.c b/src/preprocess.c
index 70a7d13..5ccf698 100644
--- a/src/preprocess.c
+++ b/src/preprocess.c
@@ -526,7 +526,9 @@ static MacroArgArray* pp_parse_macro_arguments(Preprocessor* pp, bool skip_newli
}
tok = next_pp_token(pp);
- *tokens_push_new(&arg->tokens) = *tok;
+ if (tok->kind != TokenKind_removed) {
+ *tokens_push_new(&arg->tokens) = *tok;
+ }
skip_whitespaces_or_newlines(pp, skip_newline);
}
diff --git a/tests/macro_operators.sh b/tests/macro_operators.sh
index 57e8564..2954d53 100644
--- a/tests/macro_operators.sh
+++ b/tests/macro_operators.sh
@@ -122,3 +122,13 @@ int main() {
ASSERT_EQ(12, BAZ);
}
EOF
+
+cat <<'EOF' > expected
+foo
+EOF
+
+test_cpp <<'EOF'
+#define CONCAT(x, y) x ## y
+#define CONCAT2(name, r) CONCAT(name, r)
+CONCAT2(foo,)
+EOF