| /* APPLE LOCAL file radar 5777307 */ |
| /* This program tests that when a property is @optional, with @synthesize, we still synthesize |
| setter/getters. Program should compile and run with no errors. */ |
| /* { dg-options "-mmacosx-version-min=10.5 -framework Foundation" } */ |
| /* { dg-do run { target *-*-darwin* } } */ |
| /* APPLE LOCAL ARM not available on arm-darwin targets */ |
| /* { dg-skip-if "" { arm*-*-darwin* } { "*" } { "" } } */ |
| |
| #import <Cocoa/Cocoa.h> |
| |
| |
| @interface BaseClass : NSObject { |
| id _delegate; |
| } |
| @end |
| |
| @protocol MyProtocol<NSObject> |
| @optional |
| @property(assign) id delegate; |
| @end |
| |
| @interface SubClass : BaseClass <MyProtocol> { |
| |
| id _Subdelegate; |
| } |
| |
| @end |
| |
| @implementation BaseClass @end |
| |
| @implementation SubClass |
| @synthesize delegate = _Subdelegate; |
| @end |
| |
| int main (int argc, const char * argv[]) { |
| NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; |
| |
| id<MyProtocol> sc = [SubClass new]; |
| id o = [NSObject new]; |
| |
| [sc setDelegate:o]; |
| |
| [pool drain]; |
| return 0; |
| } |
| |