summaryrefslogtreecommitdiff
path: root/test/Modules/macros.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Modules/macros.c')
-rw-r--r--test/Modules/macros.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/Modules/macros.c b/test/Modules/macros.c
new file mode 100644
index 0000000000000..899c19bb29c97
--- /dev/null
+++ b/test/Modules/macros.c
@@ -0,0 +1,41 @@
+// RUN: %clang_cc1 -emit-module -o %t/macros.pcm -DMODULE %s
+// RUN: %clang_cc1 -verify -fmodule-cache-path %t -fdisable-module-hash %s
+// RUN: %clang_cc1 -E -fmodule-cache-path %t -fdisable-module-hash %s | FileCheck -check-prefix CHECK-PREPROCESSED %s
+
+#if defined(MODULE)
+#define INTEGER(X) int
+#define FLOAT float
+#define DOUBLE double
+
+#__export_macro__ INTEGER
+#__export_macro__ DOUBLE
+
+int (INTEGER);
+
+#else
+
+__import_module__ macros;
+
+#ifndef INTEGER
+# error INTEGER macro should be visible
+#endif
+
+#ifdef FLOAT
+# error FLOAT macro should not be visible
+#endif
+
+#ifdef MODULE
+# error MODULE macro should not be visible
+#endif
+
+// CHECK-PREPROCESSED: double d
+double d;
+DOUBLE *dp = &d;
+
+#__export_macro__ WIBBLE // expected-error{{no macro named 'WIBBLE' to export}}
+
+void f() {
+ // CHECK-PREPROCESSED: int i = INTEGER;
+ int i = INTEGER; // the value was exported, the macro was not.
+}
+#endif