xref: /llvm-project/clang/test/SemaObjC/attr-objc-non-lazy.m (revision 22db4824b9e03fe8c2e9217d6832b71ac23c175f)
1f7393d2aSJoe Daniels// RUN: %clang_cc1 -verify -Wno-objc-root-class  -fsyntax-only  %s
2f7393d2aSJoe Daniels
3f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class))
4f7393d2aSJoe Daniels@interface A
5f7393d2aSJoe Daniels@end
6f7393d2aSJoe Daniels@implementation A
7f7393d2aSJoe Daniels@end
8f7393d2aSJoe Daniels
9f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class)) int X; // expected-error {{'objc_nonlazy_class' attribute only applies to Objective-C interfaces}}
10f7393d2aSJoe Daniels
11f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class()))
12f7393d2aSJoe Daniels@interface B
13f7393d2aSJoe Daniels@end
14f7393d2aSJoe Daniels@implementation B
15f7393d2aSJoe Daniels@end
16f7393d2aSJoe Daniels
17f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class("foo"))) // expected-error{{'objc_nonlazy_class' attribute takes no arguments}}
18f7393d2aSJoe Daniels@interface C
19f7393d2aSJoe Daniels@end
20f7393d2aSJoe Daniels@implementation C
21f7393d2aSJoe Daniels@end
22f7393d2aSJoe Daniels
23f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class)) // expected-error {{'objc_nonlazy_class' attribute only applies to Objective-C interfaces}}
24f7393d2aSJoe Daniels@protocol B
25f7393d2aSJoe Daniels@end
26f7393d2aSJoe Daniels
27f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class)) // expected-error {{'objc_nonlazy_class' attribute only applies to Objective-C interfaces}}
28*22db4824SAaron Ballmanvoid foo(void);
29f7393d2aSJoe Daniels
30f7393d2aSJoe Daniels@interface E
31f7393d2aSJoe Daniels@end
321138d8c8SErik Pilkington
33f7393d2aSJoe Daniels__attribute__((objc_nonlazy_class))
34c5a05834SErik Pilkington@implementation E
35f7393d2aSJoe Daniels@end
361138d8c8SErik Pilkington
371138d8c8SErik Pilkington__attribute__((objc_nonlazy_class))
381138d8c8SErik Pilkington@implementation E (MyCat)
391138d8c8SErik Pilkington@end
40