41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
// RUN: %clang_cc1 -E %s -o %t.mm
 | 
						|
// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
 | 
						|
// rdar://11144048
 | 
						|
 | 
						|
@class NSString;
 | 
						|
 | 
						|
@interface NSObject {
 | 
						|
    Class isa;
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
@interface Sub : NSObject {
 | 
						|
    int subIvar;
 | 
						|
    NSString *nsstring;
 | 
						|
@private
 | 
						|
    id PrivateIvar;
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
@implementation Sub 
 | 
						|
- (id) MyNSString { return subIvar ? PrivateIvar : nsstring; }
 | 
						|
@end
 | 
						|
 | 
						|
@interface NSString @end
 | 
						|
@implementation NSString @end
 | 
						|
 | 
						|
// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$subIvar;
 | 
						|
// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long OBJC_IVAR_$_Sub$PrivateIvar;
 | 
						|
// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$nsstring;
 | 
						|
// CHECK: #pragma warning(disable:4273)
 | 
						|
// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$subIvar
 | 
						|
// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$nsstring
 | 
						|
// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long int OBJC_IVAR_$_Sub$PrivateIvar
 | 
						|
// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_METACLASS_$_NSObject;
 | 
						|
// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_Sub
 | 
						|
// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_CLASS_$_NSObject;
 | 
						|
// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_Sub
 | 
						|
// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_NSString;
 | 
						|
// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_NSString
 | 
						|
// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_NSString
 |