From 59c9eb2a0766bdb7b1c1b1a2045f5381111771e5 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 9 Sep 2025 20:01:43 +0200 Subject: cpp: fix #conditional;s --- lex.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lex.c b/lex.c index 547e018..a0206aa 100644 --- a/lex.c +++ b/lex.c @@ -1191,22 +1191,26 @@ lex(struct lexer *lx, struct token *tk_) case PPELIF: ppelif(lx, &tk->span); break; case PPELIFDEF: ppelifxdef(lx, 1, &tk->span); break; case PPELIFNDEF: ppelifxdef(lx, 0, &tk->span); break; - case PPENDIF: ppendif(lx, &tk->span); break; case PPELSE: ppelse(lx, &tk->span); break; - case PPINCLUDE: ppinclude(lx, &tk->span); break; + case PPENDIF: ppendif(lx, &tk->span); break; + case PPINCLUDE: ppinclude(lx, &tk->span); break; default: assert(0&&"nyi"); } } else { switch (findppcmd(tk)) { case PPIF: /* increment nesting level */ + case PPIFDEF: + case PPIFNDEF: assert(nppcnd < arraylength(ppcndstk) && "too many nested #if"); ppcndstk[nppcnd].ifspan = tk->span.sl; ppcndstk[nppcnd].cnd = PPCNDTAKEN; ppcndstk[nppcnd++].elsep = 0; break; - case PPELIF: ppelif(lx, &tk->span); break; - case PPENDIF: ppendif(lx, &tk->span); break; - case PPELSE: ppelse(lx, &tk->span); break; + case PPELIF: ppelif(lx, &tk->span); break; + case PPELIFDEF: ppelifxdef(lx, 1, &tk->span); break; + case PPELIFNDEF: ppelifxdef(lx, 0, &tk->span); break; + case PPELSE: ppelse(lx, &tk->span); break; + case PPENDIF: ppendif(lx, &tk->span); break; default: ppskipline(lx); break; } } -- cgit v1.2.3