diff options
| author | 2025-12-22 09:25:52 +0100 | |
|---|---|---|
| committer | 2025-12-22 09:25:52 +0100 | |
| commit | 2dc09d20d6107588dd418ff802f866207fb0fa10 (patch) | |
| tree | ab3107a1af523bc22bab3f8b55473e88c9f06d4c | |
| parent | 500b3e1904d95129b2af4ce9262e8c0265a49202 (diff) | |
preprocessor make some errors just warnings
| -rw-r--r-- | c/lex.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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}); |