From 4444c247ea8b906f511864bcfb3ce62ed9653ba3 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 22 Nov 2025 11:01:46 +0100 Subject: c: move warning for extension keyword til after preprocessor --- c/c.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'c/c.c') diff --git a/c/c.c b/c/c.c index ab477da..02dbdcb 100644 --- a/c/c.c +++ b/c/c.c @@ -9,8 +9,8 @@ static int lexc(struct comp *cm, struct token *tk) { - struct token tk2; - int t = lex(cm->lx, tk); + struct token tk2, tk_[1]; + int t = lex(cm->lx, tk ? tk : tk_); if (t == TKSTRLIT && peek(cm, &tk2) == TKSTRLIT && tk2.wide == tk->wide) { /* 5.1.1.2 Translation phase 6: concatenate adjacent string literal tokens */ static char buf[200]; @@ -44,6 +44,13 @@ lexc(struct comp *cm, struct token *tk) } vfree(&rest); } + if (in_range(t, TKWBEGIN_, TKWEND_) && (tk = tk ? tk : tk_)->extwarn) { + static struct bitset already[BSSIZE(TKWEND_-TKWBEGIN_+1)]; + if (!bstest(already, t-TKWBEGIN_)) { + bsset(already, t-TKWBEGIN_); + warn(&tk->span, "%'tk in %M is an extension", tk); + } + } return t; } #define lex(Cm,Tk) lexc(Cm,Tk) -- cgit v1.2.3