aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/preprocessor/directive-within-macro.c
diff options
context:
space:
mode:
Diffstat (limited to 'validation/preprocessor/directive-within-macro.c')
-rw-r--r--validation/preprocessor/directive-within-macro.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/validation/preprocessor/directive-within-macro.c b/validation/preprocessor/directive-within-macro.c
new file mode 100644
index 00000000..5269d4a7
--- /dev/null
+++ b/validation/preprocessor/directive-within-macro.c
@@ -0,0 +1,40 @@
+#define f(x) x
+
+f(1
+#if 1 // OK
+ a
+#elif 2 // OK
+ b
+#else // OK
+ c
+#endif // OK
+#ifdef f // OK
+ d
+#endif // OK
+#ifndef f // OK
+ e
+#endif // OK
+ 3)
+
+f(1
+#define x y // KO
+ 3)
+
+/*
+ * check-name: directive-within-macro
+ * check-command: sparse -E $file
+ *
+ * check-output-start
+
+1
+a
+d
+3
+1
+3
+ * check-output-end
+ *
+ * check-error-start
+preprocessor/directive-within-macro.c:20:1: warning: directive in macro's argument list
+ * check-error-end
+ */