summaryrefslogtreecommitdiff
path: root/test/Modules/Inputs
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2012-12-02 13:20:44 +0000
committerDimitry Andric <dim@FreeBSD.org>2012-12-02 13:20:44 +0000
commit13cc256e404620c1de0cbcc4e43ce1e2dbbc4898 (patch)
tree2732d02d7d51218d6eed98ac7fcfc5b8794896b5 /test/Modules/Inputs
parent657bc3d9848e3be92029b2416031340988cd0111 (diff)
Notes
Diffstat (limited to 'test/Modules/Inputs')
-rw-r--r--test/Modules/Inputs/Modified/A.h1
-rw-r--r--test/Modules/Inputs/Modified/B.h2
-rw-r--r--test/Modules/Inputs/Modified/module.map2
-rw-r--r--test/Modules/Inputs/Module.framework/Headers/Module.h2
-rw-r--r--test/Modules/Inputs/NoUmbrella.framework/module.map5
-rw-r--r--test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h2
-rw-r--r--test/Modules/Inputs/lookup_right.hpp1
-rw-r--r--test/Modules/Inputs/macros.h9
-rw-r--r--test/Modules/Inputs/macros_left.h14
-rw-r--r--test/Modules/Inputs/macros_other.h1
-rw-r--r--test/Modules/Inputs/macros_right.h17
-rw-r--r--test/Modules/Inputs/macros_right_undef.h1
-rw-r--r--test/Modules/Inputs/macros_top.h16
-rw-r--r--test/Modules/Inputs/module.map30
-rw-r--r--test/Modules/Inputs/normal-module-map/nested_umbrella/1.h1
-rw-r--r--test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h1
-rw-r--r--test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h2
-rw-r--r--test/Modules/Inputs/redecl-merge-bottom.h8
-rw-r--r--test/Modules/Inputs/redecl-merge-left.h8
-rw-r--r--test/Modules/Inputs/redecl-merge-right.h9
-rw-r--r--test/Modules/Inputs/redecl-merge-top.h4
-rw-r--r--test/Modules/Inputs/templates-left.h29
-rw-r--r--test/Modules/Inputs/templates-right.h27
-rw-r--r--test/Modules/Inputs/templates-top.h17
24 files changed, 179 insertions, 30 deletions
diff --git a/test/Modules/Inputs/Modified/A.h b/test/Modules/Inputs/Modified/A.h
new file mode 100644
index 000000000000..ff833c7520f0
--- /dev/null
+++ b/test/Modules/Inputs/Modified/A.h
@@ -0,0 +1 @@
+int getA();
diff --git a/test/Modules/Inputs/Modified/B.h b/test/Modules/Inputs/Modified/B.h
new file mode 100644
index 000000000000..d1c8bb5e8e15
--- /dev/null
+++ b/test/Modules/Inputs/Modified/B.h
@@ -0,0 +1,2 @@
+#include "A.h"
+int getB();
diff --git a/test/Modules/Inputs/Modified/module.map b/test/Modules/Inputs/Modified/module.map
new file mode 100644
index 000000000000..d9aed01430c4
--- /dev/null
+++ b/test/Modules/Inputs/Modified/module.map
@@ -0,0 +1,2 @@
+module A { header "A.h" }
+module B { header "B.h" }
diff --git a/test/Modules/Inputs/Module.framework/Headers/Module.h b/test/Modules/Inputs/Module.framework/Headers/Module.h
index f8949848bd4c..3d2476b20431 100644
--- a/test/Modules/Inputs/Module.framework/Headers/Module.h
+++ b/test/Modules/Inputs/Module.framework/Headers/Module.h
@@ -23,4 +23,6 @@ const char *getModuleVersion(void);
#include <Module/Sub.h>
#include <Module/Buried/Treasure.h>
+__asm("foo");
+
#endif // MODULE_H
diff --git a/test/Modules/Inputs/NoUmbrella.framework/module.map b/test/Modules/Inputs/NoUmbrella.framework/module.map
index 4a4d9702c5ff..03a8a17e68c0 100644
--- a/test/Modules/Inputs/NoUmbrella.framework/module.map
+++ b/test/Modules/Inputs/NoUmbrella.framework/module.map
@@ -2,8 +2,5 @@ framework module NoUmbrella [system] {
umbrella "Headers"
module * { }
- module unavailable {
- requires unavailable
- header "Boom.h"
- }
+ exclude header "Boom.h"
}
diff --git a/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h b/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h
new file mode 100644
index 000000000000..263979212bbd
--- /dev/null
+++ b/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h
@@ -0,0 +1,2 @@
+extern int not_a_module;
+
diff --git a/test/Modules/Inputs/lookup_right.hpp b/test/Modules/Inputs/lookup_right.hpp
index 884534747f69..b2611a1380cc 100644
--- a/test/Modules/Inputs/lookup_right.hpp
+++ b/test/Modules/Inputs/lookup_right.hpp
@@ -1 +1,2 @@
float *f0(float*);
+// expected-no-diagnostics
diff --git a/test/Modules/Inputs/macros.h b/test/Modules/Inputs/macros.h
index 4f535563ad27..27f43c0626ec 100644
--- a/test/Modules/Inputs/macros.h
+++ b/test/Modules/Inputs/macros.h
@@ -8,3 +8,12 @@
#__private_macro MODULE
int (INTEGER);
+
+#if !__building_module(macros)
+# error Can't include this header without building the 'macros' module.
+#endif
+
+#ifdef __MODULE__
+extern int __MODULE__;
+#endif
+
diff --git a/test/Modules/Inputs/macros_left.h b/test/Modules/Inputs/macros_left.h
new file mode 100644
index 000000000000..cd0569389189
--- /dev/null
+++ b/test/Modules/Inputs/macros_left.h
@@ -0,0 +1,14 @@
+@__experimental_modules_import macros_top;
+#define LEFT unsigned long
+
+#undef TOP_LEFT_UNDEF
+
+
+
+
+#define LEFT_RIGHT_IDENTICAL int
+
+#define LEFT_RIGHT_DIFFERENT2 float
+#define LEFT_RIGHT_DIFFERENT3 float
+
+#define LEFT_RIGHT_DIFFERENT float
diff --git a/test/Modules/Inputs/macros_other.h b/test/Modules/Inputs/macros_other.h
new file mode 100644
index 000000000000..ea686bfc558a
--- /dev/null
+++ b/test/Modules/Inputs/macros_other.h
@@ -0,0 +1 @@
+#define OTHER_INTEGER int
diff --git a/test/Modules/Inputs/macros_right.h b/test/Modules/Inputs/macros_right.h
new file mode 100644
index 000000000000..e16a64b50ad3
--- /dev/null
+++ b/test/Modules/Inputs/macros_right.h
@@ -0,0 +1,17 @@
+@__experimental_modules_import macros_top;
+#define RIGHT unsigned short
+
+
+
+
+
+
+
+
+#define LEFT_RIGHT_IDENTICAL int
+#define LEFT_RIGHT_DIFFERENT int
+#define LEFT_RIGHT_DIFFERENT2 int
+#define LEFT_RIGHT_DIFFERENT3 int
+
+#undef TOP_RIGHT_REDEF
+#define TOP_RIGHT_REDEF float
diff --git a/test/Modules/Inputs/macros_right_undef.h b/test/Modules/Inputs/macros_right_undef.h
new file mode 100644
index 000000000000..49473e36f0cb
--- /dev/null
+++ b/test/Modules/Inputs/macros_right_undef.h
@@ -0,0 +1 @@
+#undef TOP_RIGHT_UNDEF
diff --git a/test/Modules/Inputs/macros_top.h b/test/Modules/Inputs/macros_top.h
new file mode 100644
index 000000000000..9c3f3c071fd0
--- /dev/null
+++ b/test/Modules/Inputs/macros_top.h
@@ -0,0 +1,16 @@
+#define TOP unsigned int
+
+#define TOP_LEFT_UNDEF 1
+
+
+
+
+
+
+
+
+
+#define TOP_RIGHT_REDEF int
+
+#define TOP_RIGHT_UNDEF int
+
diff --git a/test/Modules/Inputs/module.map b/test/Modules/Inputs/module.map
index 79056cb51800..032241d6aa1e 100644
--- a/test/Modules/Inputs/module.map
+++ b/test/Modules/Inputs/module.map
@@ -18,6 +18,20 @@ module lookup_left_cxx { header "lookup_left.hpp" }
module lookup_right_cxx { header "lookup_right.hpp" }
module module_private_left { header "module_private_left.h" }
module module_private_right { header "module_private_right.h" }
+module macros_top {
+ header "macros_top.h"
+}
+module macros_left {
+ header "macros_left.h"
+ export *
+}
+module macros_right {
+ header "macros_right.h"
+ export *
+ explicit module undef {
+ header "macros_right_undef.h"
+ }
+}
module macros { header "macros.h" }
module category_top { header "category_top.h" }
module category_left {
@@ -78,6 +92,18 @@ module namespaces_right {
header "namespaces-right.h"
export *
}
+module templates_top {
+ header "templates-top.h"
+ export *
+}
+module templates_left {
+ header "templates-left.h"
+ export *
+}
+module templates_right {
+ header "templates-right.h"
+ export *
+}
module MethodPoolA {
header "MethodPoolA.h"
}
@@ -87,3 +113,7 @@ module MethodPoolB {
module import_decl {
header "import-decl.h"
}
+
+framework module * {
+ exclude NotAModule
+}
diff --git a/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h b/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h
new file mode 100644
index 000000000000..e8a3e6340d51
--- /dev/null
+++ b/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h
@@ -0,0 +1 @@
+int one;
diff --git a/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h b/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h
new file mode 100644
index 000000000000..91522aa1a962
--- /dev/null
+++ b/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h
@@ -0,0 +1 @@
+int extra_a;
diff --git a/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h b/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h
new file mode 100644
index 000000000000..506a217d1b98
--- /dev/null
+++ b/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h
@@ -0,0 +1,2 @@
+int decltype_val;
+
diff --git a/test/Modules/Inputs/redecl-merge-bottom.h b/test/Modules/Inputs/redecl-merge-bottom.h
index 40a9404abf29..cfea7dc87da5 100644
--- a/test/Modules/Inputs/redecl-merge-bottom.h
+++ b/test/Modules/Inputs/redecl-merge-bottom.h
@@ -18,11 +18,3 @@ struct S3;
void refers_to_C4(C4*);
-#ifdef __cplusplus
-template<typename T> class Vector;
-
-template<typename T> class Vector;
-
-template<typename T> class Vector;
-#endif
-
diff --git a/test/Modules/Inputs/redecl-merge-left.h b/test/Modules/Inputs/redecl-merge-left.h
index b3a7ba83c1af..5e6d2e512b00 100644
--- a/test/Modules/Inputs/redecl-merge-left.h
+++ b/test/Modules/Inputs/redecl-merge-left.h
@@ -60,7 +60,7 @@ typedef int T1;
typedef float T2;
int func0(int);
-int func1(int);
+int func1(int x) { return x; }
int func2(int);
@@ -78,12 +78,6 @@ extern float var2;
extern double var3;
-#ifdef __cplusplus
-template<typename T> class Vector;
-
-template<typename T> class Vector;
-#endif
-
// Make sure this doesn't introduce an ambiguity-creating 'id' at the
// top level.
typedef void funcptr_with_id(int id);
diff --git a/test/Modules/Inputs/redecl-merge-right.h b/test/Modules/Inputs/redecl-merge-right.h
index de7aa08cfb2b..20223083c31a 100644
--- a/test/Modules/Inputs/redecl-merge-right.h
+++ b/test/Modules/Inputs/redecl-merge-right.h
@@ -65,7 +65,7 @@ typedef double T2;
int func0(int);
int func1(int);
int func1(int);
-int func1(int);
+int func1(int x) { return x; }
int func1(int);
static int func2(int);
@@ -78,13 +78,6 @@ extern int var2;
static double var3;
-#ifdef __cplusplus
-template<typename T> class Vector {
-public:
- void push_back(const T&);
-};
-#endif
-
int ONE;
@__experimental_modules_import redecl_merge_top.Explicit;
const int one = ONE;
diff --git a/test/Modules/Inputs/redecl-merge-top.h b/test/Modules/Inputs/redecl-merge-top.h
index 519254ca2213..690e6df1c9e2 100644
--- a/test/Modules/Inputs/redecl-merge-top.h
+++ b/test/Modules/Inputs/redecl-merge-top.h
@@ -15,6 +15,4 @@ struct S1;
struct S2;
struct S2;
-#ifdef __cplusplus
-template<typename T> class Vector;
-#endif
+int func1(int);
diff --git a/test/Modules/Inputs/templates-left.h b/test/Modules/Inputs/templates-left.h
new file mode 100644
index 000000000000..57a8c85bf602
--- /dev/null
+++ b/test/Modules/Inputs/templates-left.h
@@ -0,0 +1,29 @@
+@__experimental_modules_import templates_top;
+
+template<typename T> class Vector;
+
+template<typename T> class Vector;
+
+template<typename T> class List;
+template<> class List<bool> {
+public:
+ void push_back(int);
+};
+namespace N {
+ template<typename T> class Set;
+}
+namespace N {
+ template<typename T> class Set {
+ public:
+ void insert(T);
+ };
+}
+
+template <typename T>
+void pendingInstantiationEmit(T) {}
+void triggerPendingInstantiation() {
+ pendingInstantiationEmit(12);
+ pendingInstantiationEmit(42.);
+}
+
+void redeclDefinitionEmit(){}
diff --git a/test/Modules/Inputs/templates-right.h b/test/Modules/Inputs/templates-right.h
new file mode 100644
index 000000000000..4ef4a32e8e27
--- /dev/null
+++ b/test/Modules/Inputs/templates-right.h
@@ -0,0 +1,27 @@
+@__experimental_modules_import templates_top;
+
+template<typename T> class Vector {
+public:
+ void push_back(const T&);
+};
+
+template<typename T> class List;
+template<> class List<bool> {
+public:
+ void push_back(int);
+};
+
+namespace N {
+ template<typename T> class Set {
+ public:
+ void insert(T);
+ };
+}
+
+template <typename T>
+void pendingInstantiationEmit(T) {}
+void triggerPendingInstantiationToo() {
+ pendingInstantiationEmit(12);
+}
+
+void redeclDefinitionEmit(){}
diff --git a/test/Modules/Inputs/templates-top.h b/test/Modules/Inputs/templates-top.h
new file mode 100644
index 000000000000..5985ee8820d6
--- /dev/null
+++ b/test/Modules/Inputs/templates-top.h
@@ -0,0 +1,17 @@
+template<typename T> class Vector;
+
+template<typename T> class List {
+public:
+ void push_back(T);
+};
+
+namespace A {
+ class Y {
+ template <typename T> friend class WhereAmI;
+ };
+}
+
+template <typename T> class A::WhereAmI {
+public:
+ static void func() {}
+};