diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-01-27 01:47:08 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-01-27 01:47:08 +0000 |
commit | 404cddec1b415a16553b1e4240021d7d0c61a98c (patch) | |
tree | ba6c4fac8e0c64e1b52e4a8f08f7ec371dd9d27d /clang/test/Modules/objc-categories.m | |
parent | 7ba81830ff717736940a48a53508eb3c7e90b32e (diff) | |
download | bcm5719-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.m | 13 |
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]; +} |