// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %s -o %t-rw.cpp
// 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
// rdar://11323187

typedef unsigned long NSUInteger;

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

typedef struct {
    NSUInteger _capacity;
    NSRange _ranges[0];
} _NSRangeInfo;

@interface Foo{
    @protected 
    struct _bar {
        int x:1;
        int y:1;
    } bar;
    union {
        struct {
            NSRange _range;
        } _singleRange;
        struct {
            void *  _data;
            void *_reserved;
        } _multipleRanges;
    } _internal;    
}
@end
@implementation Foo
- (void)x:(Foo *)other {
  bar.x = 0;
  bar.y = -1;
  self->_internal._singleRange._range = (( other ->bar.x) ? &( other ->_internal._singleRange._range) : ((NSRange *)(&(((_NSRangeInfo *)( other ->_internal._multipleRanges._data))->_ranges))))[0];
}
@end
@interface FooS : Foo
@end
@implementation FooS
- (void)y {

  NSUInteger asdf =  (( self ->bar.x) ? 1 : ((_NSRangeInfo *)( self ->_internal._multipleRanges._data))->_capacity ); 
}
@end
