xref: /minix3/external/bsd/llvm/dist/clang/test/SemaObjC/self-declared-in-block.m (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10  -fblocks -verify -Wno-objc-root-class %s
2*f4a2713aSLionel Sambuc// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -triple x86_64-apple-darwin10  -fblocks -verify -Wno-objc-root-class %s
3*f4a2713aSLionel Sambuc// expected-no-diagnostics
4*f4a2713aSLionel Sambuc// rdar://9154582
5*f4a2713aSLionel Sambuc
6*f4a2713aSLionel Sambuc@interface Blocky @end
7*f4a2713aSLionel Sambuc
8*f4a2713aSLionel Sambuc@implementation Blocky {
9*f4a2713aSLionel Sambuc    int _a;
10*f4a2713aSLionel Sambuc}
11*f4a2713aSLionel Sambuc- (int)doAThing {
12*f4a2713aSLionel Sambuc    ^{
13*f4a2713aSLionel Sambuc        char self;
14*f4a2713aSLionel Sambuc        return _a;
15*f4a2713aSLionel Sambuc    }();
16*f4a2713aSLionel Sambuc    return _a;
17*f4a2713aSLionel Sambuc}
18*f4a2713aSLionel Sambuc
19*f4a2713aSLionel Sambuc@end
20*f4a2713aSLionel Sambuc
21*f4a2713aSLionel Sambuc
22*f4a2713aSLionel Sambuc// rdar://9284603
23*f4a2713aSLionel Sambuc@interface ShadowSelf
24*f4a2713aSLionel Sambuc{
25*f4a2713aSLionel Sambuc    int _anIvar;
26*f4a2713aSLionel Sambuc}
27*f4a2713aSLionel Sambuc@end
28*f4a2713aSLionel Sambuc
29*f4a2713aSLionel Sambuc@interface C {
30*f4a2713aSLionel Sambuc  int _cIvar;
31*f4a2713aSLionel Sambuc}
32*f4a2713aSLionel Sambuc@end
33*f4a2713aSLionel Sambuc
34*f4a2713aSLionel Sambuc@implementation ShadowSelf
35*f4a2713aSLionel Sambuc- (void)doSomething {
36*f4a2713aSLionel Sambuc    __typeof(self) newSelf = self;
37*f4a2713aSLionel Sambuc    {
38*f4a2713aSLionel Sambuc        __typeof(self) self = newSelf;
39*f4a2713aSLionel Sambuc        (void)_anIvar;
40*f4a2713aSLionel Sambuc    }
41*f4a2713aSLionel Sambuc    {
42*f4a2713aSLionel Sambuc      C* self;
43*f4a2713aSLionel Sambuc      (void) _anIvar;
44*f4a2713aSLionel Sambuc    }
45*f4a2713aSLionel Sambuc}
46*f4a2713aSLionel Sambuc- (void)doAThing {
47*f4a2713aSLionel Sambuc    ^{
48*f4a2713aSLionel Sambuc        id self;
49*f4a2713aSLionel Sambuc	(void)_anIvar;
50*f4a2713aSLionel Sambuc    }();
51*f4a2713aSLionel Sambuc}
52*f4a2713aSLionel Sambuc@end
53*f4a2713aSLionel Sambuc
54