aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/errors/pp_unknowndirective5.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/errors/pp_unknowndirective5.i')
-rw-r--r--Examples/test-suite/errors/pp_unknowndirective5.i20
1 files changed, 20 insertions, 0 deletions
diff --git a/Examples/test-suite/errors/pp_unknowndirective5.i b/Examples/test-suite/errors/pp_unknowndirective5.i
new file mode 100644
index 000000000..f5fb0f5e7
--- /dev/null
+++ b/Examples/test-suite/errors/pp_unknowndirective5.i
@@ -0,0 +1,20 @@
+%module xxx
+
+/* Before SWIG 4.1.0 the `9%a` expression triggered:
+ *
+ * Error: Unknown directive '%a'
+ *
+ * The fix for that works by handling an apparent directive that isn't a
+ * recognised directive by noting down its name, emitting MODULO and then
+ * rescanning what follows, and if the parser then gives a syntax error we
+ * report it as an unknown directive.
+ *
+ * However the initial version of this failed to reset the noted down apparent
+ * directive often enough, so a later syntax error could get incorrectly
+ * reported. Here the syntax error in the declaration of `c` was confusingly
+ * reported as `Error: Unknown directive '%a'`. This was found and fixed prior
+ * to 4.1.0.
+ */
+int a;
+int test2(int b = 9%a) { return b; }
+void int c;