diff options
| author | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
|---|---|---|
| committer | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-09-24 09:58:17 +1000 | 
| commit | 222e2a7620e6520ffaf4fc4e69d79c18da31542e (patch) | |
| tree | 7bfbc05bfa3b41c8f9d2e56d53a0bc3e310df239 /clang/test/Rewriter/protocol-rewrite-1.m | |
| parent | 3d206f03985b50beacae843d880bccdc91a9f424 (diff) | |
Add the clang library to the repo (with some of my changes, too).
Diffstat (limited to 'clang/test/Rewriter/protocol-rewrite-1.m')
| -rw-r--r-- | clang/test/Rewriter/protocol-rewrite-1.m | 48 | 
1 files changed, 48 insertions, 0 deletions
diff --git a/clang/test/Rewriter/protocol-rewrite-1.m b/clang/test/Rewriter/protocol-rewrite-1.m new file mode 100644 index 0000000..687a259 --- /dev/null +++ b/clang/test/Rewriter/protocol-rewrite-1.m @@ -0,0 +1,48 @@ +// RUN: %clang_cc1 -rewrite-objc -fobjc-fragile-abi  %s -o - + +typedef struct MyWidget { +  int a; +} MyWidget; + +MyWidget gWidget = { 17 }; + +@protocol MyProto +- (MyWidget *)widget; +@end + +@interface Foo  +@end + +@interface Bar: Foo <MyProto> +@end + +@interface Container  ++ (MyWidget *)elementForView:(Foo *)view; +@end + +@implementation Foo +@end + +@implementation Bar +- (MyWidget *)widget { +  return &gWidget; +} +@end + +@implementation Container ++ (MyWidget *)elementForView:(Foo *)view +{ +  MyWidget *widget = (void*)0; +  if (@protocol(MyProto)) { +    widget = [(id <MyProto>)view widget]; +  } +  return widget; +} +@end + +int main(void) { +  id view; +  MyWidget *w = [Container elementForView: view]; + +  return 0; +}  | 
