1// RUN: %clang_cc1 -E %s -o %t.mm 2// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 3// rdar://11144048 4 5@class NSString; 6 7@interface NSObject { 8 Class isa; 9} 10@end 11 12@interface Sub : NSObject { 13 int subIvar; 14 NSString *nsstring; 15@private 16 id PrivateIvar; 17} 18@end 19 20@implementation Sub 21- (id) MyNSString { return subIvar ? PrivateIvar : nsstring; } 22@end 23 24@interface NSString @end 25@implementation NSString @end 26 27// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$subIvar; 28// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long OBJC_IVAR_$_Sub$PrivateIvar; 29// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$nsstring; 30// CHECK: #pragma warning(disable:4273) 31// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$subIvar 32// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$nsstring 33// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long int OBJC_IVAR_$_Sub$PrivateIvar 34// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_METACLASS_$_NSObject; 35// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_Sub 36// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_CLASS_$_NSObject; 37// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_Sub 38// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_NSString; 39// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_NSString 40// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_NSString 41