annotate clang/test/SemaObjC/method-attributes.m @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -triple i386-unknown-unknown -verify -fsyntax-only -Wno-objc-root-class %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 @class NSString;
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 @interface A
anatofuz
parents:
diff changeset
6 -t1 __attribute__((noreturn));
anatofuz
parents:
diff changeset
7 - (NSString *)stringByAppendingFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2)));
anatofuz
parents:
diff changeset
8 -(void) m0 __attribute__((noreturn));
anatofuz
parents:
diff changeset
9 -(void) m1 __attribute__((unused));
anatofuz
parents:
diff changeset
10 -(void) m2 __attribute__((stdcall));
anatofuz
parents:
diff changeset
11 -(void) m3 __attribute__((optnone));
anatofuz
parents:
diff changeset
12 @end
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 @interface INTF
anatofuz
parents:
diff changeset
16 - (int) foo1: (int)arg1 __attribute__((deprecated));
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 - (int) foo: (int)arg1;
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 - (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable));
anatofuz
parents:
diff changeset
21 - (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self));
anatofuz
parents:
diff changeset
22 @end
anatofuz
parents:
diff changeset
23
anatofuz
parents:
diff changeset
24 @implementation INTF
anatofuz
parents:
diff changeset
25 - (int) foo: (int)arg1 __attribute__((deprecated)){
anatofuz
parents:
diff changeset
26 return 10;
anatofuz
parents:
diff changeset
27 }
anatofuz
parents:
diff changeset
28 - (int) foo1: (int)arg1 {
anatofuz
parents:
diff changeset
29 return 10;
anatofuz
parents:
diff changeset
30 }
anatofuz
parents:
diff changeset
31 - (int) foo2: (int)arg1 __attribute__((deprecated)) {
anatofuz
parents:
diff changeset
32 return 10;
anatofuz
parents:
diff changeset
33 }
anatofuz
parents:
diff changeset
34 - (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self)) {return 0; }
anatofuz
parents:
diff changeset
35 - (void) dep __attribute__((deprecated)) { } // OK private methodn
anatofuz
parents:
diff changeset
36 @end
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 // rdar://10529259
anatofuz
parents:
diff changeset
40 #define IBAction void)__attribute__((ibaction)
anatofuz
parents:
diff changeset
41
anatofuz
parents:
diff changeset
42 @interface Foo
anatofuz
parents:
diff changeset
43 - (void)doSomething1:(id)sender;
anatofuz
parents:
diff changeset
44 - (void)doSomething2:(id)sender;
anatofuz
parents:
diff changeset
45 @end
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 @implementation Foo
anatofuz
parents:
diff changeset
48 - (void)doSomething1:(id)sender{}
anatofuz
parents:
diff changeset
49 - (void)doSomething2:(id)sender{}
anatofuz
parents:
diff changeset
50 @end
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 @interface Bar : Foo
anatofuz
parents:
diff changeset
53 - (IBAction)doSomething1:(id)sender;
anatofuz
parents:
diff changeset
54 @end
anatofuz
parents:
diff changeset
55 @implementation Bar
anatofuz
parents:
diff changeset
56 - (IBAction)doSomething1:(id)sender {}
anatofuz
parents:
diff changeset
57 - (IBAction)doSomething2:(id)sender {}
anatofuz
parents:
diff changeset
58 - (IBAction)doSomething3:(id)sender {}
anatofuz
parents:
diff changeset
59 @end
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 // rdar://11593375
anatofuz
parents:
diff changeset
62 @interface NSObject @end
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 @interface Test : NSObject
anatofuz
parents:
diff changeset
65 -(id)method __attribute__((deprecated));
anatofuz
parents:
diff changeset
66 -(id)method1;
anatofuz
parents:
diff changeset
67 -(id)method2 __attribute__((aligned(16)));
anatofuz
parents:
diff changeset
68 - (id) method3: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable));
anatofuz
parents:
diff changeset
69 - (id) method4: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable));
anatofuz
parents:
diff changeset
70 @end
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 @implementation Test
anatofuz
parents:
diff changeset
73 -(id)method __attribute__((aligned(16))) __attribute__((aligned(16))) __attribute__((deprecated)) {
anatofuz
parents:
diff changeset
74 return self;
anatofuz
parents:
diff changeset
75 }
anatofuz
parents:
diff changeset
76 -(id)method1 __attribute__((aligned(16))) {
anatofuz
parents:
diff changeset
77 return self;
anatofuz
parents:
diff changeset
78 }
anatofuz
parents:
diff changeset
79 -(id)method2 {
anatofuz
parents:
diff changeset
80 return self;
anatofuz
parents:
diff changeset
81 }
anatofuz
parents:
diff changeset
82 - (id) method3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) {
anatofuz
parents:
diff changeset
83 return self;
anatofuz
parents:
diff changeset
84 }
anatofuz
parents:
diff changeset
85 - (id) method4: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable)) {
anatofuz
parents:
diff changeset
86 return self;
anatofuz
parents:
diff changeset
87 }
anatofuz
parents:
diff changeset
88 @end
anatofuz
parents:
diff changeset
89
anatofuz
parents:
diff changeset
90 __attribute__((cdecl)) // expected-warning {{'cdecl' attribute only applies to functions and methods}}
anatofuz
parents:
diff changeset
91 @interface Complain
anatofuz
parents:
diff changeset
92 @end
anatofuz
parents:
diff changeset
93
anatofuz
parents:
diff changeset
94 // rdar://15450637
anatofuz
parents:
diff changeset
95 @interface rdar15450637 : NSObject
anatofuz
parents:
diff changeset
96 @property int p __attribute__((section("__TEXT,foo")));
anatofuz
parents:
diff changeset
97
anatofuz
parents:
diff changeset
98 - (id) IMethod :(int) count, ... __attribute__((section("__TEXT,foo")));
anatofuz
parents:
diff changeset
99
anatofuz
parents:
diff changeset
100 + (void) CMethod : (id) Obj __attribute__((section("__TEXT,fee")));
anatofuz
parents:
diff changeset
101 @end
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
102
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
103 // Section type conflicts between methods/properties and global variables
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
104 const int global1 __attribute__((section("seg1,sec1"))) = 10; // expected-note {{declared here}} expected-note {{declared here}} expected-note {{declared here}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
105 int global2 __attribute__((section("seg2,sec2"))) = 10; // expected-note {{declared here}} expected-note {{declared here}} expected-note {{declared here}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
106
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
107 @interface section_conflicts : NSObject
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
108 @property int p1 __attribute__((section("seg1,sec1"))); // expected-error {{'p1' causes a section type conflict with 'global1'}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
109 @property int p2 __attribute__((section("seg2,sec2"))); // expected-error {{'p2' causes a section type conflict with 'global2'}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
110
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
111 - (void)imethod1 __attribute__((section("seg1,sec1"))); // expected-error {{'imethod1' causes a section type conflict with 'global1'}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
112 - (void)imethod2 __attribute__((section("seg2,sec2"))); // expected-error {{'imethod2' causes a section type conflict with 'global2'}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
113
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
114 + (void)cmethod1:(id)Obj __attribute__((section("seg1,sec1"))); // expected-error {{'cmethod1:' causes a section type conflict with 'global1'}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
115 + (void)cmethod2:(id)Obj __attribute__((section("seg2,sec2"))); // expected-error {{'cmethod2:' causes a section type conflict with 'global2'}}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
116 @end