diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-01-23 19:41:12 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-01-23 19:41:12 +0900 |
| commit | 7838acf484f7cb64b7723f2a1dd2fe00f53b77fc (patch) | |
| tree | 9ec40c3dd7e17d671b454d0e97ad97c2539ace92 | |
| parent | 98fb9ed53b6f6c7b792a751ed1f448af5c680877 (diff) | |
| download | ducc-7838acf484f7cb64b7723f2a1dd2fe00f53b77fc.tar.gz ducc-7838acf484f7cb64b7723f2a1dd2fe00f53b77fc.tar.zst ducc-7838acf484f7cb64b7723f2a1dd2fe00f53b77fc.zip | |
fix: skip removed tokens from macro arguments
| -rw-r--r-- | src/preprocess.c | 4 | ||||
| -rw-r--r-- | tests/macro_operators.sh | 10 |
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 |
