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