xref: /llvm-project/clang/test/Rewriter/objc-modern-class-init-hooks.mm (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
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
4@interface Root @end
5
6@interface Super : Root
7@end
8
9@interface Sub : Super
10@end
11
12@implementation Sub @end
13
14@implementation Root @end
15
16@interface Root(Cat) @end
17
18@interface Sub(Cat) @end
19
20@implementation Root(Cat) @end
21
22@implementation Sub(Cat) @end
23
24
25// CHECK: #pragma section(".objc_inithooks$B", long, read, write)
26// CHECK: __declspec(allocate(".objc_inithooks$B")) static void *OBJC_CLASS_SETUP[] = {
27// CHECK:         (void *)&OBJC_CLASS_SETUP_$_Sub,
28// CHECK:         (void *)&OBJC_CLASS_SETUP_$_Root,
29// CHECK: };
30
31// CHECK: #pragma section(".objc_inithooks$B", long, read, write)
32// CHECK: __declspec(allocate(".objc_inithooks$B")) static void *OBJC_CATEGORY_SETUP[] = {
33// CHECK:         (void *)&OBJC_CATEGORY_SETUP_$_Root_$_Cat,
34// CHECK:         (void *)&OBJC_CATEGORY_SETUP_$_Sub_$_Cat,
35// CHECK: };
36