blob: 42adf86b0f4fa9ed832e8fb3d4ae9fe6965b219f [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
Fariborz Jahanian17c8caf2012-03-29 18:20:51 +000024@interface NSString @end
25@implementation NSString @end
26
Fariborz Jahanian297976d2012-03-29 17:51:09 +000027// 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
Fariborz Jahanian17c8caf2012-03-29 18:20:51 +000038// 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