aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/preproc_expr.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/preproc_expr.i')
-rw-r--r--Examples/test-suite/preproc_expr.i34
1 files changed, 34 insertions, 0 deletions
diff --git a/Examples/test-suite/preproc_expr.i b/Examples/test-suite/preproc_expr.i
new file mode 100644
index 000000000..a24f7715c
--- /dev/null
+++ b/Examples/test-suite/preproc_expr.i
@@ -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
+
+%}