summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-12-22 19:44:59 +0000
committerDouglas Gregor <dgregor@apple.com>2011-12-22 19:44:59 +0000
commit0475cd88c95a6e87c7530f93085e5cbd66c16832 (patch)
tree3926cb397af46d772378260081f83c62b9897396 /clang/test
parent292dc080e06ca46097f300968138140c620faf55 (diff)
downloadbcm5719-llvm-0475cd88c95a6e87c7530f93085e5cbd66c16832.tar.gz
bcm5719-llvm-0475cd88c95a6e87c7530f93085e5cbd66c16832.zip
If we end up merging an Objective-C class with an existing Objective-C
class that comes from a different module file, make sure that we load all of the pending declarations for the original declaration. llvm-svn: 147168
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/Inputs/module.map4
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-bottom.h3
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-left-left.h5
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-right.h6
-rw-r--r--clang/test/Modules/redecl-merge.m8
5 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/module.map b/clang/test/Modules/Inputs/module.map
index 13a44eb6a76..640aa3c1f63 100644
--- a/clang/test/Modules/Inputs/module.map
+++ b/clang/test/Modules/Inputs/module.map
@@ -51,6 +51,10 @@ module redecl_merge_left {
header "redecl-merge-left.h"
export *
}
+module redecl_merge_left_left {
+ header "redecl-merge-left-left.h"
+ export *
+}
module redecl_merge_right {
header "redecl-merge-right.h"
export *
diff --git a/clang/test/Modules/Inputs/redecl-merge-bottom.h b/clang/test/Modules/Inputs/redecl-merge-bottom.h
index 1c59c1f2234..ce4368d08a0 100644
--- a/clang/test/Modules/Inputs/redecl-merge-bottom.h
+++ b/clang/test/Modules/Inputs/redecl-merge-bottom.h
@@ -1,4 +1,7 @@
__import_module__ redecl_merge_left;
+
+@class C4;
+@class C4;
__import_module__ redecl_merge_right;
@class B;
diff --git a/clang/test/Modules/Inputs/redecl-merge-left-left.h b/clang/test/Modules/Inputs/redecl-merge-left-left.h
new file mode 100644
index 00000000000..0d7fd6a5145
--- /dev/null
+++ b/clang/test/Modules/Inputs/redecl-merge-left-left.h
@@ -0,0 +1,5 @@
+__import_module__ redecl_merge_left;
+
+@class C4;
+void accept_a_C4(C4*);
+
diff --git a/clang/test/Modules/Inputs/redecl-merge-right.h b/clang/test/Modules/Inputs/redecl-merge-right.h
index f5e4eb8ee44..f86f1103eea 100644
--- a/clang/test/Modules/Inputs/redecl-merge-right.h
+++ b/clang/test/Modules/Inputs/redecl-merge-right.h
@@ -18,6 +18,12 @@ C2 *get_a_C2(void);
@class C3;
C3 *get_a_C3(void);
+@class C4;
+@class C4;
+@class C4;
+@class C4;
+C4 *get_a_C4(void);
+
@class Explicit;
int *explicit_func(void);
diff --git a/clang/test/Modules/redecl-merge.m b/clang/test/Modules/redecl-merge.m
index 7b06adcce43..930e8df6b87 100644
--- a/clang/test/Modules/redecl-merge.m
+++ b/clang/test/Modules/redecl-merge.m
@@ -55,6 +55,14 @@ void test_C3(C3 *c3) {
accept_a_C3(c3);
}
+C4 *global_C4;
+__import_module__ redecl_merge_left_left;
+
+void test_C4(C4 *c4) {
+ global_C4 = c4 = get_a_C4();
+ accept_a_C4(c4);
+}
+
__import_module__ redecl_merge_bottom;
@implementation B
OpenPOWER on IntegriCloud