summaryrefslogtreecommitdiff
path: root/Examples
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2023-04-21 07:38:52 +1200
committerOlly Betts <olly@survex.com>2023-04-21 07:40:25 +1200
commitde4e3b454e23af3f26f8c2ea670482bef738e983 (patch)
tree33fd3903a69263b03bd0a907c894044c8797087a /Examples
parent3275331886192da4ce2047d52be91526f5608c4f (diff)
downloadswig-de4e3b454e23af3f26f8c2ea670482bef738e983.tar.gz
Fix #ifdef and #ifndef to work inside a %define
Previously they were silently ignored in this context (but #if defined already worked here if you need a workaround which works for older versions). Fixes #2183
Diffstat (limited to 'Examples')
-rw-r--r--Examples/test-suite/preproc_defined.i35
1 files changed, 35 insertions, 0 deletions
diff --git a/Examples/test-suite/preproc_defined.i b/Examples/test-suite/preproc_defined.i
index 9ae884691..f000446c4 100644
--- a/Examples/test-suite/preproc_defined.i
+++ b/Examples/test-suite/preproc_defined.i
@@ -151,3 +151,38 @@ const int y = 0;
#undef y
#undef x
+
+/* Regression test for #ifdef and #ifndef not working inside a %define.
+ * https://github.com/swig/swig/issues/2183
+ */
+#undef THISMACROISNOTDEFINED /* Make sure! */
+#define THISMACROISDEFINED
+
+%define %test()
+
+#ifdef THISMACROISNOTDEFINED
+# error #ifdef inside percent-define failed
+#endif
+#ifndef THISMACROISDEFINED
+# error #ifndef inside percent-define failed
+#endif
+/* Check pre-defined macro too. */
+#ifndef SWIG
+# error #ifndef inside percent-define failed
+#endif
+
+/* These cases already worked, but should still have test coverage. */
+#if defined THISMACROISNOTDEFINED
+# error #if defined inside percent-define failed
+#endif
+#if !defined THISMACROISDEFINED
+# error #if !defined inside percent-define failed
+#endif
+/* Check pre-defined macro too. */
+#if !defined SWIG
+# error #if !defined inside percent-define failed
+#endif
+
+%enddef
+
+%test()