diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-19 19:10:40 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-19 19:10:40 +0000 |
commit | 26380d493b5c73cb4df2ae29ff60a8e90d2fba23 (patch) | |
tree | a832027400840e94a3e81dd187a60d6e11043a2c | |
parent | c334960f16fc6b3fb7ea9c3a1ccfbf5e547295c9 (diff) | |
download | bcm5719-llvm-26380d493b5c73cb4df2ae29ff60a8e90d2fba23.tar.gz bcm5719-llvm-26380d493b5c73cb4df2ae29ff60a8e90d2fba23.zip |
More tests for Objective-C-related name lookup weirdness. Yes, it's
weird; yes, it's what GCC does. Almost.
llvm-svn: 101803
-rw-r--r-- | clang/test/SemaObjC/ivar-lookup.m | 19 | ||||
-rw-r--r-- | clang/test/SemaObjCXX/ivar-lookup.mm | 18 |
2 files changed, 37 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/ivar-lookup.m b/clang/test/SemaObjC/ivar-lookup.m index 644b3b638c9..06e47116f73 100644 --- a/clang/test/SemaObjC/ivar-lookup.m +++ b/clang/test/SemaObjC/ivar-lookup.m @@ -16,3 +16,22 @@ extern struct foo x; } @end + +@interface Ivar +- (float*)method; +@end + +@interface A { + A *Ivar; +} +- (int*)method; +@end + +@implementation A +- (int*)method { + int *ip = [Ivar method]; // expected-warning{{warning: incompatible pointer types initializing 'int *' with an expression of type 'float *'}} + // Note that there is no warning in Objective-C++ + return 0; +} +@end + diff --git a/clang/test/SemaObjCXX/ivar-lookup.mm b/clang/test/SemaObjCXX/ivar-lookup.mm new file mode 100644 index 00000000000..bb26f48f13d --- /dev/null +++ b/clang/test/SemaObjCXX/ivar-lookup.mm @@ -0,0 +1,18 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s +@interface Ivar +- (float*)method; +@end + +@interface A { + A *Ivar; +} +- (int*)method; +@end + +@implementation A +- (int*)method { + int *ip = [Ivar method]; // Okay; calls A's method on the instance variable Ivar. + // Note that Objective-C calls Ivar's method. + return 0; +} +@end |