diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-04 08:23:05 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:06:21 +0900 |
| commit | 45f51624c4fdfab66be2976f1ceef32f000dd34d (patch) | |
| tree | ea2289bf05cc7c929172fc4fcb4c7f8b3acee744 | |
| parent | 1edc3a61992e24ab95306ad5506e6b33cbcf765a (diff) | |
| download | ducc-45f51624c4fdfab66be2976f1ceef32f000dd34d.tar.gz ducc-45f51624c4fdfab66be2976f1ceef32f000dd34d.tar.zst ducc-45f51624c4fdfab66be2976f1ceef32f000dd34d.zip | |
feat: report error on unknown preprocessor directive
| -rw-r--r-- | preprocess.c | 3 | ||||
| -rw-r--r-- | tests/083.sh | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/preprocess.c b/preprocess.c index 066a77f..5b7c180 100644 --- a/preprocess.c +++ b/preprocess.c @@ -945,6 +945,9 @@ void process_pp_directives(Preprocessor* pp) { } else if ((next_tok = process_define_directive(pp, tok)) != NULL) { tok = next_tok; continue; + } else { + fatal_error("%s:%d: unknown preprocessor directive (%s)", tok->loc.filename, tok->loc.line, + token_stringify(tok + 1)); } } else if (skip_pp_tokens(pp)) { make_token_whitespace(tok); diff --git a/tests/083.sh b/tests/083.sh new file mode 100644 index 0000000..8047f1f --- /dev/null +++ b/tests/083.sh @@ -0,0 +1,11 @@ +set -e + +cat <<'EOF' > expected +main.c:1: unknown preprocessor directive (foo (<identifier>)) +EOF + +bash ../../test_compile_error.sh <<'EOF' +#foo + +int main() {} +EOF |
