Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: tests/language/covariant_test.dart

Issue 2626843003: Implement 'covariant' modifier for dart2js. (Closed)
Patch Set: Update status file for dartk. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tests/language/covariant_override_test.dart ('k') | tests/language/language.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 // Test that `covariant` can be parsed (and ignored) by
6 // dart2js and the VM.
7 // This test only checks for non-strong mode behavior.
8 //
9 // Generally, `covariant` should be ignored, when it is used in the right
10 // places.
11
12 import 'package:expect/expect.dart';
13
14 // Top level field may not have a covariant.
15 // Would be considered a minor (acceptable) bug, if it was accepted here too.
16 covariant /// 00: compile-time error
17 int x0;
18
19 // Getters may never have `covariant`. (Neither on the top-level nor as members)
20 covariant /// 01: compile-time error
21 int get x1 => 499;
22
23 // Top level setters may not have a covariant.
24 // Would be considered a minor (acceptable) bug, if it was accepted here too.
25 void set x2(
26 covariant /// 02: compile-time error
27 int val) {}
28
29 // Same as above, but with `covariant` in different positions.
30 // The `covariant` is just wrong there.
31
32 int
33 covariant /// 03: compile-time error
34 x3;
35
36 int
37 covariant /// 04: compile-time error
38 get x4 => 499;
39
40 void set x5(
41 int
42 covariant /// 05: compile-time error
43 val) {}
44
45
46 // Same without types.
47
48 // Since `covariant` is a built-in identifier, it is not allowed here.
49 covariant x6; /// 06: compile-time error
50
51 // Getters may never have `covariant`.
52 covariant /// 07: compile-time error
53 get x7 => 499;
54
55 // Top level setters may not have a covariant.
56 // Would be considered a minor (acceptable) bug, if it was accepted here too.
57 void set x8(
58 covariant /// 08: compile-time error
59 val) {}
60
61 // If there is no type, then `covariant` is simply the parameter name:
62 void set x9(covariant) {}
63
64 // Covariant won't work on return types.
65 covariant /// 10: compile-time error
66 int f10() => 499;
67
68 // Covariant won't work as a return type.
69 covariant /// 11: compile-time error
70 f11() => 499;
71
72 // Covariant should not work on top-level methods.
73 // It's a minor (acceptable) bug to not error out here.
74 int f12(
75 covariant /// 12: compile-time error
76 int x) => 499;
77
78 // `Covariant` must be in front of the types.
79 int f13(
80 int
81 covariant /// 13: compile-time error
82 x) => 499;
83
84 // Covariant should not work on top-level methods.
85 // It's a minor (acceptable) bug to not error out here.
86 int f14(
87 covariant /// 14: compile-time error
88 final
89 x) => 499;
90
91 // `Covariant` must be in front of modifiers.
92 int f15(
93 final
94 covariant /// 15: compile-time error
95 x) => 499;
96
97 // Covariant should not work on top-level methods.
98 // It's a minor (acceptable) bug to not error out here.
99 int f16(
100 covariant /// 16: compile-time error
101 final
102 int
103 x) => 499;
104
105 // `Covariant` must be in front of modifiers.
106 int f17(
107 final
108 covariant /// 17: compile-time error
109 int
110 x) => 499;
111
112 // On its own, `covariant` is just a parameter name.
113 int f18(covariant) => covariant;
114
115 // All of the above as statics in a class.
116 class A {
117 // Static fields may not have a covariant.
118 // Would be considered a minor (acceptable) bug, if it was accepted here too.
119 static
120 covariant /// 20: compile-time error
121 int x20;
122
123 // Getters may never have `covariant`.
124 static
125 covariant /// 21: compile-time error
126 int get x21 => 499;
127
128 // Getters may never have `covariant`.
129 covariant /// 21b: compile-time error
130 static
131 int get x21b => 499;
132
133 // Static setters may not have a covariant.
134 // Would be considered a minor (acceptable) bug, if it was accepted here too.
135 static void set x22(
136 covariant /// 22: compile-time error
137 int val) {}
138
139 // Same as above, but with `covariant` in different positions.
140 // The `covariant` is just wrong there.
141
142 static int
143 covariant /// 23: compile-time error
144 x23;
145
146 static int
147 covariant /// 24: compile-time error
148 get x24 => 499;
149
150 static void set x25(
151 int
152 covariant /// 25: compile-time error
153 val) {}
154
155 // Since `covariant` is a built-in identifier, it is not allowed here.
156 static covariant x26; /// 26: compile-time error
157
158 // Getters may never have `covariant`.
159 static
160 covariant /// 27: compile-time error
161 get x27 => 499;
162
163 covariant /// 27b: compile-time error
164 static
165 get x27b => 499;
166
167 // Static setters may not have a covariant.
168 // Would be considered a minor (acceptable) bug, if it was accepted here too.
169 static void set x28(
170 covariant /// 28: compile-time error
171 val) {}
172
173 // If there is no type, then `covariant` is simply the parameter name:
174 static void set x29(covariant) {}
175
176 // Covariant won't work on return types.
177 static
178 covariant /// 30: compile-time error
179 int f30() => 499;
180
181 covariant /// 30b: compile-time error
182 static
183 int f30b() => 499;
184
185 // Covariant won't work as a return type.
186 static
187 covariant /// 31: compile-time error
188 f31() => 499;
189
190 covariant /// 31b: compile-time error
191 static
192 f31b() => 499;
193
194 // Covariant should not work on static methods.
195 // It's a minor (acceptable) bug to not error out here.
196 static int f32(
197 covariant /// 32: compile-time error
198 int x) => 499;
199
200 // `Covariant` must be in front of the types.
201 static int f33(
202 int
203 covariant /// 33: compile-time error
204 x) => 499;
205
206 // Covariant should not work on top-level methods.
207 // It's a minor (acceptable) bug to not error out here.
208 static int f34(
209 covariant /// 34: compile-time error
210 final
211 x) => 499;
212
213 // `Covariant` must be in front of modifiers.
214 static int f35(
215 final
216 covariant /// 35: compile-time error
217 x) => 499;
218
219 // Covariant should not work on top-level methods.
220 // It's a minor (acceptable) bug to not error out here.
221 static int f36(
222 covariant /// 36: compile-time error
223 final
224 int
225 x) => 499;
226
227 // `Covariant` must be in front of modifiers.
228 static int f37(
229 final
230 covariant /// 37: compile-time error
231 int
232 x) => 499;
233
234 // `Covariant` on its own is just a parameter name.
235 static int f38(covariant) => covariant;
236 }
237
238 // All of the above as instance members in a class.
239 class B {
240 covariant int x40;
241
242 // Getters may never have `covariant`.
243 covariant /// 41: compile-time error
244 int get x41 => 499;
245
246 void set x42(covariant int val) {}
247
248 // `covariant` in the wrong position.
249 int
250 covariant /// 43: compile-time error
251 x43;
252
253 // `covariant` in the wrong position.
254 int
255 covariant /// 44: compile-time error
256 get x44 => 499;
257
258 void set x45(
259 int
260 covariant /// 45: compile-time error
261 val) {}
262
263 // Since `covariant` is a built-in identifier, it is not allowed here.
264 covariant x46; /// 46: compile-time error
265
266 // Getters may never have `covariant`.
267 covariant /// 47: compile-time error
268 get x47 => 499;
269
270 void set x48(covariant val) {}
271
272 // If there is no type, then `covariant` is simply the parameter name:
273 void set x49(covariant) {}
274
275 // Covariant won't work on return types.
276 covariant /// 50: compile-time error
277 int f50() => 499;
278
279 // Covariant won't work as a return type.
280 covariant /// 51: compile-time error
281 f51() => 499;
282
283 int f52(covariant int x) => 499;
284
285 // `Covariant` must be in front of the types.
286 int f53(
287 int
288 covariant /// 53: compile-time error
289 x) => 499;
290
291 int f54(covariant final x) => 499;
292
293 // `Covariant` must be in front of modifiers.
294 int f55(
295 final
296 covariant /// 55: compile-time error
297 x) => 499;
298
299 int f56(covariant final int x) => 499;
300
301 // `Covariant` must be in front of modifiers.
302 int f57(
303 final
304 covariant /// 57: compile-time error
305 int
306 x) => 499;
307
308 // `Covariant` on its own is just a parameter name.
309 int f58(covariant) => covariant;
310 }
311
312 void use(x) {}
313
314 main() {
315 x0 = 0;
316 use(x1);
317 x2 = 499;
318 use(x3);
319 use(x4);
320 x5 = 42;
321 x6 = 0; /// 06: continued
322 use(x7);
323 x8 = 11;
324 x9 = 12;
325 use(f10());
326 use(f11());
327 use(f12(2));
328 use(f13(3));
329 use(f14(3));
330 use(f15(3));
331 use(f16(3));
332 use(f17(3));
333 Expect.equals(123, f18(123));
334
335 A.x20 = 0;
336 use(A.x21);
337 use(A.x21b);
338 A.x22 = 499;
339 use(A.x23);
340 use(A.x24);
341 A.x25 = 42;
342 A.x26 = 0; /// 26: continued
343 use(A.x27);
344 use(A.x27b);
345 A.x28 = 11;
346 A.x29 = 12;
347 use(A.f30());
348 use(A.f31());
349 use(A.f31b());
350 use(A.f32(2));
351 use(A.f33(3));
352 use(A.f34(3));
353 use(A.f35(3));
354 use(A.f36(3));
355 use(A.f37(3));
356 Expect.equals(1234, A.f38(1234));
357
358 var b = new B();
359 b.x40 = 0;
360 use(b.x41);
361 b.x42 = 499;
362 use(b.x43);
363 use(b.x44);
364 b.x45 = 42;
365 b.x46 = 0; /// 46: continued
366 use(b.x47);
367 b.x48 = 11;
368 b.x49 = 12;
369 use(b.f50());
370 use(b.f51());
371 use(b.f52(2));
372 use(b.f53(2));
373 use(b.f54(3));
374 use(b.f55(3));
375 use(b.f56(3));
376 use(b.f57(3));
377 Expect.equals(12345, b.f58(12345));
378 }
OLDNEW
« no previous file with comments | « tests/language/covariant_override_test.dart ('k') | tests/language/language.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698