[qfcc] Ensure macros expand for #elif

It seems I wasn't quite paying attention to when I should be getting
that invalid directive error for #version and when I shouldn't.
This commit is contained in:
Bill Currie 2023-11-03 13:48:38 +09:00
parent 82ce36c981
commit 6408c131dd
3 changed files with 18 additions and 6 deletions

View file

@ -92,6 +92,7 @@ void rua_expand_on (void *scanner);
void rua_expand_off (void *scanner);
void rua_end_directive (void *scanner);
void rua_start_if (bool expand, void *scanner);
void rua_start_else (bool expand, void *scanner);
void rua_if (bool pass, void *scanner);
void rua_else (bool pass, const char *tok, void *scanner);
void rua_endif (void *scanner);

View file

@ -213,13 +213,14 @@ directive
extra_warn
| ELSE { rua_else (true, "else", scanner); }
extra_warn
| ELIF expand expr { rua_else (expr_long ($3), "elif", scanner); }
| ELIF { rua_start_else (true, scanner); }
expr { rua_else (expr_long ($3), "elif", scanner); }
eod
| ELIFDEF ID
{ rua_else (rua_defined ($2, scanner), "elifdef", scanner); }
| ELIFDEF { rua_start_else (false, scanner); }
ID { rua_else (rua_defined ($3, scanner), "elifdef", scanner); }
extra_warn
| ELIFNDEF ID
{ rua_else (!rua_defined ($2, scanner), "elifndef", scanner); }
| ELIFNDEF { rua_start_else (false, scanner); }
ID { rua_else (!rua_defined ($3, scanner), "elifndef", scanner); }
extra_warn
| ENDIF { rua_endif (scanner); }
extra_warn

View file

@ -1826,7 +1826,17 @@ rua_start_if (bool expand, void *scanner)
cond.own_state = c.own_state & c.enabled;
}
DARRAY_APPEND (&extra->cond_stack, cond);
extra->expand = expand && !extra->suppressed;
extra->expand = expand;
yy_pop_state (scanner);
yy_push_state (PREEXPR, scanner);
}
void
rua_start_else (bool expand, void *scanner)
{
auto extra = qc_yyget_extra (scanner);
extra->expand = expand;
yy_pop_state (scanner);
yy_push_state (PREEXPR, scanner);