blob: dc145b79a0bfb88c91ef098890959dbfa27fffc9 [file] [log] [blame]
Fariborz Jahanian297976d2012-03-29 17:51:09 +00001// 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// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$subIvar;
25// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long OBJC_IVAR_$_Sub$PrivateIvar;
26// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$nsstring;
27// CHECK: #pragma warning(disable:4273)
28// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$subIvar
29// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$nsstring
30// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long int OBJC_IVAR_$_Sub$PrivateIvar
31// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_METACLASS_$_NSObject;
32// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_Sub
33// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_CLASS_$_NSObject;
34// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_Sub