summaryrefslogtreecommitdiff
path: root/Examples/test-suite/errors/cpp_macro_locator.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/errors/cpp_macro_locator.i')
-rw-r--r--Examples/test-suite/errors/cpp_macro_locator.i103
1 files changed, 103 insertions, 0 deletions
diff --git a/Examples/test-suite/errors/cpp_macro_locator.i b/Examples/test-suite/errors/cpp_macro_locator.i
new file mode 100644
index 000000000..bd441a121
--- /dev/null
+++ b/Examples/test-suite/errors/cpp_macro_locator.i
@@ -0,0 +1,103 @@
+%module xxx
+
+// Test the SWIG preprocessor locator effects on reporting line numbers in warnings when processing SWIG (multiline) macros
+
+// The ignored overloaded methods warnings should have the correct line number reporting
+// {} blocks are tested, where the preprocessor expands the macros
+
+%define CLASSMACRO(KLASS)
+class KLASS
+{
+public:
+ KLASS() {}
+ void methodX(int *) {}
+ void methodX(const int *) {}
+};
+%enddef
+
+%{
+#define CLASSMACRO(KLASS) \
+class KLASS \
+{ \
+public: \
+ KLASS() {} \
+ void methodX(int *) {} \
+ void methodX(const int *) {} \
+};
+%}
+
+%{
+#define VARIABLEMACRO(NAME) double NAME;
+struct Outer {
+ struct Inner {
+ VARIABLEMACRO(MyInnerVar)
+ };
+};
+void overload1(int *) {}
+void overload1(const int *) {}
+void overload2(int *) {}
+void overload2(const int *) {}
+void overload3(int *) {}
+void overload3(const int *) {}
+%}
+
+%define VARIABLEMACRO(NAME)
+double NAME;
+%enddef
+struct Outer {
+ struct Inner {
+ VARIABLEMACRO(MyInnerVar)
+ };
+};
+void overload1(int *) {}
+void overload1(const int *) {}
+
+%fragment("FragmentMethod", "header") {
+void fragmentMethod() {
+}
+VARIABLEMACRO(fragVar)
+}
+void overload2(int *) {}
+void overload2(const int *) {}
+
+%inline {
+CLASSMACRO(Klass1)
+}
+#warning inline warning message one
+void overload3(int *) {}
+void overload3(const int *) {}
+
+%{
+struct Classic {
+ Classic() {
+ VARIABLEMACRO(inconstructor)
+ }
+ double value;
+};
+void overload4(int *) {}
+void overload4(const int *) {}
+void overload5(int *) {}
+void overload5(const int *) {}
+%}
+
+struct Classic {
+ Classic() {
+ VARIABLEMACRO(inconstructor)
+ }
+ double value;
+};
+void overload4(int *) {}
+void overload4(const int *) {}
+
+%inline {
+void overloadinline1(int *) {}
+void overloadinline1(const int *) {}
+CLASSMACRO(Klass2)
+#warning an inline warning message 2
+void overloadinline2(int *) {}
+void overloadinline2(const int *) {}
+}
+void overload5(int *) {}
+void overload5(const int *) {}
+
+