aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/preproc_expr.i
diff options
context:
space:
mode:
authorAlistair Delva <adelva@google.com>2024-04-10 14:15:29 -0700
committerAlistair Delva <adelva@google.com>2024-04-11 12:58:28 -0700
commitd0f0f90be16c2ac553b5fa08512045273135147a (patch)
tree5d9ebb7a04807ea8a609ddd18b0162bc87530e4b /Examples/test-suite/preproc_expr.i
parent6ffc1dbf29ba98c4d8aa71ebc9b484e973fe1030 (diff)
downloadswig-master.tar.gz
Change-Id: I47cef2be94299220d80265d949a95b58eee2c23b
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
+
+%}