| // RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10 -fblocks -fobjc-nonfragile-abi -verify %s |
| // RUN: %clang_cc1 -x objective-c++ -fsyntax-only -triple x86_64-apple-darwin10 -fblocks -fobjc-nonfragile-abi -verify %s |
| // rdar://9154582 |
| |
| @interface Blocky @end |
| |
| @implementation Blocky { |
| int _a; |
| } |
| - (void)doAThing { |
| ^{ |
| char self; // expected-note {{declared here}} |
| _a; // expected-error {{instance variable '_a' cannot be accessed because 'self' has been redeclared}} |
| }(); |
| } |
| |
| @end |
| |
| |
| // rdar://9284603 |
| @interface ShadowSelf |
| { |
| int _anIvar; |
| } |
| @end |
| |
| @interface C { |
| int _cIvar; |
| } |
| @end |
| |
| @implementation ShadowSelf |
| - (void)doSomething { |
| __typeof(self) newSelf = self; |
| { |
| __typeof(self) self = newSelf; |
| (void)_anIvar; |
| } |
| { |
| C* self; // expected-note {{declared here}} |
| (void) _anIvar; // expected-error {{instance variable '_anIvar' cannot be accessed because 'self' has been redeclared}} |
| } |
| } |
| - (void)doAThing { |
| ^{ |
| id self; // expected-note {{declared here}} |
| (void)_anIvar; // expected-error {{instance variable '_anIvar' cannot be accessed because 'self' has been redeclared}} |
| }(); |
| } |
| @end |
| |