diff options
author | Chris Lattner <sabre@nondot.org> | 2008-07-26 00:57:24 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-07-26 00:57:24 +0000 |
commit | 89026888ef6f80b5e271c3d08666001f998eca74 (patch) | |
tree | 4db64af10923c54338f7f15966720bbe19e51eee /clang/test/SemaObjC/conditional-expr.m | |
parent | a075e63bbca031f3d5794e888252cab265cc058c (diff) | |
download | bcm5719-llvm-89026888ef6f80b5e271c3d08666001f998eca74.tar.gz bcm5719-llvm-89026888ef6f80b5e271c3d08666001f998eca74.zip |
move all objc sema tests into a new SemaObjC directory. Next step is to
remove the objc- prefix from the tests that use it.
llvm-svn: 54084
Diffstat (limited to 'clang/test/SemaObjC/conditional-expr.m')
-rw-r--r-- | clang/test/SemaObjC/conditional-expr.m | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/conditional-expr.m b/clang/test/SemaObjC/conditional-expr.m new file mode 100644 index 00000000000..e3cd041d3a5 --- /dev/null +++ b/clang/test/SemaObjC/conditional-expr.m @@ -0,0 +1,44 @@ +// RUN: clang -fsyntax-only -verify -pedantic %s +@protocol NSObject +@end + +@protocol DTOutputStreams <NSObject> +@end + +@interface DTFilterOutputStream <DTOutputStreams> +- nextOutputStream; +@end + +@implementation DTFilterOutputStream +- (id)initWithNextOutputStream:(id <DTOutputStreams>) outputStream { + id <DTOutputStreams> nextOutputStream = [self nextOutputStream]; + self = nextOutputStream; + return nextOutputStream ? nextOutputStream : self; +} +- nextOutputStream { + return self; +} +@end + +@interface DTFilterOutputStream2 +- nextOutputStream; +@end + +@implementation DTFilterOutputStream2 // expected-warning {{incomplete implementation}} expected-warning {{method definition for 'nextOutputStream' not found}} +- (id)initWithNextOutputStream:(id <DTOutputStreams>) outputStream { + id <DTOutputStreams> nextOutputStream = [self nextOutputStream]; + // GCC warns about both of these. + self = nextOutputStream; // expected-error {{incompatible type assigning 'id<DTOutputStreams>', expected 'DTFilterOutputStream2 *'}} + return nextOutputStream ? nextOutputStream : self; // expected-error {{incompatible operand types ('id<DTOutputStreams>' and 'DTFilterOutputStream2 *')}} +} +@end + +// No @interface declaration for DTFilterOutputStream3 +@implementation DTFilterOutputStream3 // expected-warning {{cannot find interface declaration for 'DTFilterOutputStream3'}} +- (id)initWithNextOutputStream:(id <DTOutputStreams>) outputStream { + id <DTOutputStreams> nextOutputStream = [self nextOutputStream]; + // GCC warns about both of these as well (no errors). + self = nextOutputStream; // expected-error {{incompatible type assigning 'id<DTOutputStreams>', expected 'DTFilterOutputStream3 *'}} + return nextOutputStream ? nextOutputStream : self; // expected-error {{incompatible operand types ('id<DTOutputStreams>' and 'DTFilterOutputStream3 *')}} +} +@end |