summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/test/Modules/Inputs/anon-redecl/a.h2
-rw-r--r--clang/test/Modules/Inputs/anon-redecl/b.h2
-rw-r--r--clang/test/Modules/Inputs/anon-redecl/c1.h2
-rw-r--r--clang/test/Modules/Inputs/anon-redecl/c2.h2
-rw-r--r--clang/test/Modules/Inputs/anon-redecl/module.modulemap6
-rw-r--r--clang/test/Modules/Inputs/hidden-names/hidden.h3
-rw-r--r--clang/test/Modules/Inputs/hidden-names/module.modulemap4
-rw-r--r--clang/test/Modules/Inputs/hidden-names/visible.h2
-rw-r--r--clang/test/Modules/Inputs/merge-function-defs/a.h4
-rw-r--r--clang/test/Modules/Inputs/merge-function-defs/b.h0
-rw-r--r--clang/test/Modules/Inputs/merge-function-defs/map4
-rw-r--r--clang/test/Modules/anon-redecl.cpp15
-rw-r--r--clang/test/Modules/hidden-names.cpp13
-rw-r--r--clang/test/Modules/merge-function-defs.cpp11
14 files changed, 70 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/anon-redecl/a.h b/clang/test/Modules/Inputs/anon-redecl/a.h
new file mode 100644
index 00000000000..1b23e724160
--- /dev/null
+++ b/clang/test/Modules/Inputs/anon-redecl/a.h
@@ -0,0 +1,2 @@
+struct X { union { int n; }; };
+inline int a(X x) { return x.n; }
diff --git a/clang/test/Modules/Inputs/anon-redecl/b.h b/clang/test/Modules/Inputs/anon-redecl/b.h
new file mode 100644
index 00000000000..23ea804a245
--- /dev/null
+++ b/clang/test/Modules/Inputs/anon-redecl/b.h
@@ -0,0 +1,2 @@
+struct X { union { int n; }; };
+inline int b(X x) { return x.n; }
diff --git a/clang/test/Modules/Inputs/anon-redecl/c1.h b/clang/test/Modules/Inputs/anon-redecl/c1.h
new file mode 100644
index 00000000000..600af314ec3
--- /dev/null
+++ b/clang/test/Modules/Inputs/anon-redecl/c1.h
@@ -0,0 +1,2 @@
+#include "a.h"
+#include "b.h"
diff --git a/clang/test/Modules/Inputs/anon-redecl/c2.h b/clang/test/Modules/Inputs/anon-redecl/c2.h
new file mode 100644
index 00000000000..2e99b27194c
--- /dev/null
+++ b/clang/test/Modules/Inputs/anon-redecl/c2.h
@@ -0,0 +1,2 @@
+struct X { union { int n; }; };
+inline int c(X x) { return x.n; }
diff --git a/clang/test/Modules/Inputs/anon-redecl/module.modulemap b/clang/test/Modules/Inputs/anon-redecl/module.modulemap
new file mode 100644
index 00000000000..49678452e0c
--- /dev/null
+++ b/clang/test/Modules/Inputs/anon-redecl/module.modulemap
@@ -0,0 +1,6 @@
+module a { header "a.h" }
+module b { header "b.h" }
+module c {
+ module c1 { header "c1.h" }
+ module c2 { header "c2.h" }
+}
diff --git a/clang/test/Modules/Inputs/hidden-names/hidden.h b/clang/test/Modules/Inputs/hidden-names/hidden.h
new file mode 100644
index 00000000000..e5c2f551c52
--- /dev/null
+++ b/clang/test/Modules/Inputs/hidden-names/hidden.h
@@ -0,0 +1,3 @@
+namespace NS {
+ struct X {};
+}
diff --git a/clang/test/Modules/Inputs/hidden-names/module.modulemap b/clang/test/Modules/Inputs/hidden-names/module.modulemap
new file mode 100644
index 00000000000..1471f589c66
--- /dev/null
+++ b/clang/test/Modules/Inputs/hidden-names/module.modulemap
@@ -0,0 +1,4 @@
+module hidden {
+ header "visible.h"
+ explicit module sub { header "hidden.h" }
+}
diff --git a/clang/test/Modules/Inputs/hidden-names/visible.h b/clang/test/Modules/Inputs/hidden-names/visible.h
new file mode 100644
index 00000000000..3dfc9c715cd
--- /dev/null
+++ b/clang/test/Modules/Inputs/hidden-names/visible.h
@@ -0,0 +1,2 @@
+// hidden-names/visible.h
+namespace NS {}
diff --git a/clang/test/Modules/Inputs/merge-function-defs/a.h b/clang/test/Modules/Inputs/merge-function-defs/a.h
new file mode 100644
index 00000000000..7fc0e52c410
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-function-defs/a.h
@@ -0,0 +1,4 @@
+struct X {
+ virtual void f();
+};
+inline void X::f() {}
diff --git a/clang/test/Modules/Inputs/merge-function-defs/b.h b/clang/test/Modules/Inputs/merge-function-defs/b.h
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-function-defs/b.h
diff --git a/clang/test/Modules/Inputs/merge-function-defs/map b/clang/test/Modules/Inputs/merge-function-defs/map
new file mode 100644
index 00000000000..f84c7ddfd5a
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-function-defs/map
@@ -0,0 +1,4 @@
+module m {
+ module a { header "a.h" }
+ module b { header "b.h" }
+}
diff --git a/clang/test/Modules/anon-redecl.cpp b/clang/test/Modules/anon-redecl.cpp
new file mode 100644
index 00000000000..c3c5c9e527e
--- /dev/null
+++ b/clang/test/Modules/anon-redecl.cpp
@@ -0,0 +1,15 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fmodules-local-submodule-visibility \
+// RUN: -fmodule-map-file=%S/Inputs/anon-redecl/module.modulemap \
+// RUN: -I%S/Inputs/anon-redecl \
+// RUN: -verify -std=c++11 %s
+
+#include "a.h"
+#include "b.h"
+#include "c1.h"
+#include "c2.h"
+
+// expected-no-diagnostics
+int x = a({});
+int y = b({});
+int z = c({});
diff --git a/clang/test/Modules/hidden-names.cpp b/clang/test/Modules/hidden-names.cpp
new file mode 100644
index 00000000000..ba945a1d3c8
--- /dev/null
+++ b/clang/test/Modules/hidden-names.cpp
@@ -0,0 +1,13 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs/hidden-names %s -verify
+// expected-no-diagnostics
+
+#include "visible.h"
+
+using namespace NS;
+
+namespace {
+ struct X { void f(); };
+}
+
+void X::f() {}
diff --git a/clang/test/Modules/merge-function-defs.cpp b/clang/test/Modules/merge-function-defs.cpp
new file mode 100644
index 00000000000..2f08f523c3a
--- /dev/null
+++ b/clang/test/Modules/merge-function-defs.cpp
@@ -0,0 +1,11 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -I%S/Inputs/merge-function-defs -fmodules -fmodule-map-file=%S/Inputs/merge-function-defs/map -fmodules-cache-path=%t %s -emit-llvm-only
+
+#include "b.h"
+
+struct X {
+ virtual void f();
+};
+inline void X::f() {}
+
+X x;
OpenPOWER on IntegriCloud