[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang / test / SemaObjC / warn-deprecated-implementations.m
blob92c83617f4ea16d04b72439092326d834e7c4a0c
1 // RUN: %clang_cc1 -triple=x86_64-apple-macos10.10 -fsyntax-only -Wdeprecated-implementations -verify -Wno-objc-root-class %s
3 @protocol P
4 - (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
6 - (void) unavailable __attribute__((__unavailable__)); // expected-note {{method 'unavailable' declared here}}
7 @end
9 @interface A <P>
10 + (void)F __attribute__((deprecated));
11 @end
13 @interface A()
14 - (void) E __attribute__((deprecated));
15 @end
17 @implementation A
18 + (void)F { }   // No warning, implementing its own deprecated method
19 - (void) D {} //  expected-warning {{implementing deprecated method}}
20 - (void) E {} // No warning, implementing deprecated method in its class extension.
22 - (void) unavailable { } // expected-warning {{implementing unavailable metho}}
23 @end
25 @interface A(CAT)
26 - (void) G __attribute__((deprecated)); 
27 @end
29 @implementation A(CAT)
30 - (void) G {}   // No warning, implementing its own deprecated method
31 @end
33 __attribute__((deprecated)) // expected-note {{'CL' has been explicitly marked deprecated here}}
34 @interface CL // expected-note 2 {{class declared here}} 
35 @end
37 @implementation CL // expected-warning {{implementing deprecated class}}
38 @end
40 @implementation CL (SomeCategory) // expected-warning {{implementing deprecated category}}
41 @end
43 @interface CL_SUB : CL // expected-warning {{'CL' is deprecated}}
44 @end
46 @interface BASE
47 - (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
49 + (void) unavailable __attribute__((availability(macos, unavailable))); // expected-note {{method 'unavailable' declared here}}
50 @end
52 @interface SUB : BASE
53 @end
55 @implementation SUB
56 - (void) B {} // expected-warning {{implementing deprecated method}}
57 + (void) unavailable { } // expected-warning {{implementing unavailable method}}
58 @end
60 @interface Test
61 @end
63 @interface Test()
64 - (id)initSpecialInPrivateHeader __attribute__((deprecated));
65 @end
67 @implementation Test
68 - (id)initSpecialInPrivateHeader {
69   return (void *)0;
71 @end
73 __attribute__((deprecated))
74 @interface Test(DeprecatedCategory) // expected-note {{category declared here}}
75 @end
77 @implementation Test(DeprecatedCategory) // expected-warning {{implementing deprecated category}}
78 @end