aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-12-22 09:25:52 +0100
committerlemon <lsof@mailbox.org>2025-12-22 09:25:52 +0100
commit2dc09d20d6107588dd418ff802f866207fb0fa10 (patch)
treeab3107a1af523bc22bab3f8b55473e88c9f06d4c
parent500b3e1904d95129b2af4ce9262e8c0265a49202 (diff)
preprocessor make some errors just warnings
-rw-r--r--c/lex.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/c/lex.c b/c/lex.c
index b08a704..d6aa95a 100644
--- a/c/lex.c
+++ b/c/lex.c
@@ -1048,11 +1048,13 @@ expandfnmacro(struct lexer *lx, struct span *span, internstr mname, struct macro
++i;
}
joinspan(&span->ex, tk.span.ex);
- if (narg < mac->nparam)
- error(span, "macro `%s' passed %d arguments, but takes %d", mname, narg, mac->nparam);
- else if (toomany) {
+ if (narg < mac->nparam) {
+ warn(span, "macro `%s' passed %d arguments, but takes %d", mname, narg, mac->nparam);
+ for (int i = narg; i < mac->nparam; ++i)
+ args[i].n = 0;
+ } else if (toomany) {
joinspan(&excessspan.ex, tk.span.ex);
- error(&excessspan, "macro `%s' passed %d arguments, but takes just %d", mname, narg, mac->nparam);
+ warn(&excessspan, "macro `%s' passed %d arguments, but takes just %d", mname, narg, mac->nparam);
}
if (mac->special) {
mac->handlerfn(lx, &tk, (struct rlist){argsbuf.p, argsbuf.n});