Fix operator precedence in preprocessor expressions
This commit is contained in:
parent
5a4baece4f
commit
de5ce08a7d
4 changed files with 48 additions and 10 deletions
|
|
@ -746,6 +746,7 @@ C_TEST_CASES += \
|
|||
preproc \
|
||||
preproc_constants_c \
|
||||
preproc_defined \
|
||||
preproc_expr \
|
||||
preproc_gcc_output \
|
||||
preproc_include \
|
||||
preproc_line_file \
|
||||
|
|
|
|||
34
Examples/test-suite/preproc_expr.i
Normal file
34
Examples/test-suite/preproc_expr.i
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
%module preproc_expr
|
||||
|
||||
// Check expressions which suffered from incorrect operator precedence prior
|
||||
// to SWIG 4.1.0.
|
||||
|
||||
%inline %{
|
||||
// `!` should have higher precedence than binary `+`.
|
||||
#if !0 + 1
|
||||
#else
|
||||
# error Bad preprocessor expression operator precedence
|
||||
#endif
|
||||
|
||||
// `!=` should have higher precedence than bitwise and.
|
||||
#if 1 & 2 != 0
|
||||
#else
|
||||
# error Bad preprocessor expression operator precedence
|
||||
#endif
|
||||
|
||||
// `==` should have higher precedence than bitwise or.
|
||||
#if (2 | 1 == 3) != 2
|
||||
# error Bad preprocessor expression operator precedence
|
||||
#endif
|
||||
|
||||
// `!=` should have higher precedence than bitwise xor.
|
||||
#if 1 ^ 2 != 4
|
||||
# error Bad preprocessor expression operator precedence
|
||||
#endif
|
||||
|
||||
// `<` should have higher precedence than '=='.
|
||||
#if 2 == 2 < 2
|
||||
# error Bad preprocessor expression operator precedence
|
||||
#endif
|
||||
|
||||
%}
|
||||
Loading…
Add table
Add a link
Reference in a new issue