summaryrefslogtreecommitdiffstats
path: root/test/Modules/Inputs
diff options
context:
space:
mode:
Diffstat (limited to 'test/Modules/Inputs')
-rw-r--r--test/Modules/Inputs/merge-class-definition-visibility/a.h1
-rw-r--r--test/Modules/Inputs/merge-class-definition-visibility/b.h2
-rw-r--r--test/Modules/Inputs/merge-class-definition-visibility/c.h1
-rw-r--r--test/Modules/Inputs/merge-class-definition-visibility/d.h1
-rw-r--r--test/Modules/Inputs/merge-class-definition-visibility/modmap7
-rw-r--r--test/Modules/Inputs/submodules-merge-defs/defs.h30
-rw-r--r--test/Modules/Inputs/submodules-merge-defs/indirect.h1
-rw-r--r--test/Modules/Inputs/submodules-merge-defs/module.modulemap6
-rw-r--r--test/Modules/Inputs/submodules-merge-defs/use-defs-2.h2
-rw-r--r--test/Modules/Inputs/submodules-merge-defs/use-defs.h1
-rw-r--r--test/Modules/Inputs/template-default-args/a.h3
-rw-r--r--test/Modules/Inputs/template-default-args/c.h2
-rw-r--r--test/Modules/Inputs/template-default-args/module.modulemap6
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" }
+}
OpenPOWER on IntegriCloud