diff options
Diffstat (limited to 'test/Modules/Inputs')
13 files changed, 61 insertions, 2 deletions
diff --git a/test/Modules/Inputs/merge-class-definition-visibility/a.h b/test/Modules/Inputs/merge-class-definition-visibility/a.h new file mode 100644 index 0000000..4c5cd94 --- /dev/null +++ b/test/Modules/Inputs/merge-class-definition-visibility/a.h @@ -0,0 +1 @@ +struct A {}; diff --git a/test/Modules/Inputs/merge-class-definition-visibility/b.h b/test/Modules/Inputs/merge-class-definition-visibility/b.h new file mode 100644 index 0000000..2b8f5f8 --- /dev/null +++ b/test/Modules/Inputs/merge-class-definition-visibility/b.h @@ -0,0 +1,2 @@ +// Include definition of A into the same module as c.h +#include "a.h" diff --git a/test/Modules/Inputs/merge-class-definition-visibility/c.h b/test/Modules/Inputs/merge-class-definition-visibility/c.h new file mode 100644 index 0000000..27f503c --- /dev/null +++ b/test/Modules/Inputs/merge-class-definition-visibility/c.h @@ -0,0 +1 @@ +struct A; diff --git a/test/Modules/Inputs/merge-class-definition-visibility/d.h b/test/Modules/Inputs/merge-class-definition-visibility/d.h new file mode 100644 index 0000000..2243de1 --- /dev/null +++ b/test/Modules/Inputs/merge-class-definition-visibility/d.h @@ -0,0 +1 @@ +#include "a.h" diff --git a/test/Modules/Inputs/merge-class-definition-visibility/modmap b/test/Modules/Inputs/merge-class-definition-visibility/modmap new file mode 100644 index 0000000..7d988fb --- /dev/null +++ b/test/Modules/Inputs/merge-class-definition-visibility/modmap @@ -0,0 +1,7 @@ +module Def1 { + module B { header "b.h" } + module C { header "c.h" } +} +module Def2 { + header "d.h" +} diff --git a/test/Modules/Inputs/submodules-merge-defs/defs.h b/test/Modules/Inputs/submodules-merge-defs/defs.h index 68b57a4..247b05c 100644 --- a/test/Modules/Inputs/submodules-merge-defs/defs.h +++ b/test/Modules/Inputs/submodules-merge-defs/defs.h @@ -31,7 +31,7 @@ template<typename T> struct F { template<typename T> int F<T>::f() { return 0; } template<typename T> template<typename U> int F<T>::g() { return 0; } template<typename T> int F<T>::n = 0; -template<> template<typename U> int F<char>::g() { return 0; } +//template<> template<typename U> int F<char>::g() { return 0; } // FIXME: Re-enable this once we support merging member specializations. template<> struct F<void> { int h(); }; inline int F<void>::h() { return 0; } template<typename T> struct F<T *> { int i(); }; @@ -46,3 +46,31 @@ namespace G { template<typename T = int, int N = 3, template<typename> class K = F> int H(int a = 1); template<typename T = int, int N = 3, template<typename> class K = F> using I = decltype(H<T, N, K>()); +template<typename T = int, int N = 3, template<typename> class K = F> struct J {}; + +namespace NS { + struct A {}; + template<typename T> struct B : A {}; + template<typename T> struct B<T*> : B<char> {}; + template<> struct B<int> : B<int*> {}; + inline void f() {} +} + +namespace StaticInline { + struct X {}; + static inline void f(X); + static inline void g(X x) { f(x); } +} + +namespace FriendDefArg { + template<typename = int> struct A; + template<int = 0> struct B; + template<template<typename> class = A> struct C; + template<typename = int, int = 0, template<typename> class = A> struct D {}; + template<typename U> struct Y { + template<typename> friend struct A; + template<int> friend struct B; + template<template<typename> class> friend struct C; + template<typename, int, template<typename> class> friend struct D; + }; +} diff --git a/test/Modules/Inputs/submodules-merge-defs/indirect.h b/test/Modules/Inputs/submodules-merge-defs/indirect.h new file mode 100644 index 0000000..28baa01 --- /dev/null +++ b/test/Modules/Inputs/submodules-merge-defs/indirect.h @@ -0,0 +1 @@ +#include "merged-defs.h" diff --git a/test/Modules/Inputs/submodules-merge-defs/module.modulemap b/test/Modules/Inputs/submodules-merge-defs/module.modulemap index 82abdb0..3b5493e 100644 --- a/test/Modules/Inputs/submodules-merge-defs/module.modulemap +++ b/test/Modules/Inputs/submodules-merge-defs/module.modulemap @@ -2,6 +2,7 @@ module "stuff" { textual header "defs.h" module "empty" { header "empty.h" } module "use" { header "use-defs.h" } + module "use-2" { requires use_defs_twice header "use-defs-2.h" } } module "redef" { @@ -14,3 +15,8 @@ module "merged-defs" { header "merged-defs.h" use "stuff" } + +module "indirect" { + header "indirect.h" + use "merged-defs" +} diff --git a/test/Modules/Inputs/submodules-merge-defs/use-defs-2.h b/test/Modules/Inputs/submodules-merge-defs/use-defs-2.h new file mode 100644 index 0000000..a78f08a --- /dev/null +++ b/test/Modules/Inputs/submodules-merge-defs/use-defs-2.h @@ -0,0 +1,2 @@ +// use-defs-2.h +#include "defs.h" diff --git a/test/Modules/Inputs/submodules-merge-defs/use-defs.h b/test/Modules/Inputs/submodules-merge-defs/use-defs.h index 31c69c6..2e88376 100644 --- a/test/Modules/Inputs/submodules-merge-defs/use-defs.h +++ b/test/Modules/Inputs/submodules-merge-defs/use-defs.h @@ -1 +1,2 @@ +// use-defs.h #include "defs.h" diff --git a/test/Modules/Inputs/template-default-args/a.h b/test/Modules/Inputs/template-default-args/a.h index 1ef1ea5..be760fe 100644 --- a/test/Modules/Inputs/template-default-args/a.h +++ b/test/Modules/Inputs/template-default-args/a.h @@ -2,3 +2,6 @@ template<typename T = int> struct A {}; template<typename T> struct B {}; template<typename T> struct C; template<typename T> struct D; +template<typename T> struct E; +template<typename T = int> struct G; +template<typename T = int> struct H; diff --git a/test/Modules/Inputs/template-default-args/c.h b/test/Modules/Inputs/template-default-args/c.h new file mode 100644 index 0000000..2946013 --- /dev/null +++ b/test/Modules/Inputs/template-default-args/c.h @@ -0,0 +1,2 @@ +template<typename T = int> struct F; +template<typename T, typename U> struct I; diff --git a/test/Modules/Inputs/template-default-args/module.modulemap b/test/Modules/Inputs/template-default-args/module.modulemap index 6182e6b..d54dfc3 100644 --- a/test/Modules/Inputs/template-default-args/module.modulemap +++ b/test/Modules/Inputs/template-default-args/module.modulemap @@ -1 +1,5 @@ -module X { module A { header "a.h" } module B { header "b.h" } } +module X { + module A { header "a.h" } + module B { header "b.h" } + module C { header "c.h" } +} |