xref: /aosp_15_r20/external/clang/test/SemaObjC/warn-explicit-call-initialize.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1  -fsyntax-only  -triple x86_64-apple-darwin10 -verify %s
2*67e74705SXin Li// rdar://16628028
3*67e74705SXin Li
4*67e74705SXin Li@interface NSObject
5*67e74705SXin Li+ (void)initialize; // expected-note 2 {{method 'initialize' declared here}}
6*67e74705SXin Li@end
7*67e74705SXin Li
8*67e74705SXin Li@interface I : NSObject
9*67e74705SXin Li+ (void)initialize; // expected-note {{method 'initialize' declared here}}
10*67e74705SXin Li+ (void)SomeRandomMethod;
11*67e74705SXin Li@end
12*67e74705SXin Li
13*67e74705SXin Li@implementation I
14*67e74705SXin Li- (void) Meth {
15*67e74705SXin Li  [I initialize];     // expected-warning {{explicit call to +initialize results in duplicate call to +initialize}}
16*67e74705SXin Li  [NSObject initialize]; // expected-warning {{explicit call to +initialize results in duplicate call to +initialize}}
17*67e74705SXin Li}
18*67e74705SXin Li+ (void)initialize {
19*67e74705SXin Li  [super initialize];
20*67e74705SXin Li}
21*67e74705SXin Li+ (void)SomeRandomMethod { // expected-note {{method 'SomeRandomMethod' declared here}}
22*67e74705SXin Li  [super initialize]; // expected-warning {{explicit call to [super initialize] should only be in implementation of +initialize}}
23*67e74705SXin Li}
24*67e74705SXin Li@end
25*67e74705SXin Li
26