Fix spaceship operator bugs, document, add tests
Remove some erroneously added brackets_increment() calls. Reject <=> in preprocessor expressions with a clear error message (it seems it isn't supported here - clang and gcc don't at least). The type returned by `<=>` is not `bool`. We pretend it's `int` for now, which should work for how it's likely to be used in constant expressions. Fixes #1622
This commit is contained in:
parent
cb887ed2d4
commit
02b4bd8eca
10 changed files with 91 additions and 7 deletions
|
|
@ -445,6 +445,8 @@ int Preprocessor_expr(DOH *s, int *error) {
|
|||
stack[sp - 1].svalue = stack[sp].svalue;
|
||||
sp--;
|
||||
break;
|
||||
case SWIG_TOKEN_LTEQUALGT:
|
||||
goto spaceship_not_allowed;
|
||||
default:
|
||||
goto syntax_error_expected_operator;
|
||||
break;
|
||||
|
|
@ -476,6 +478,11 @@ extra_rparen:
|
|||
errmsg = "Extra \')\'";
|
||||
*error = 1;
|
||||
return 0;
|
||||
|
||||
spaceship_not_allowed:
|
||||
errmsg = "Spaceship operator (<=>) not allowed in preprocessor expression";
|
||||
*error = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue