summaryrefslogtreecommitdiffstats
path: root/test/Modules/Inputs/submodules-merge-defs
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-06-21 14:00:56 +0000
committerdim <dim@FreeBSD.org>2015-06-21 14:00:56 +0000
commit9dd834653b811ad20382e98a87dff824980c9916 (patch)
treea764184c2fc9486979b074250b013a0937ee64e5 /test/Modules/Inputs/submodules-merge-defs
parentbb9760db9b86e93a638ed430d0a14785f7ff9064 (diff)
downloadFreeBSD-src-9dd834653b811ad20382e98a87dff824980c9916.zip
FreeBSD-src-9dd834653b811ad20382e98a87dff824980c9916.tar.gz
Vendor import of clang trunk r240225:
https://llvm.org/svn/llvm-project/cfe/trunk@240225
Diffstat (limited to 'test/Modules/Inputs/submodules-merge-defs')
-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
5 files changed, 39 insertions, 1 deletions
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"
OpenPOWER on IntegriCloud