blob: 4bd72021443892323b8be3617ac62b5feeebce32 [file] [log] [blame]
Fariborz Jahanianb8f17ab2011-04-12 23:39:33 +00001// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10 -fblocks -fobjc-nonfragile-abi -verify %s
2// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -triple x86_64-apple-darwin10 -fblocks -fobjc-nonfragile-abi -verify %s
3// rdar://9154582
4
5@interface Blocky @end
6
7@implementation Blocky {
8 int _a;
9}
10- (void)doAThing {
11 ^{
12 char self; // expected-note {{declared here}}
13 _a; // expected-error {{instance variable '_a' cannot be accessed because 'self' has been redeclared}}
14 }();
15}
16
17@end
18
Fariborz Jahanianeefa76e2011-04-15 17:04:42 +000019
20// rdar://9284603
21@interface ShadowSelf
22{
23 int _anIvar;
24}
25@end
26
27@interface C {
28 int _cIvar;
29}
30@end
31
32@implementation ShadowSelf
33- (void)doSomething {
34 __typeof(self) newSelf = self;
35 {
36 __typeof(self) self = newSelf;
37 (void)_anIvar;
38 }
39 {
40 C* self; // expected-note {{declared here}}
41 (void) _anIvar; // expected-error {{instance variable '_anIvar' cannot be accessed because 'self' has been redeclared}}
42 }
43}
44- (void)doAThing {
45 ^{
46 id self; // expected-note {{declared here}}
47 (void)_anIvar; // expected-error {{instance variable '_anIvar' cannot be accessed because 'self' has been redeclared}}
48 }();
49}
50@end
51