summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules/objc-categories.m
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-01-27 01:47:08 +0000
committerDouglas Gregor <dgregor@apple.com>2012-01-27 01:47:08 +0000
commit404cddec1b415a16553b1e4240021d7d0c61a98c (patch)
treeba6c4fac8e0c64e1b52e4a8f08f7ec371dd9d27d /clang/test/Modules/objc-categories.m
parent7ba81830ff717736940a48a53508eb3c7e90b32e (diff)
downloadbcm5719-llvm-404cddec1b415a16553b1e4240021d7d0c61a98c.tar.gz
bcm5719-llvm-404cddec1b415a16553b1e4240021d7d0c61a98c.zip
Reimplement (de-)serialization of Objective-C categories to eliminate
the direct serialization of the linked-list structure. Instead, use a scheme similar to how we handle redeclarations, with redeclaration lists on the side. This addresses several issues: - In cases involving mixing and matching of many categories across many modules, the linked-list structure would not be consistent across different modules, and categories would get lost. - If a module is loaded after the class definition and its other categories have already been loaded, we wouldn't see any categories in the newly-loaded module. llvm-svn: 149112
Diffstat (limited to 'clang/test/Modules/objc-categories.m')
-rw-r--r--clang/test/Modules/objc-categories.m13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/Modules/objc-categories.m b/clang/test/Modules/objc-categories.m
index 2bb07aadc4c..a8f8fb3d049 100644
--- a/clang/test/Modules/objc-categories.m
+++ b/clang/test/Modules/objc-categories.m
@@ -3,11 +3,14 @@
// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_left -emit-module %S/Inputs/module.map
// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_right -emit-module %S/Inputs/module.map
// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_bottom -emit-module %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_other -emit-module %S/Inputs/module.map
// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t %s -verify
@import category_bottom;
+
+
// in category_left.h: expected-note {{previous definition}}
@interface Foo(Source)
@@ -21,7 +24,17 @@ void test(Foo *foo, LeftFoo *leftFoo) {
[foo right1];
[foo right2];
[foo top];
+ [foo top2];
+ [foo top3];
[leftFoo left];
[leftFoo bottom];
}
+
+// Load another module that also adds categories to Foo, verify that
+// we see those categories.
+@import category_other;
+
+void test_other(Foo *foo) {
+ [foo other];
+}
OpenPOWER on IntegriCloud