diff options
| author | Manman Ren <manman.ren@gmail.com> | 2016-10-11 21:18:20 +0000 |
|---|---|---|
| committer | Manman Ren <manman.ren@gmail.com> | 2016-10-11 21:18:20 +0000 |
| commit | a58f92f09d217ca978621ccfa630474f919345a3 (patch) | |
| tree | 33289c790b6a41901c9896b9eb363d6882b26e19 /clang/test/Modules | |
| parent | bdfc05ff93fe03edb6d6817384ecf31f723acd7a (diff) | |
| download | bcm5719-llvm-a58f92f09d217ca978621ccfa630474f919345a3.tar.gz bcm5719-llvm-a58f92f09d217ca978621ccfa630474f919345a3.zip | |
Module: for ObjectiveC, be consistent when checking hidden decls.
In MatchAllMethodDeclarations, when checking a hidden decl, be sure
to allow hidden when searching for methods.
rdar://28699972
llvm-svn: 283943
Diffstat (limited to 'clang/test/Modules')
5 files changed, 32 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/objc-hidden/FakeUnavailableObjCFramework.framework/Headers/FakeUnavailableObjCFramework.h b/clang/test/Modules/Inputs/objc-hidden/FakeUnavailableObjCFramework.framework/Headers/FakeUnavailableObjCFramework.h new file mode 100644 index 00000000000..2ae08a3e591 --- /dev/null +++ b/clang/test/Modules/Inputs/objc-hidden/FakeUnavailableObjCFramework.framework/Headers/FakeUnavailableObjCFramework.h @@ -0,0 +1,7 @@ +#include <X.h> + +__attribute__((availability(macosx,introduced=1066.0))) __attribute__((availability(ios,introduced=1066.0))) +@interface UnavailableObjCClass : NSObject +- (void)someMethod; +@end + diff --git a/clang/test/Modules/Inputs/objc-hidden/FakeUnavailableObjCFramework.framework/Modules/module.modulemap b/clang/test/Modules/Inputs/objc-hidden/FakeUnavailableObjCFramework.framework/Modules/module.modulemap new file mode 100644 index 00000000000..e99c0fa5059 --- /dev/null +++ b/clang/test/Modules/Inputs/objc-hidden/FakeUnavailableObjCFramework.framework/Modules/module.modulemap @@ -0,0 +1,5 @@ +framework module FakeUnavailableObjCFramework { + umbrella header "FakeUnavailableObjCFramework.h" + // Do not export to test hidden decls. + // export * +} diff --git a/clang/test/Modules/Inputs/objc-hidden/System/X.h b/clang/test/Modules/Inputs/objc-hidden/System/X.h new file mode 100644 index 00000000000..c86cc58a1eb --- /dev/null +++ b/clang/test/Modules/Inputs/objc-hidden/System/X.h @@ -0,0 +1,5 @@ +@protocol NSObject +@property (readonly) int hash; +@end +@interface NSObject <NSObject> +@end diff --git a/clang/test/Modules/Inputs/objc-hidden/System/module.map b/clang/test/Modules/Inputs/objc-hidden/System/module.map new file mode 100644 index 00000000000..8fe4c92a173 --- /dev/null +++ b/clang/test/Modules/Inputs/objc-hidden/System/module.map @@ -0,0 +1,4 @@ +module X { + header "X.h" + export * +} diff --git a/clang/test/Modules/objc-hidden.m b/clang/test/Modules/objc-hidden.m new file mode 100644 index 00000000000..6e40e0d7d19 --- /dev/null +++ b/clang/test/Modules/objc-hidden.m @@ -0,0 +1,11 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fsyntax-only -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs/objc-hidden/System -F %S/Inputs/objc-hidden -verify -x objective-c %s +// expected-no-diagnostics + +// Make sure we don't crash with hidden decls. +@import FakeUnavailableObjCFramework; + +@implementation UnavailableObjCClass +- (void)someMethod { } +@end + |

