]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Rewriter/rewrite-modern-struct-ivar-1.mm
Fix-up EOL-styles changed by upstream.
[FreeBSD/FreeBSD.git] / test / Rewriter / rewrite-modern-struct-ivar-1.mm
1 // RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %s -o %t-rw.cpp
2 // RUN: %clang_cc1 -Werror -fsyntax-only -Wno-address-of-temporary -Wno-c++11-narrowing -std=c++11 -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
3 // rdar://11323187
4
5 typedef unsigned long NSUInteger;
6
7 typedef struct _NSRange {
8     NSUInteger location;
9     NSUInteger length;
10 } NSRange;
11
12 typedef struct {
13     NSUInteger _capacity;
14     NSRange _ranges[0];
15 } _NSRangeInfo;
16
17 @interface Foo{
18     @protected 
19     struct _bar {
20         int x:1;
21         int y:1;
22     } bar;
23     union {
24         struct {
25             NSRange _range;
26         } _singleRange;
27         struct {
28             void *  _data;
29             void *_reserved;
30         } _multipleRanges;
31     } _internal;    
32 }
33 @end
34 @implementation Foo
35 - (void)x:(Foo *)other {
36   bar.x = 0;
37   bar.y = 1;
38   self->_internal._singleRange._range = (( other ->bar.x) ? &( other ->_internal._singleRange._range) : ((NSRange *)(&(((_NSRangeInfo *)( other ->_internal._multipleRanges._data))->_ranges))))[0];
39 }
40 @end
41 @interface FooS : Foo
42 @end
43 @implementation FooS
44 - (void)y {
45
46   NSUInteger asdf =  (( self ->bar.x) ? 1 : ((_NSRangeInfo *)( self ->_internal._multipleRanges._data))->_capacity ); 
47 }
48 @end