diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2012-12-02 13:20:44 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2012-12-02 13:20:44 +0000 |
| commit | 13cc256e404620c1de0cbcc4e43ce1e2dbbc4898 (patch) | |
| tree | 2732d02d7d51218d6eed98ac7fcfc5b8794896b5 /test/Modules/Inputs | |
| parent | 657bc3d9848e3be92029b2416031340988cd0111 (diff) | |
Notes
Diffstat (limited to 'test/Modules/Inputs')
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() {} +}; |
