annotate clang/test/SemaObjC/unguarded-availability-new.m @ 180:680fa57a2f20

fix compile errors.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 30 May 2020 17:44:06 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
2 // RUN: %clang_cc1 -xobjective-c++ -DMAC -triple x86_64-apple-macosx10.13 -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -Wunguarded-availability-new -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
5 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -Wno-unguarded-availability-new -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 // unguarded-availability implies unguarded-availability-new:
anatofuz
parents:
diff changeset
8 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -Wunguarded-availability -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
9 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.11 -Wunguarded-availability -Wno-unguarded-availability-new -DNO_WARNING -DWARN_PREV -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
10 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -Wno-unguarded-availability -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
11 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -Wno-unguarded-availability -Wunguarded-availability-new -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -D TEST_FUNC_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
14 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.13 -D TEST_FUNC_NEXT -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
15 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-ios11 -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
16 // RUN: %clang_cc1 -DMAC -triple x86_64-apple-macosx10.12 -DWARN_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 // RUN: %clang_cc1 -DIOS -triple x86_64-apple-ios11 -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
19 // RUN: %clang_cc1 -DIOS -triple x86_64-apple-ios11 -D TEST_FUNC_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
20 // RUN: %clang_cc1 -DIOS -triple x86_64-apple-ios11 -D TEST_FUNC_NEXT -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
21 // RUN: %clang_cc1 -DIOS -triple x86_64-apple-ios10.3 -DWARN_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 // RUN: %clang_cc1 -DTVOS -triple x86_64-apple-tvos11 -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
24 // RUN: %clang_cc1 -DTVOS -triple x86_64-apple-tvos11 -D TEST_FUNC_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
25 // RUN: %clang_cc1 -DTVOS -triple x86_64-apple-tvos11 -D TEST_FUNC_NEXT -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
26 // RUN: %clang_cc1 -DTVOS -triple x86_64-apple-tvos10 -DWARN_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 // RUN: %clang_cc1 -DWATCHOS -triple i386-apple-watchos4 -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
29 // RUN: %clang_cc1 -DWATCHOS -triple i386-apple-watchos4 -D TEST_FUNC_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
30 // RUN: %clang_cc1 -DWATCHOS -triple i386-apple-watchos4 -D TEST_FUNC_NEXT -DNO_WARNING -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
31 // RUN: %clang_cc1 -DWATCHOS -triple i386-apple-watchos3 -DWARN_CURRENT -fblocks -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 #ifdef MAC
anatofuz
parents:
diff changeset
34 #define PLATFORM macos
anatofuz
parents:
diff changeset
35 #define NEXT 10.14
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37 #define AVAILABLE_PREV __attribute__((availability(macos, introduced = 10.12)))
anatofuz
parents:
diff changeset
38 #define AVAILABLE_CURRENT __attribute__((availability(macos, introduced = 10.13)))
anatofuz
parents:
diff changeset
39 #define AVAILABLE_NEXT __attribute__((availability(macos, introduced = 10.14)))
anatofuz
parents:
diff changeset
40 #endif
anatofuz
parents:
diff changeset
41
anatofuz
parents:
diff changeset
42 #ifdef IOS
anatofuz
parents:
diff changeset
43 #define PLATFORM ios
anatofuz
parents:
diff changeset
44 #define NEXT 12
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46 #define AVAILABLE_PREV __attribute__((availability(ios, introduced = 10)))
anatofuz
parents:
diff changeset
47 #define AVAILABLE_CURRENT __attribute__((availability(ios, introduced = 11)))
anatofuz
parents:
diff changeset
48 #define AVAILABLE_NEXT __attribute__((availability(ios, introduced = 12)))
anatofuz
parents:
diff changeset
49 #endif
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 #ifdef TVOS
anatofuz
parents:
diff changeset
52 #define PLATFORM tvos
anatofuz
parents:
diff changeset
53 #define NEXT 13
anatofuz
parents:
diff changeset
54
anatofuz
parents:
diff changeset
55 #define AVAILABLE_PREV __attribute__((availability(tvos, introduced = 10)))
anatofuz
parents:
diff changeset
56 #define AVAILABLE_CURRENT __attribute__((availability(tvos, introduced = 11)))
anatofuz
parents:
diff changeset
57 #define AVAILABLE_NEXT __attribute__((availability(tvos, introduced = 13)))
anatofuz
parents:
diff changeset
58 #endif
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 #ifdef WATCHOS
anatofuz
parents:
diff changeset
61 #define PLATFORM watchos
anatofuz
parents:
diff changeset
62 #define NEXT 5
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 #define AVAILABLE_PREV __attribute__((availability(watchos, introduced = 3)))
anatofuz
parents:
diff changeset
65 #define AVAILABLE_CURRENT __attribute__((availability(watchos, introduced = 4)))
anatofuz
parents:
diff changeset
66 #define AVAILABLE_NEXT __attribute__((availability(watchos, introduced = 5)))
anatofuz
parents:
diff changeset
67 #endif
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 void previouslyAvailable() AVAILABLE_PREV;
anatofuz
parents:
diff changeset
70 #ifdef WARN_PREV
anatofuz
parents:
diff changeset
71 // expected-note@-2 {{'previouslyAvailable' has been marked as being introduced}}
anatofuz
parents:
diff changeset
72 #endif
anatofuz
parents:
diff changeset
73 void currentlyAvailable() AVAILABLE_CURRENT;
anatofuz
parents:
diff changeset
74 #ifdef WARN_CURRENT
anatofuz
parents:
diff changeset
75 // expected-note@-2 {{'currentlyAvailable' has been marked as being introduced}}
anatofuz
parents:
diff changeset
76 #endif
anatofuz
parents:
diff changeset
77 void willBeAvailabile() AVAILABLE_NEXT;
anatofuz
parents:
diff changeset
78 #ifndef NO_WARNING
anatofuz
parents:
diff changeset
79 // expected-note@-2 {{'willBeAvailabile' has been marked as being introduced in}}
anatofuz
parents:
diff changeset
80 #endif
anatofuz
parents:
diff changeset
81
anatofuz
parents:
diff changeset
82 #ifdef TEST_FUNC_CURRENT
anatofuz
parents:
diff changeset
83 #define FUNC_AVAILABLE AVAILABLE_CURRENT
anatofuz
parents:
diff changeset
84 #endif
anatofuz
parents:
diff changeset
85 #ifdef TEST_FUNC_NEXT
anatofuz
parents:
diff changeset
86 #define FUNC_AVAILABLE AVAILABLE_NEXT
anatofuz
parents:
diff changeset
87 #endif
anatofuz
parents:
diff changeset
88 #ifndef FUNC_AVAILABLE
anatofuz
parents:
diff changeset
89 #define FUNC_AVAILABLE
anatofuz
parents:
diff changeset
90 #endif
anatofuz
parents:
diff changeset
91
anatofuz
parents:
diff changeset
92 typedef int AVAILABLE_NEXT new_int;
anatofuz
parents:
diff changeset
93 #ifndef NO_WARNING
anatofuz
parents:
diff changeset
94 // expected-note@-2 {{'new_int' has been marked as being introduced in}}
anatofuz
parents:
diff changeset
95 #endif
anatofuz
parents:
diff changeset
96 FUNC_AVAILABLE new_int x;
anatofuz
parents:
diff changeset
97 #ifndef NO_WARNING
anatofuz
parents:
diff changeset
98 #ifdef MAC
anatofuz
parents:
diff changeset
99 // expected-warning@-3 {{'new_int' is only available on macOS 10.14 or newer}} expected-note@-3 {{annotate 'x' with an availability attribute to silence this warning}}
anatofuz
parents:
diff changeset
100 #endif
anatofuz
parents:
diff changeset
101 #ifdef IOS
anatofuz
parents:
diff changeset
102 // expected-warning@-6 {{'new_int' is only available on iOS 12 or newer}} expected-note@-6 {{annotate 'x' with an availability attribute to silence this warning}}
anatofuz
parents:
diff changeset
103 #endif
anatofuz
parents:
diff changeset
104 #ifdef TVOS
anatofuz
parents:
diff changeset
105 // expected-warning@-9 {{'new_int' is only available on tvOS 13 or newer}} expected-note@-9 {{annotate 'x' with an availability attribute to silence this warning}}
anatofuz
parents:
diff changeset
106 #endif
anatofuz
parents:
diff changeset
107 #ifdef WATCHOS
anatofuz
parents:
diff changeset
108 // expected-warning@-12 {{'new_int' is only available on watchOS 5}} expected-note@-12 {{annotate 'x' with an availability attribute to silence this warning}}
anatofuz
parents:
diff changeset
109 #endif
anatofuz
parents:
diff changeset
110 #endif
anatofuz
parents:
diff changeset
111
anatofuz
parents:
diff changeset
112 void test() FUNC_AVAILABLE {
anatofuz
parents:
diff changeset
113 previouslyAvailable();
anatofuz
parents:
diff changeset
114 #ifdef WARN_PREV
anatofuz
parents:
diff changeset
115 #ifdef MAC
anatofuz
parents:
diff changeset
116 // expected-warning@-3 {{'previouslyAvailable' is only available on macOS 10.12 or newer}}
anatofuz
parents:
diff changeset
117 #endif
anatofuz
parents:
diff changeset
118 // expected-note@-5 {{enclose 'previouslyAvailable' in an @available check to silence this warning}}
anatofuz
parents:
diff changeset
119 #endif
anatofuz
parents:
diff changeset
120 currentlyAvailable();
anatofuz
parents:
diff changeset
121 #ifdef WARN_CURRENT
anatofuz
parents:
diff changeset
122 #ifdef MAC
anatofuz
parents:
diff changeset
123 // expected-warning@-3 {{'currentlyAvailable' is only available on macOS 10.13 or newer}}
anatofuz
parents:
diff changeset
124 #endif
anatofuz
parents:
diff changeset
125 #ifdef IOS
anatofuz
parents:
diff changeset
126 // expected-warning@-6 {{'currentlyAvailable' is only available on iOS 11 or newer}}
anatofuz
parents:
diff changeset
127 #endif
anatofuz
parents:
diff changeset
128 #ifdef TVOS
anatofuz
parents:
diff changeset
129 // expected-warning@-9 {{'currentlyAvailable' is only available on tvOS 11 or newer}}
anatofuz
parents:
diff changeset
130 #endif
anatofuz
parents:
diff changeset
131 #ifdef WATCHOS
anatofuz
parents:
diff changeset
132 // expected-warning@-12 {{'currentlyAvailable' is only available on watchOS 4 or newer}}
anatofuz
parents:
diff changeset
133 #endif
anatofuz
parents:
diff changeset
134 // expected-note@-14 {{enclose 'currentlyAvailable' in an @available check to silence this warning}}
anatofuz
parents:
diff changeset
135 #endif
anatofuz
parents:
diff changeset
136 willBeAvailabile();
anatofuz
parents:
diff changeset
137 #ifndef NO_WARNING
anatofuz
parents:
diff changeset
138 #ifdef MAC
anatofuz
parents:
diff changeset
139 // expected-warning@-3 {{'willBeAvailabile' is only available on macOS 10.14 or newer}}
anatofuz
parents:
diff changeset
140 #endif
anatofuz
parents:
diff changeset
141 #ifdef IOS
anatofuz
parents:
diff changeset
142 // expected-warning@-6 {{'willBeAvailabile' is only available on iOS 12 or newer}}
anatofuz
parents:
diff changeset
143 #endif
anatofuz
parents:
diff changeset
144 #ifdef TVOS
anatofuz
parents:
diff changeset
145 // expected-warning@-9 {{'willBeAvailabile' is only available on tvOS 13 or newer}}
anatofuz
parents:
diff changeset
146 #endif
anatofuz
parents:
diff changeset
147 #ifdef WATCHOS
anatofuz
parents:
diff changeset
148 // expected-warning@-12 {{'willBeAvailabile' is only available on watchOS 5 or newer}}
anatofuz
parents:
diff changeset
149 #endif
anatofuz
parents:
diff changeset
150 // expected-note@-14 {{enclose 'willBeAvailabile' in an @available check to silence this warning}}
anatofuz
parents:
diff changeset
151 #endif
anatofuz
parents:
diff changeset
152 if (@available(PLATFORM NEXT, *))
anatofuz
parents:
diff changeset
153 willBeAvailabile(); // OK
anatofuz
parents:
diff changeset
154 }
anatofuz
parents:
diff changeset
155
anatofuz
parents:
diff changeset
156 #ifdef NO_WARNING
anatofuz
parents:
diff changeset
157 #ifndef WARN_PREV
anatofuz
parents:
diff changeset
158 // expected-no-diagnostics
anatofuz
parents:
diff changeset
159 #endif
anatofuz
parents:
diff changeset
160 #endif