summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Modules')
-rw-r--r--clang/test/Modules/Inputs/module.map4
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h4
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-bottom.h5
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-left.h8
-rw-r--r--clang/test/Modules/redecl-merge2.m8
5 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/module.map b/clang/test/Modules/Inputs/module.map
index 2e6ef088d4f..eeb8d158e5f 100644
--- a/clang/test/Modules/Inputs/module.map
+++ b/clang/test/Modules/Inputs/module.map
@@ -86,6 +86,10 @@ module redecl_merge_right {
export *
}
module redecl_merge_bottom {
+ explicit module prefix {
+ header "redecl-merge-bottom-prefix.h"
+ }
+
header "redecl-merge-bottom.h"
export *
}
diff --git a/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h b/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h
new file mode 100644
index 00000000000..6501e1b65b7
--- /dev/null
+++ b/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h
@@ -0,0 +1,4 @@
+// A class that is declared in the 'bottom' module, then loaded from
+// one of the modules it depends on. It needs to be visible when this
+// module is loaded.
+@class DeclaredThenLoaded;
diff --git a/clang/test/Modules/Inputs/redecl-merge-bottom.h b/clang/test/Modules/Inputs/redecl-merge-bottom.h
index 28ea20c55de..b8fb1794afa 100644
--- a/clang/test/Modules/Inputs/redecl-merge-bottom.h
+++ b/clang/test/Modules/Inputs/redecl-merge-bottom.h
@@ -18,3 +18,8 @@ struct S3;
void refers_to_C4(C4*);
+@interface UnrelatedToDeclaredThenLoaded
+- declaredThenLoadedMethod;
+@end
+
+@class DeclaredThenLoaded;
diff --git a/clang/test/Modules/Inputs/redecl-merge-left.h b/clang/test/Modules/Inputs/redecl-merge-left.h
index 973d594a304..cf07165a26a 100644
--- a/clang/test/Modules/Inputs/redecl-merge-left.h
+++ b/clang/test/Modules/Inputs/redecl-merge-left.h
@@ -82,3 +82,11 @@ extern double var3;
// top level.
typedef void funcptr_with_id(int id);
+// A class that is declared in the 'bottom' module, then loaded from
+// one of the modules it depends on.
+@interface DeclaredThenLoaded
+- declaredThenLoadedMethod;
+@end
+
+@class DeclaredThenLoaded;
+
diff --git a/clang/test/Modules/redecl-merge2.m b/clang/test/Modules/redecl-merge2.m
new file mode 100644
index 00000000000..3431ecc90b3
--- /dev/null
+++ b/clang/test/Modules/redecl-merge2.m
@@ -0,0 +1,8 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify -Wno-objc-root-class
+// expected-no-diagnostics
+
+@import redecl_merge_bottom.prefix;
+
+DeclaredThenLoaded *dtl;
+
OpenPOWER on IntegriCloud