mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-19 07:51:08 +00:00
[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:
parent
82ce36c981
commit
6408c131dd
3 changed files with 18 additions and 6 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue