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

Side by Side Diff: pkg/analyzer/test/generated/static_warning_code_test.dart

Issue 2625783002: Explicitly compute analysis results for sources to check errors. (Closed)
Patch Set: Rollback await(ing) of assertErrors(). Format. 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.generated.static_warning_code_test; 5 library analyzer.test.generated.static_warning_code_test;
6 6
7 import 'package:analyzer/error/error.dart'; 7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/src/error/codes.dart'; 8 import 'package:analyzer/src/error/codes.dart';
9 import 'package:analyzer/src/generated/engine.dart'; 9 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/generated/source_io.dart'; 10 import 'package:analyzer/src/generated/source_io.dart';
(...skipping 13 matching lines...) Expand all
24 fail_argumentTypeNotAssignable_tearOff_required() async { 24 fail_argumentTypeNotAssignable_tearOff_required() async {
25 Source source = addSource(r''' 25 Source source = addSource(r'''
26 class C { 26 class C {
27 Object/*=T*/ f/*<T>*/(Object/*=T*/ x) => x; 27 Object/*=T*/ f/*<T>*/(Object/*=T*/ x) => x;
28 } 28 }
29 g(C c) { 29 g(C c) {
30 var h = c.f/*<int>*/; 30 var h = c.f/*<int>*/;
31 print(h('s')); 31 print(h('s'));
32 } 32 }
33 '''); 33 ''');
34 await assertErrors( 34 await computeAnalysisResult(source);
35 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 35 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
36 verify([source]); 36 verify([source]);
37 } 37 }
38 38
39 fail_undefinedGetter() async { 39 fail_undefinedGetter() async {
40 Source source = addSource(r''' 40 Source source = addSource(r'''
41 '''); 41 ''');
42 await assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); 42 await computeAnalysisResult(source);
43 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]);
43 verify([source]); 44 verify([source]);
44 } 45 }
45 46
46 fail_undefinedIdentifier_commentReference() async { 47 fail_undefinedIdentifier_commentReference() async {
47 Source source = addSource(r''' 48 Source source = addSource(r'''
48 /** [m] xxx [new B.c] */ 49 /** [m] xxx [new B.c] */
49 class A { 50 class A {
50 }'''); 51 }''');
51 await assertErrors(source, [ 52 await computeAnalysisResult(source);
53 assertErrors(source, [
52 StaticWarningCode.UNDEFINED_IDENTIFIER, 54 StaticWarningCode.UNDEFINED_IDENTIFIER,
53 StaticWarningCode.UNDEFINED_IDENTIFIER 55 StaticWarningCode.UNDEFINED_IDENTIFIER
54 ]); 56 ]);
55 } 57 }
56 58
57 fail_undefinedSetter() async { 59 fail_undefinedSetter() async {
58 Source source = addSource(r''' 60 Source source = addSource(r'''
59 class C {} 61 class C {}
60 f(var p) { 62 f(var p) {
61 C.m = 0; 63 C.m = 0;
62 }'''); 64 }''');
63 await assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); 65 await computeAnalysisResult(source);
66 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]);
64 verify([source]); 67 verify([source]);
65 } 68 }
66 69
67 test_ambiguousImport_as() async { 70 test_ambiguousImport_as() async {
68 Source source = addSource(r''' 71 Source source = addSource(r'''
69 import 'lib1.dart'; 72 import 'lib1.dart';
70 import 'lib2.dart'; 73 import 'lib2.dart';
71 f(p) {p as N;}'''); 74 f(p) {p as N;}''');
72 addNamedSource( 75 addNamedSource(
73 "/lib1.dart", 76 "/lib1.dart",
74 r''' 77 r'''
75 library lib1; 78 library lib1;
76 class N {}'''); 79 class N {}''');
77 addNamedSource( 80 addNamedSource(
78 "/lib2.dart", 81 "/lib2.dart",
79 r''' 82 r'''
80 library lib2; 83 library lib2;
81 class N {}'''); 84 class N {}''');
82 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 85 await computeAnalysisResult(source);
86 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
83 } 87 }
84 88
85 test_ambiguousImport_extends() async { 89 test_ambiguousImport_extends() async {
86 Source source = addSource(r''' 90 Source source = addSource(r'''
87 import 'lib1.dart'; 91 import 'lib1.dart';
88 import 'lib2.dart'; 92 import 'lib2.dart';
89 class A extends N {}'''); 93 class A extends N {}''');
90 addNamedSource( 94 addNamedSource(
91 "/lib1.dart", 95 "/lib1.dart",
92 r''' 96 r'''
93 library lib1; 97 library lib1;
94 class N {}'''); 98 class N {}''');
95 addNamedSource( 99 addNamedSource(
96 "/lib2.dart", 100 "/lib2.dart",
97 r''' 101 r'''
98 library lib2; 102 library lib2;
99 class N {}'''); 103 class N {}''');
100 await assertErrors(source, [ 104 await computeAnalysisResult(source);
105 assertErrors(source, [
101 StaticWarningCode.AMBIGUOUS_IMPORT, 106 StaticWarningCode.AMBIGUOUS_IMPORT,
102 CompileTimeErrorCode.EXTENDS_NON_CLASS 107 CompileTimeErrorCode.EXTENDS_NON_CLASS
103 ]); 108 ]);
104 } 109 }
105 110
106 test_ambiguousImport_implements() async { 111 test_ambiguousImport_implements() async {
107 Source source = addSource(r''' 112 Source source = addSource(r'''
108 import 'lib1.dart'; 113 import 'lib1.dart';
109 import 'lib2.dart'; 114 import 'lib2.dart';
110 class A implements N {}'''); 115 class A implements N {}''');
111 addNamedSource( 116 addNamedSource(
112 "/lib1.dart", 117 "/lib1.dart",
113 r''' 118 r'''
114 library lib1; 119 library lib1;
115 class N {}'''); 120 class N {}''');
116 addNamedSource( 121 addNamedSource(
117 "/lib2.dart", 122 "/lib2.dart",
118 r''' 123 r'''
119 library lib2; 124 library lib2;
120 class N {}'''); 125 class N {}''');
121 await assertErrors(source, [ 126 await computeAnalysisResult(source);
127 assertErrors(source, [
122 StaticWarningCode.AMBIGUOUS_IMPORT, 128 StaticWarningCode.AMBIGUOUS_IMPORT,
123 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS 129 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS
124 ]); 130 ]);
125 } 131 }
126 132
127 test_ambiguousImport_inPart() async { 133 test_ambiguousImport_inPart() async {
128 Source source = addSource(r''' 134 Source source = addSource(r'''
129 library lib; 135 library lib;
130 import 'lib1.dart'; 136 import 'lib1.dart';
131 import 'lib2.dart'; 137 import 'lib2.dart';
132 part 'part.dart';'''); 138 part 'part.dart';''');
133 addNamedSource( 139 addNamedSource(
134 "/lib1.dart", 140 "/lib1.dart",
135 r''' 141 r'''
136 library lib1; 142 library lib1;
137 class N {}'''); 143 class N {}''');
138 addNamedSource( 144 addNamedSource(
139 "/lib2.dart", 145 "/lib2.dart",
140 r''' 146 r'''
141 library lib2; 147 library lib2;
142 class N {}'''); 148 class N {}''');
143 Source partSource = addNamedSource( 149 Source partSource = addNamedSource(
144 "/part.dart", 150 "/part.dart",
145 r''' 151 r'''
146 part of lib; 152 part of lib;
147 class A extends N {}'''); 153 class A extends N {}''');
148 await assertNoErrors(source); 154 await computeAnalysisResult(source);
149 await assertErrors(partSource, [ 155 await computeAnalysisResult(partSource);
156 assertNoErrors(source);
157 assertErrors(partSource, [
150 StaticWarningCode.AMBIGUOUS_IMPORT, 158 StaticWarningCode.AMBIGUOUS_IMPORT,
151 CompileTimeErrorCode.EXTENDS_NON_CLASS 159 CompileTimeErrorCode.EXTENDS_NON_CLASS
152 ]); 160 ]);
153 } 161 }
154 162
155 test_ambiguousImport_instanceCreation() async { 163 test_ambiguousImport_instanceCreation() async {
156 Source source = addSource(r''' 164 Source source = addSource(r'''
157 library L; 165 library L;
158 import 'lib1.dart'; 166 import 'lib1.dart';
159 import 'lib2.dart'; 167 import 'lib2.dart';
160 f() {new N();}'''); 168 f() {new N();}''');
161 addNamedSource( 169 addNamedSource(
162 "/lib1.dart", 170 "/lib1.dart",
163 r''' 171 r'''
164 library lib1; 172 library lib1;
165 class N {}'''); 173 class N {}''');
166 addNamedSource( 174 addNamedSource(
167 "/lib2.dart", 175 "/lib2.dart",
168 r''' 176 r'''
169 library lib2; 177 library lib2;
170 class N {}'''); 178 class N {}''');
171 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 179 await computeAnalysisResult(source);
180 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
172 } 181 }
173 182
174 test_ambiguousImport_is() async { 183 test_ambiguousImport_is() async {
175 Source source = addSource(r''' 184 Source source = addSource(r'''
176 import 'lib1.dart'; 185 import 'lib1.dart';
177 import 'lib2.dart'; 186 import 'lib2.dart';
178 f(p) {p is N;}'''); 187 f(p) {p is N;}''');
179 addNamedSource( 188 addNamedSource(
180 "/lib1.dart", 189 "/lib1.dart",
181 r''' 190 r'''
182 library lib1; 191 library lib1;
183 class N {}'''); 192 class N {}''');
184 addNamedSource( 193 addNamedSource(
185 "/lib2.dart", 194 "/lib2.dart",
186 r''' 195 r'''
187 library lib2; 196 library lib2;
188 class N {}'''); 197 class N {}''');
189 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 198 await computeAnalysisResult(source);
199 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
190 } 200 }
191 201
192 test_ambiguousImport_qualifier() async { 202 test_ambiguousImport_qualifier() async {
193 Source source = addSource(r''' 203 Source source = addSource(r'''
194 import 'lib1.dart'; 204 import 'lib1.dart';
195 import 'lib2.dart'; 205 import 'lib2.dart';
196 g() { N.FOO; }'''); 206 g() { N.FOO; }''');
197 addNamedSource( 207 addNamedSource(
198 "/lib1.dart", 208 "/lib1.dart",
199 r''' 209 r'''
200 library lib1; 210 library lib1;
201 class N {}'''); 211 class N {}''');
202 addNamedSource( 212 addNamedSource(
203 "/lib2.dart", 213 "/lib2.dart",
204 r''' 214 r'''
205 library lib2; 215 library lib2;
206 class N {}'''); 216 class N {}''');
207 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 217 await computeAnalysisResult(source);
218 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
208 } 219 }
209 220
210 test_ambiguousImport_typeAnnotation() async { 221 test_ambiguousImport_typeAnnotation() async {
211 Source source = addSource(r''' 222 Source source = addSource(r'''
212 import 'lib1.dart'; 223 import 'lib1.dart';
213 import 'lib2.dart'; 224 import 'lib2.dart';
214 typedef N FT(N p); 225 typedef N FT(N p);
215 N f(N p) { 226 N f(N p) {
216 N v; 227 N v;
217 return null; 228 return null;
218 } 229 }
219 class A { 230 class A {
220 N m() { return null; } 231 N m() { return null; }
221 } 232 }
222 class B<T extends N> {}'''); 233 class B<T extends N> {}''');
223 addNamedSource( 234 addNamedSource(
224 "/lib1.dart", 235 "/lib1.dart",
225 r''' 236 r'''
226 library lib1; 237 library lib1;
227 class N {}'''); 238 class N {}''');
228 addNamedSource( 239 addNamedSource(
229 "/lib2.dart", 240 "/lib2.dart",
230 r''' 241 r'''
231 library lib2; 242 library lib2;
232 class N {}'''); 243 class N {}''');
233 await assertErrors(source, [ 244 await computeAnalysisResult(source);
245 assertErrors(source, [
234 StaticWarningCode.AMBIGUOUS_IMPORT, 246 StaticWarningCode.AMBIGUOUS_IMPORT,
235 StaticWarningCode.AMBIGUOUS_IMPORT, 247 StaticWarningCode.AMBIGUOUS_IMPORT,
236 StaticWarningCode.AMBIGUOUS_IMPORT, 248 StaticWarningCode.AMBIGUOUS_IMPORT,
237 StaticWarningCode.AMBIGUOUS_IMPORT, 249 StaticWarningCode.AMBIGUOUS_IMPORT,
238 StaticWarningCode.AMBIGUOUS_IMPORT, 250 StaticWarningCode.AMBIGUOUS_IMPORT,
239 StaticWarningCode.AMBIGUOUS_IMPORT, 251 StaticWarningCode.AMBIGUOUS_IMPORT,
240 StaticWarningCode.AMBIGUOUS_IMPORT 252 StaticWarningCode.AMBIGUOUS_IMPORT
241 ]); 253 ]);
242 } 254 }
243 255
244 test_ambiguousImport_typeArgument_annotation() async { 256 test_ambiguousImport_typeArgument_annotation() async {
245 Source source = addSource(r''' 257 Source source = addSource(r'''
246 import 'lib1.dart'; 258 import 'lib1.dart';
247 import 'lib2.dart'; 259 import 'lib2.dart';
248 class A<T> {} 260 class A<T> {}
249 A<N> f() { return null; }'''); 261 A<N> f() { return null; }''');
250 addNamedSource( 262 addNamedSource(
251 "/lib1.dart", 263 "/lib1.dart",
252 r''' 264 r'''
253 library lib1; 265 library lib1;
254 class N {}'''); 266 class N {}''');
255 addNamedSource( 267 addNamedSource(
256 "/lib2.dart", 268 "/lib2.dart",
257 r''' 269 r'''
258 library lib2; 270 library lib2;
259 class N {}'''); 271 class N {}''');
260 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 272 await computeAnalysisResult(source);
273 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
261 } 274 }
262 275
263 test_ambiguousImport_typeArgument_instanceCreation() async { 276 test_ambiguousImport_typeArgument_instanceCreation() async {
264 Source source = addSource(r''' 277 Source source = addSource(r'''
265 import 'lib1.dart'; 278 import 'lib1.dart';
266 import 'lib2.dart'; 279 import 'lib2.dart';
267 class A<T> {} 280 class A<T> {}
268 f() {new A<N>();}'''); 281 f() {new A<N>();}''');
269 addNamedSource( 282 addNamedSource(
270 "/lib1.dart", 283 "/lib1.dart",
271 r''' 284 r'''
272 library lib1; 285 library lib1;
273 class N {}'''); 286 class N {}''');
274 addNamedSource( 287 addNamedSource(
275 "/lib2.dart", 288 "/lib2.dart",
276 r''' 289 r'''
277 library lib2; 290 library lib2;
278 class N {}'''); 291 class N {}''');
279 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 292 await computeAnalysisResult(source);
293 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
280 } 294 }
281 295
282 test_ambiguousImport_varRead() async { 296 test_ambiguousImport_varRead() async {
283 Source source = addSource(r''' 297 Source source = addSource(r'''
284 import 'lib1.dart'; 298 import 'lib1.dart';
285 import 'lib2.dart'; 299 import 'lib2.dart';
286 f() { g(v); } 300 f() { g(v); }
287 g(p) {}'''); 301 g(p) {}''');
288 addNamedSource( 302 addNamedSource(
289 "/lib1.dart", 303 "/lib1.dart",
290 r''' 304 r'''
291 library lib1; 305 library lib1;
292 var v;'''); 306 var v;''');
293 addNamedSource( 307 addNamedSource(
294 "/lib2.dart", 308 "/lib2.dart",
295 r''' 309 r'''
296 library lib2; 310 library lib2;
297 var v;'''); 311 var v;''');
298 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 312 await computeAnalysisResult(source);
313 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
299 } 314 }
300 315
301 test_ambiguousImport_varWrite() async { 316 test_ambiguousImport_varWrite() async {
302 Source source = addSource(r''' 317 Source source = addSource(r'''
303 import 'lib1.dart'; 318 import 'lib1.dart';
304 import 'lib2.dart'; 319 import 'lib2.dart';
305 f() { v = 0; }'''); 320 f() { v = 0; }''');
306 addNamedSource( 321 addNamedSource(
307 "/lib1.dart", 322 "/lib1.dart",
308 r''' 323 r'''
309 library lib1; 324 library lib1;
310 var v;'''); 325 var v;''');
311 addNamedSource( 326 addNamedSource(
312 "/lib2.dart", 327 "/lib2.dart",
313 r''' 328 r'''
314 library lib2; 329 library lib2;
315 var v;'''); 330 var v;''');
316 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 331 await computeAnalysisResult(source);
332 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
317 } 333 }
318 334
319 test_ambiguousImport_withPrefix() async { 335 test_ambiguousImport_withPrefix() async {
320 Source source = addSource(r''' 336 Source source = addSource(r'''
321 library test; 337 library test;
322 import 'lib1.dart' as p; 338 import 'lib1.dart' as p;
323 import 'lib2.dart' as p; 339 import 'lib2.dart' as p;
324 main() { 340 main() {
325 p.f(); 341 p.f();
326 }'''); 342 }''');
327 addNamedSource( 343 addNamedSource(
328 "/lib1.dart", 344 "/lib1.dart",
329 r''' 345 r'''
330 library lib1; 346 library lib1;
331 f() {}'''); 347 f() {}''');
332 addNamedSource( 348 addNamedSource(
333 "/lib2.dart", 349 "/lib2.dart",
334 r''' 350 r'''
335 library lib2; 351 library lib2;
336 f() {}'''); 352 f() {}''');
337 await assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 353 await computeAnalysisResult(source);
354 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
338 } 355 }
339 356
340 test_argumentTypeNotAssignable_ambiguousClassName() async { 357 test_argumentTypeNotAssignable_ambiguousClassName() async {
341 // See dartbug.com/19624 358 // See dartbug.com/19624
342 Source source = addNamedSource( 359 Source source = addNamedSource(
343 "/lib1.dart", 360 "/lib1.dart",
344 r''' 361 r'''
345 library lib1; 362 library lib1;
346 import 'lib2.dart'; 363 import 'lib2.dart';
347 class _A {} 364 class _A {}
(...skipping 20 matching lines...) Expand all
368 } 385 }
369 386
370 test_argumentTypeNotAssignable_annotation_namedConstructor() async { 387 test_argumentTypeNotAssignable_annotation_namedConstructor() async {
371 Source source = addSource(r''' 388 Source source = addSource(r'''
372 class A { 389 class A {
373 const A.fromInt(int p); 390 const A.fromInt(int p);
374 } 391 }
375 @A.fromInt('0') 392 @A.fromInt('0')
376 main() { 393 main() {
377 }'''); 394 }''');
378 await assertErrors( 395 await computeAnalysisResult(source);
379 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 396 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
380 verify([source]); 397 verify([source]);
381 } 398 }
382 399
383 test_argumentTypeNotAssignable_annotation_unnamedConstructor() async { 400 test_argumentTypeNotAssignable_annotation_unnamedConstructor() async {
384 Source source = addSource(r''' 401 Source source = addSource(r'''
385 class A { 402 class A {
386 const A(int p); 403 const A(int p);
387 } 404 }
388 @A('0') 405 @A('0')
389 main() { 406 main() {
390 }'''); 407 }''');
391 await assertErrors( 408 await computeAnalysisResult(source);
392 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 409 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
393 verify([source]); 410 verify([source]);
394 } 411 }
395 412
396 test_argumentTypeNotAssignable_binary() async { 413 test_argumentTypeNotAssignable_binary() async {
397 Source source = addSource(r''' 414 Source source = addSource(r'''
398 class A { 415 class A {
399 operator +(int p) {} 416 operator +(int p) {}
400 } 417 }
401 f(A a) { 418 f(A a) {
402 a + '0'; 419 a + '0';
403 }'''); 420 }''');
404 await assertErrors( 421 await computeAnalysisResult(source);
405 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 422 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
406 verify([source]); 423 verify([source]);
407 } 424 }
408 425
409 test_argumentTypeNotAssignable_cascadeSecond() async { 426 test_argumentTypeNotAssignable_cascadeSecond() async {
410 Source source = addSource(r''' 427 Source source = addSource(r'''
411 // filler filler filler filler filler filler filler filler filler filler 428 // filler filler filler filler filler filler filler filler filler filler
412 class A { 429 class A {
413 B ma() { return new B(); } 430 B ma() { return new B(); }
414 } 431 }
415 class B { 432 class B {
416 mb(String p) {} 433 mb(String p) {}
417 } 434 }
418 435
419 main() { 436 main() {
420 A a = new A(); 437 A a = new A();
421 a.. ma().mb(0); 438 a.. ma().mb(0);
422 }'''); 439 }''');
423 await assertErrors( 440 await computeAnalysisResult(source);
424 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 441 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
425 verify([source]); 442 verify([source]);
426 } 443 }
427 444
428 test_argumentTypeNotAssignable_const() async { 445 test_argumentTypeNotAssignable_const() async {
429 Source source = addSource(r''' 446 Source source = addSource(r'''
430 class A { 447 class A {
431 const A(String p); 448 const A(String p);
432 } 449 }
433 main() { 450 main() {
434 const A(42); 451 const A(42);
435 }'''); 452 }''');
436 await assertErrors(source, [ 453 await computeAnalysisResult(source);
454 assertErrors(source, [
437 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 455 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
438 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH 456 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
439 ]); 457 ]);
440 verify([source]); 458 verify([source]);
441 } 459 }
442 460
443 test_argumentTypeNotAssignable_const_super() async { 461 test_argumentTypeNotAssignable_const_super() async {
444 Source source = addSource(r''' 462 Source source = addSource(r'''
445 class A { 463 class A {
446 const A(String p); 464 const A(String p);
447 } 465 }
448 class B extends A { 466 class B extends A {
449 const B() : super(42); 467 const B() : super(42);
450 }'''); 468 }''');
451 await assertErrors( 469 await computeAnalysisResult(source);
452 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 470 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
453 verify([source]); 471 verify([source]);
454 } 472 }
455 473
456 test_argumentTypeNotAssignable_functionExpressionInvocation_required() async { 474 test_argumentTypeNotAssignable_functionExpressionInvocation_required() async {
457 Source source = addSource(r''' 475 Source source = addSource(r'''
458 main() { 476 main() {
459 (int x) {} (''); 477 (int x) {} ('');
460 }'''); 478 }''');
461 await assertErrors( 479 await computeAnalysisResult(source);
462 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 480 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
463 verify([source]); 481 verify([source]);
464 } 482 }
465 483
466 test_argumentTypeNotAssignable_index() async { 484 test_argumentTypeNotAssignable_index() async {
467 Source source = addSource(r''' 485 Source source = addSource(r'''
468 class A { 486 class A {
469 operator [](int index) {} 487 operator [](int index) {}
470 } 488 }
471 f(A a) { 489 f(A a) {
472 a['0']; 490 a['0'];
473 }'''); 491 }''');
474 await assertErrors( 492 await computeAnalysisResult(source);
475 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 493 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
476 verify([source]); 494 verify([source]);
477 } 495 }
478 496
479 test_argumentTypeNotAssignable_invocation_callParameter() async { 497 test_argumentTypeNotAssignable_invocation_callParameter() async {
480 Source source = addSource(r''' 498 Source source = addSource(r'''
481 class A { 499 class A {
482 call(int p) {} 500 call(int p) {}
483 } 501 }
484 f(A a) { 502 f(A a) {
485 a('0'); 503 a('0');
486 }'''); 504 }''');
487 await assertErrors( 505 await computeAnalysisResult(source);
488 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 506 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
489 verify([source]); 507 verify([source]);
490 } 508 }
491 509
492 test_argumentTypeNotAssignable_invocation_callVariable() async { 510 test_argumentTypeNotAssignable_invocation_callVariable() async {
493 Source source = addSource(r''' 511 Source source = addSource(r'''
494 class A { 512 class A {
495 call(int p) {} 513 call(int p) {}
496 } 514 }
497 main() { 515 main() {
498 A a = new A(); 516 A a = new A();
499 a('0'); 517 a('0');
500 }'''); 518 }''');
501 await assertErrors( 519 await computeAnalysisResult(source);
502 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 520 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
503 verify([source]); 521 verify([source]);
504 } 522 }
505 523
506 test_argumentTypeNotAssignable_invocation_functionParameter() async { 524 test_argumentTypeNotAssignable_invocation_functionParameter() async {
507 Source source = addSource(r''' 525 Source source = addSource(r'''
508 a(b(int p)) { 526 a(b(int p)) {
509 b('0'); 527 b('0');
510 }'''); 528 }''');
511 await assertErrors( 529 await computeAnalysisResult(source);
512 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 530 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
513 verify([source]); 531 verify([source]);
514 } 532 }
515 533
516 test_argumentTypeNotAssignable_invocation_functionParameter_generic() async { 534 test_argumentTypeNotAssignable_invocation_functionParameter_generic() async {
517 Source source = addSource(r''' 535 Source source = addSource(r'''
518 class A<K, V> { 536 class A<K, V> {
519 m(f(K k), V v) { 537 m(f(K k), V v) {
520 f(v); 538 f(v);
521 } 539 }
522 }'''); 540 }''');
523 await assertErrors( 541 await computeAnalysisResult(source);
524 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 542 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
525 verify([source]); 543 verify([source]);
526 } 544 }
527 545
528 test_argumentTypeNotAssignable_invocation_functionTypes_optional() async { 546 test_argumentTypeNotAssignable_invocation_functionTypes_optional() async {
529 Source source = addSource(r''' 547 Source source = addSource(r'''
530 void acceptFunNumOptBool(void funNumOptBool([bool b])) {} 548 void acceptFunNumOptBool(void funNumOptBool([bool b])) {}
531 void funNumBool(bool b) {} 549 void funNumBool(bool b) {}
532 main() { 550 main() {
533 acceptFunNumOptBool(funNumBool); 551 acceptFunNumOptBool(funNumBool);
534 }'''); 552 }''');
535 await assertErrors( 553 await computeAnalysisResult(source);
536 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 554 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
537 verify([source]); 555 verify([source]);
538 } 556 }
539 557
540 test_argumentTypeNotAssignable_invocation_generic() async { 558 test_argumentTypeNotAssignable_invocation_generic() async {
541 Source source = addSource(r''' 559 Source source = addSource(r'''
542 class A<T> { 560 class A<T> {
543 m(T t) {} 561 m(T t) {}
544 } 562 }
545 f(A<String> a) { 563 f(A<String> a) {
546 a.m(1); 564 a.m(1);
547 }'''); 565 }''');
548 await assertErrors( 566 await computeAnalysisResult(source);
549 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 567 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
550 verify([source]); 568 verify([source]);
551 } 569 }
552 570
553 test_argumentTypeNotAssignable_invocation_named() async { 571 test_argumentTypeNotAssignable_invocation_named() async {
554 Source source = addSource(r''' 572 Source source = addSource(r'''
555 f({String p}) {} 573 f({String p}) {}
556 main() { 574 main() {
557 f(p: 42); 575 f(p: 42);
558 }'''); 576 }''');
559 await assertErrors( 577 await computeAnalysisResult(source);
560 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 578 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
561 verify([source]); 579 verify([source]);
562 } 580 }
563 581
564 test_argumentTypeNotAssignable_invocation_optional() async { 582 test_argumentTypeNotAssignable_invocation_optional() async {
565 Source source = addSource(r''' 583 Source source = addSource(r'''
566 f([String p]) {} 584 f([String p]) {}
567 main() { 585 main() {
568 f(42); 586 f(42);
569 }'''); 587 }''');
570 await assertErrors( 588 await computeAnalysisResult(source);
571 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 589 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
572 verify([source]); 590 verify([source]);
573 } 591 }
574 592
575 test_argumentTypeNotAssignable_invocation_required() async { 593 test_argumentTypeNotAssignable_invocation_required() async {
576 Source source = addSource(r''' 594 Source source = addSource(r'''
577 f(String p) {} 595 f(String p) {}
578 main() { 596 main() {
579 f(42); 597 f(42);
580 }'''); 598 }''');
581 await assertErrors( 599 await computeAnalysisResult(source);
582 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 600 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
583 verify([source]); 601 verify([source]);
584 } 602 }
585 603
586 test_argumentTypeNotAssignable_invocation_typedef_generic() async { 604 test_argumentTypeNotAssignable_invocation_typedef_generic() async {
587 Source source = addSource(r''' 605 Source source = addSource(r'''
588 typedef A<T>(T p); 606 typedef A<T>(T p);
589 f(A<int> a) { 607 f(A<int> a) {
590 a('1'); 608 a('1');
591 }'''); 609 }''');
592 await assertErrors( 610 await computeAnalysisResult(source);
593 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 611 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
594 verify([source]); 612 verify([source]);
595 } 613 }
596 614
597 test_argumentTypeNotAssignable_invocation_typedef_local() async { 615 test_argumentTypeNotAssignable_invocation_typedef_local() async {
598 Source source = addSource(r''' 616 Source source = addSource(r'''
599 typedef A(int p); 617 typedef A(int p);
600 A getA() => null; 618 A getA() => null;
601 main() { 619 main() {
602 A a = getA(); 620 A a = getA();
603 a('1'); 621 a('1');
604 }'''); 622 }''');
605 await assertErrors( 623 await computeAnalysisResult(source);
606 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 624 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
607 verify([source]); 625 verify([source]);
608 } 626 }
609 627
610 test_argumentTypeNotAssignable_invocation_typedef_parameter() async { 628 test_argumentTypeNotAssignable_invocation_typedef_parameter() async {
611 Source source = addSource(r''' 629 Source source = addSource(r'''
612 typedef A(int p); 630 typedef A(int p);
613 f(A a) { 631 f(A a) {
614 a('1'); 632 a('1');
615 }'''); 633 }''');
616 await assertErrors( 634 await computeAnalysisResult(source);
617 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 635 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
618 verify([source]); 636 verify([source]);
619 } 637 }
620 638
621 test_argumentTypeNotAssignable_new_generic() async { 639 test_argumentTypeNotAssignable_new_generic() async {
622 Source source = addSource(r''' 640 Source source = addSource(r'''
623 class A<T> { 641 class A<T> {
624 A(T p) {} 642 A(T p) {}
625 } 643 }
626 main() { 644 main() {
627 new A<String>(42); 645 new A<String>(42);
628 }'''); 646 }''');
629 await assertErrors( 647 await computeAnalysisResult(source);
630 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 648 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
631 verify([source]); 649 verify([source]);
632 } 650 }
633 651
634 test_argumentTypeNotAssignable_new_optional() async { 652 test_argumentTypeNotAssignable_new_optional() async {
635 Source source = addSource(r''' 653 Source source = addSource(r'''
636 class A { 654 class A {
637 A([String p]) {} 655 A([String p]) {}
638 } 656 }
639 main() { 657 main() {
640 new A(42); 658 new A(42);
641 }'''); 659 }''');
642 await assertErrors( 660 await computeAnalysisResult(source);
643 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 661 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
644 verify([source]); 662 verify([source]);
645 } 663 }
646 664
647 test_argumentTypeNotAssignable_new_required() async { 665 test_argumentTypeNotAssignable_new_required() async {
648 Source source = addSource(r''' 666 Source source = addSource(r'''
649 class A { 667 class A {
650 A(String p) {} 668 A(String p) {}
651 } 669 }
652 main() { 670 main() {
653 new A(42); 671 new A(42);
654 }'''); 672 }''');
655 await assertErrors( 673 await computeAnalysisResult(source);
656 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 674 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
657 verify([source]); 675 verify([source]);
658 } 676 }
659 677
660 test_assignmentToClass() async { 678 test_assignmentToClass() async {
661 Source source = addSource(''' 679 Source source = addSource('''
662 class C {} 680 class C {}
663 main() { 681 main() {
664 C = null; 682 C = null;
665 } 683 }
666 '''); 684 ''');
667 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); 685 await computeAnalysisResult(source);
686 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]);
668 } 687 }
669 688
670 test_assignmentToConst_instanceVariable() async { 689 test_assignmentToConst_instanceVariable() async {
671 Source source = addSource(r''' 690 Source source = addSource(r'''
672 class A { 691 class A {
673 static const v = 0; 692 static const v = 0;
674 } 693 }
675 f() { 694 f() {
676 A.v = 1; 695 A.v = 1;
677 }'''); 696 }''');
678 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 697 await computeAnalysisResult(source);
698 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
679 verify([source]); 699 verify([source]);
680 } 700 }
681 701
682 test_assignmentToConst_instanceVariable_plusEq() async { 702 test_assignmentToConst_instanceVariable_plusEq() async {
683 Source source = addSource(r''' 703 Source source = addSource(r'''
684 class A { 704 class A {
685 static const v = 0; 705 static const v = 0;
686 } 706 }
687 f() { 707 f() {
688 A.v += 1; 708 A.v += 1;
689 }'''); 709 }''');
690 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 710 await computeAnalysisResult(source);
711 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
691 verify([source]); 712 verify([source]);
692 } 713 }
693 714
694 test_assignmentToConst_localVariable() async { 715 test_assignmentToConst_localVariable() async {
695 Source source = addSource(r''' 716 Source source = addSource(r'''
696 f() { 717 f() {
697 const x = 0; 718 const x = 0;
698 x = 1; 719 x = 1;
699 }'''); 720 }''');
700 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 721 await computeAnalysisResult(source);
722 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
701 verify([source]); 723 verify([source]);
702 } 724 }
703 725
704 test_assignmentToConst_localVariable_plusEq() async { 726 test_assignmentToConst_localVariable_plusEq() async {
705 Source source = addSource(r''' 727 Source source = addSource(r'''
706 f() { 728 f() {
707 const x = 0; 729 const x = 0;
708 x += 1; 730 x += 1;
709 }'''); 731 }''');
710 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 732 await computeAnalysisResult(source);
733 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
711 verify([source]); 734 verify([source]);
712 } 735 }
713 736
714 test_assignmentToEnumType() async { 737 test_assignmentToEnumType() async {
715 Source source = addSource(''' 738 Source source = addSource('''
716 enum E { e } 739 enum E { e }
717 main() { 740 main() {
718 E = null; 741 E = null;
719 } 742 }
720 '''); 743 ''');
721 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); 744 await computeAnalysisResult(source);
745 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]);
722 } 746 }
723 747
724 test_assignmentToFinal_instanceVariable() async { 748 test_assignmentToFinal_instanceVariable() async {
725 Source source = addSource(r''' 749 Source source = addSource(r'''
726 class A { 750 class A {
727 final v = 0; 751 final v = 0;
728 } 752 }
729 f() { 753 f() {
730 A a = new A(); 754 A a = new A();
731 a.v = 1; 755 a.v = 1;
732 }'''); 756 }''');
733 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 757 await computeAnalysisResult(source);
758 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
734 verify([source]); 759 verify([source]);
735 } 760 }
736 761
737 test_assignmentToFinal_instanceVariable_plusEq() async { 762 test_assignmentToFinal_instanceVariable_plusEq() async {
738 Source source = addSource(r''' 763 Source source = addSource(r'''
739 class A { 764 class A {
740 final v = 0; 765 final v = 0;
741 } 766 }
742 f() { 767 f() {
743 A a = new A(); 768 A a = new A();
744 a.v += 1; 769 a.v += 1;
745 }'''); 770 }''');
746 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 771 await computeAnalysisResult(source);
772 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
747 verify([source]); 773 verify([source]);
748 } 774 }
749 775
750 test_assignmentToFinal_localVariable() async { 776 test_assignmentToFinal_localVariable() async {
751 Source source = addSource(r''' 777 Source source = addSource(r'''
752 f() { 778 f() {
753 final x = 0; 779 final x = 0;
754 x = 1; 780 x = 1;
755 }'''); 781 }''');
756 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 782 await computeAnalysisResult(source);
783 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
757 verify([source]); 784 verify([source]);
758 } 785 }
759 786
760 test_assignmentToFinal_localVariable_plusEq() async { 787 test_assignmentToFinal_localVariable_plusEq() async {
761 Source source = addSource(r''' 788 Source source = addSource(r'''
762 f() { 789 f() {
763 final x = 0; 790 final x = 0;
764 x += 1; 791 x += 1;
765 }'''); 792 }''');
766 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 793 await computeAnalysisResult(source);
794 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
767 verify([source]); 795 verify([source]);
768 } 796 }
769 797
770 test_assignmentToFinal_postfixMinusMinus() async { 798 test_assignmentToFinal_postfixMinusMinus() async {
771 Source source = addSource(r''' 799 Source source = addSource(r'''
772 f() { 800 f() {
773 final x = 0; 801 final x = 0;
774 x--; 802 x--;
775 }'''); 803 }''');
776 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 804 await computeAnalysisResult(source);
805 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
777 verify([source]); 806 verify([source]);
778 } 807 }
779 808
780 test_assignmentToFinal_postfixPlusPlus() async { 809 test_assignmentToFinal_postfixPlusPlus() async {
781 Source source = addSource(r''' 810 Source source = addSource(r'''
782 f() { 811 f() {
783 final x = 0; 812 final x = 0;
784 x++; 813 x++;
785 }'''); 814 }''');
786 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 815 await computeAnalysisResult(source);
816 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
787 verify([source]); 817 verify([source]);
788 } 818 }
789 819
790 test_assignmentToFinal_prefixMinusMinus() async { 820 test_assignmentToFinal_prefixMinusMinus() async {
791 Source source = addSource(r''' 821 Source source = addSource(r'''
792 f() { 822 f() {
793 final x = 0; 823 final x = 0;
794 --x; 824 --x;
795 }'''); 825 }''');
796 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 826 await computeAnalysisResult(source);
827 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
797 verify([source]); 828 verify([source]);
798 } 829 }
799 830
800 test_assignmentToFinal_prefixPlusPlus() async { 831 test_assignmentToFinal_prefixPlusPlus() async {
801 Source source = addSource(r''' 832 Source source = addSource(r'''
802 f() { 833 f() {
803 final x = 0; 834 final x = 0;
804 ++x; 835 ++x;
805 }'''); 836 }''');
806 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 837 await computeAnalysisResult(source);
838 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
807 verify([source]); 839 verify([source]);
808 } 840 }
809 841
810 test_assignmentToFinal_suffixMinusMinus() async { 842 test_assignmentToFinal_suffixMinusMinus() async {
811 Source source = addSource(r''' 843 Source source = addSource(r'''
812 f() { 844 f() {
813 final x = 0; 845 final x = 0;
814 x--; 846 x--;
815 }'''); 847 }''');
816 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 848 await computeAnalysisResult(source);
849 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
817 verify([source]); 850 verify([source]);
818 } 851 }
819 852
820 test_assignmentToFinal_suffixPlusPlus() async { 853 test_assignmentToFinal_suffixPlusPlus() async {
821 Source source = addSource(r''' 854 Source source = addSource(r'''
822 f() { 855 f() {
823 final x = 0; 856 final x = 0;
824 x++; 857 x++;
825 }'''); 858 }''');
826 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 859 await computeAnalysisResult(source);
860 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
827 verify([source]); 861 verify([source]);
828 } 862 }
829 863
830 test_assignmentToFinal_topLevelVariable() async { 864 test_assignmentToFinal_topLevelVariable() async {
831 Source source = addSource(r''' 865 Source source = addSource(r'''
832 final x = 0; 866 final x = 0;
833 f() { x = 1; }'''); 867 f() { x = 1; }''');
834 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 868 await computeAnalysisResult(source);
869 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
835 verify([source]); 870 verify([source]);
836 } 871 }
837 872
838 test_assignmentToFinalNoSetter_prefixedIdentifier() async { 873 test_assignmentToFinalNoSetter_prefixedIdentifier() async {
839 Source source = addSource(r''' 874 Source source = addSource(r'''
840 class A { 875 class A {
841 int get x => 0; 876 int get x => 0;
842 } 877 }
843 main() { 878 main() {
844 A a = new A(); 879 A a = new A();
845 a.x = 0; 880 a.x = 0;
846 }'''); 881 }''');
847 await assertErrors( 882 await computeAnalysisResult(source);
848 source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); 883 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]);
849 verify([source]); 884 verify([source]);
850 } 885 }
851 886
852 test_assignmentToFinalNoSetter_propertyAccess() async { 887 test_assignmentToFinalNoSetter_propertyAccess() async {
853 Source source = addSource(r''' 888 Source source = addSource(r'''
854 class A { 889 class A {
855 int get x => 0; 890 int get x => 0;
856 } 891 }
857 class B { 892 class B {
858 static A a; 893 static A a;
859 } 894 }
860 main() { 895 main() {
861 B.a.x = 0; 896 B.a.x = 0;
862 }'''); 897 }''');
863 await assertErrors( 898 await computeAnalysisResult(source);
864 source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); 899 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]);
865 verify([source]); 900 verify([source]);
866 } 901 }
867 902
868 test_assignmentToFunction() async { 903 test_assignmentToFunction() async {
869 Source source = addSource(r''' 904 Source source = addSource(r'''
870 f() {} 905 f() {}
871 main() { 906 main() {
872 f = null; 907 f = null;
873 }'''); 908 }''');
874 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]); 909 await computeAnalysisResult(source);
910 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]);
875 verify([source]); 911 verify([source]);
876 } 912 }
877 913
878 test_assignmentToMethod() async { 914 test_assignmentToMethod() async {
879 Source source = addSource(r''' 915 Source source = addSource(r'''
880 class A { 916 class A {
881 m() {} 917 m() {}
882 } 918 }
883 f(A a) { 919 f(A a) {
884 a.m = () {}; 920 a.m = () {};
885 }'''); 921 }''');
886 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]); 922 await computeAnalysisResult(source);
923 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]);
887 verify([source]); 924 verify([source]);
888 } 925 }
889 926
890 test_assignmentToTypedef() async { 927 test_assignmentToTypedef() async {
891 Source source = addSource(''' 928 Source source = addSource('''
892 typedef void F(); 929 typedef void F();
893 main() { 930 main() {
894 F = null; 931 F = null;
895 } 932 }
896 '''); 933 ''');
897 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); 934 await computeAnalysisResult(source);
935 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]);
898 } 936 }
899 937
900 test_assignmentToTypeParameter() async { 938 test_assignmentToTypeParameter() async {
901 Source source = addSource(''' 939 Source source = addSource('''
902 class C<T> { 940 class C<T> {
903 f() { 941 f() {
904 T = null; 942 T = null;
905 } 943 }
906 } 944 }
907 '''); 945 ''');
908 await assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]); 946 await computeAnalysisResult(source);
947 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_TYPE]);
909 } 948 }
910 949
911 test_caseBlockNotTerminated() async { 950 test_caseBlockNotTerminated() async {
912 Source source = addSource(r''' 951 Source source = addSource(r'''
913 f(int p) { 952 f(int p) {
914 switch (p) { 953 switch (p) {
915 case 0: 954 case 0:
916 f(p); 955 f(p);
917 case 1: 956 case 1:
918 break; 957 break;
919 } 958 }
920 }'''); 959 }''');
921 await assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]); 960 await computeAnalysisResult(source);
961 assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]);
922 verify([source]); 962 verify([source]);
923 } 963 }
924 964
925 test_castToNonType() async { 965 test_castToNonType() async {
926 Source source = addSource(r''' 966 Source source = addSource(r'''
927 var A = 0; 967 var A = 0;
928 f(String s) { var x = s as A; }'''); 968 f(String s) { var x = s as A; }''');
929 await assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]); 969 await computeAnalysisResult(source);
970 assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]);
930 verify([source]); 971 verify([source]);
931 } 972 }
932 973
933 test_concreteClassWithAbstractMember() async { 974 test_concreteClassWithAbstractMember() async {
934 Source source = addSource(r''' 975 Source source = addSource(r'''
935 class A { 976 class A {
936 m(); 977 m();
937 }'''); 978 }''');
938 await assertErrors( 979 await computeAnalysisResult(source);
980 assertErrors(
939 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); 981 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]);
940 verify([source]); 982 verify([source]);
941 } 983 }
942 984
943 test_concreteClassWithAbstractMember_noSuchMethod_interface() async { 985 test_concreteClassWithAbstractMember_noSuchMethod_interface() async {
944 Source source = addSource(r''' 986 Source source = addSource(r'''
945 class I { 987 class I {
946 noSuchMethod(v) => ''; 988 noSuchMethod(v) => '';
947 } 989 }
948 class A implements I { 990 class A implements I {
949 m(); 991 m();
950 }'''); 992 }''');
951 await assertErrors( 993 await computeAnalysisResult(source);
994 assertErrors(
952 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); 995 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]);
953 verify([source]); 996 verify([source]);
954 } 997 }
955 998
956 test_conflictingDartImport() async { 999 test_conflictingDartImport() async {
957 Source source = addSource(r''' 1000 Source source = addSource(r'''
958 import 'lib.dart'; 1001 import 'lib.dart';
959 import 'dart:async'; 1002 import 'dart:async';
960 Future f = null; 1003 Future f = null;
961 Stream s;'''); 1004 Stream s;''');
962 addNamedSource( 1005 addNamedSource(
963 "/lib.dart", 1006 "/lib.dart",
964 r''' 1007 r'''
965 library lib; 1008 library lib;
966 class Future {}'''); 1009 class Future {}''');
967 await assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); 1010 await computeAnalysisResult(source);
1011 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]);
968 } 1012 }
969 1013
970 test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() as ync { 1014 test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() as ync {
971 Source source = addSource(r''' 1015 Source source = addSource(r'''
972 class A { 1016 class A {
973 static set v(x) {} 1017 static set v(x) {}
974 } 1018 }
975 class B extends A { 1019 class B extends A {
976 var v; 1020 var v;
977 }'''); 1021 }''');
978 await assertErrors(source, 1022 await computeAnalysisResult(source);
1023 assertErrors(source,
979 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1024 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
980 verify([source]); 1025 verify([source]);
981 } 1026 }
982 1027
983 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() a sync { 1028 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() a sync {
984 Source source = addSource(r''' 1029 Source source = addSource(r'''
985 class A { 1030 class A {
986 static get v => 0; 1031 static get v => 0;
987 } 1032 }
988 class B extends A { 1033 class B extends A {
989 get v => 0; 1034 get v => 0;
990 }'''); 1035 }''');
991 await assertErrors(source, 1036 await computeAnalysisResult(source);
1037 assertErrors(source,
992 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1038 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
993 verify([source]); 1039 verify([source]);
994 } 1040 }
995 1041
996 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() a sync { 1042 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() a sync {
997 Source source = addSource(r''' 1043 Source source = addSource(r'''
998 class A { 1044 class A {
999 static v() {} 1045 static v() {}
1000 } 1046 }
1001 class B extends A { 1047 class B extends A {
1002 get v => 0; 1048 get v => 0;
1003 }'''); 1049 }''');
1004 await assertErrors(source, 1050 await computeAnalysisResult(source);
1051 assertErrors(source,
1005 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1052 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
1006 verify([source]); 1053 verify([source]);
1007 } 1054 }
1008 1055
1009 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() a sync { 1056 test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() a sync {
1010 Source source = addSource(r''' 1057 Source source = addSource(r'''
1011 class A { 1058 class A {
1012 static set v(x) {} 1059 static set v(x) {}
1013 } 1060 }
1014 class B extends A { 1061 class B extends A {
1015 get v => 0; 1062 get v => 0;
1016 }'''); 1063 }''');
1017 await assertErrors(source, 1064 await computeAnalysisResult(source);
1065 assertErrors(source,
1018 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1066 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
1019 verify([source]); 1067 verify([source]);
1020 } 1068 }
1021 1069
1022 test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() async { 1070 test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() async {
1023 Source source = addSource(r''' 1071 Source source = addSource(r'''
1024 class A { 1072 class A {
1025 static int v; 1073 static int v;
1026 } 1074 }
1027 class B extends A {} 1075 class B extends A {}
1028 class C extends B { 1076 class C extends B {
1029 get v => 0; 1077 get v => 0;
1030 }'''); 1078 }''');
1031 await assertErrors(source, 1079 await computeAnalysisResult(source);
1080 assertErrors(source,
1032 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1081 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
1033 verify([source]); 1082 verify([source]);
1034 } 1083 }
1035 1084
1036 test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() async { 1085 test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() async {
1037 Source source = addSource(r''' 1086 Source source = addSource(r'''
1038 class M { 1087 class M {
1039 static int v; 1088 static int v;
1040 } 1089 }
1041 class B extends Object with M { 1090 class B extends Object with M {
1042 get v => 0; 1091 get v => 0;
1043 }'''); 1092 }''');
1044 await assertErrors(source, 1093 await computeAnalysisResult(source);
1094 assertErrors(source,
1045 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1095 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
1046 verify([source]); 1096 verify([source]);
1047 } 1097 }
1048 1098
1049 test_conflictingInstanceGetterAndSuperclassMember_direct_field() async { 1099 test_conflictingInstanceGetterAndSuperclassMember_direct_field() async {
1050 Source source = addSource(r''' 1100 Source source = addSource(r'''
1051 class A { 1101 class A {
1052 static int v; 1102 static int v;
1053 } 1103 }
1054 class B extends A { 1104 class B extends A {
1055 get v => 0; 1105 get v => 0;
1056 }'''); 1106 }''');
1057 await assertErrors(source, 1107 await computeAnalysisResult(source);
1108 assertErrors(source,
1058 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); 1109 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
1059 verify([source]); 1110 verify([source]);
1060 } 1111 }
1061 1112
1062 test_conflictingInstanceMethodSetter2() async { 1113 test_conflictingInstanceMethodSetter2() async {
1063 Source source = addSource(r''' 1114 Source source = addSource(r'''
1064 class A { 1115 class A {
1065 foo() {} 1116 foo() {}
1066 set foo(a) {} 1117 set foo(a) {}
1067 }'''); 1118 }''');
1068 await assertErrors( 1119 await computeAnalysisResult(source);
1120 assertErrors(
1069 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2]); 1121 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2]);
1070 verify([source]); 1122 verify([source]);
1071 } 1123 }
1072 1124
1073 test_conflictingInstanceMethodSetter_sameClass() async { 1125 test_conflictingInstanceMethodSetter_sameClass() async {
1074 Source source = addSource(r''' 1126 Source source = addSource(r'''
1075 class A { 1127 class A {
1076 set foo(a) {} 1128 set foo(a) {}
1077 foo() {} 1129 foo() {}
1078 }'''); 1130 }''');
1079 await assertErrors( 1131 await computeAnalysisResult(source);
1132 assertErrors(
1080 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); 1133 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]);
1081 verify([source]); 1134 verify([source]);
1082 } 1135 }
1083 1136
1084 test_conflictingInstanceMethodSetter_setterInInterface() async { 1137 test_conflictingInstanceMethodSetter_setterInInterface() async {
1085 Source source = addSource(r''' 1138 Source source = addSource(r'''
1086 abstract class A { 1139 abstract class A {
1087 set foo(a); 1140 set foo(a);
1088 } 1141 }
1089 abstract class B implements A { 1142 abstract class B implements A {
1090 foo() {} 1143 foo() {}
1091 }'''); 1144 }''');
1092 await assertErrors( 1145 await computeAnalysisResult(source);
1146 assertErrors(
1093 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); 1147 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]);
1094 verify([source]); 1148 verify([source]);
1095 } 1149 }
1096 1150
1097 test_conflictingInstanceMethodSetter_setterInSuper() async { 1151 test_conflictingInstanceMethodSetter_setterInSuper() async {
1098 Source source = addSource(r''' 1152 Source source = addSource(r'''
1099 class A { 1153 class A {
1100 set foo(a) {} 1154 set foo(a) {}
1101 } 1155 }
1102 class B extends A { 1156 class B extends A {
1103 foo() {} 1157 foo() {}
1104 }'''); 1158 }''');
1105 await assertErrors( 1159 await computeAnalysisResult(source);
1160 assertErrors(
1106 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]); 1161 source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]);
1107 verify([source]); 1162 verify([source]);
1108 } 1163 }
1109 1164
1110 test_conflictingInstanceSetterAndSuperclassMember() async { 1165 test_conflictingInstanceSetterAndSuperclassMember() async {
1111 Source source = addSource(r''' 1166 Source source = addSource(r'''
1112 class A { 1167 class A {
1113 static int v; 1168 static int v;
1114 } 1169 }
1115 class B extends A { 1170 class B extends A {
1116 set v(x) {} 1171 set v(x) {}
1117 }'''); 1172 }''');
1118 await assertErrors(source, 1173 await computeAnalysisResult(source);
1174 assertErrors(source,
1119 [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER]); 1175 [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER]);
1120 verify([source]); 1176 verify([source]);
1121 } 1177 }
1122 1178
1123 test_conflictingStaticGetterAndInstanceSetter_mixin() async { 1179 test_conflictingStaticGetterAndInstanceSetter_mixin() async {
1124 Source source = addSource(r''' 1180 Source source = addSource(r'''
1125 class A { 1181 class A {
1126 set x(int p) {} 1182 set x(int p) {}
1127 } 1183 }
1128 class B extends Object with A { 1184 class B extends Object with A {
1129 static get x => 0; 1185 static get x => 0;
1130 }'''); 1186 }''');
1131 await assertErrors(source, 1187 await computeAnalysisResult(source);
1188 assertErrors(source,
1132 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); 1189 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]);
1133 verify([source]); 1190 verify([source]);
1134 } 1191 }
1135 1192
1136 test_conflictingStaticGetterAndInstanceSetter_superClass() async { 1193 test_conflictingStaticGetterAndInstanceSetter_superClass() async {
1137 Source source = addSource(r''' 1194 Source source = addSource(r'''
1138 class A { 1195 class A {
1139 set x(int p) {} 1196 set x(int p) {}
1140 } 1197 }
1141 class B extends A { 1198 class B extends A {
1142 static get x => 0; 1199 static get x => 0;
1143 }'''); 1200 }''');
1144 await assertErrors(source, 1201 await computeAnalysisResult(source);
1202 assertErrors(source,
1145 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); 1203 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]);
1146 verify([source]); 1204 verify([source]);
1147 } 1205 }
1148 1206
1149 test_conflictingStaticGetterAndInstanceSetter_thisClass() async { 1207 test_conflictingStaticGetterAndInstanceSetter_thisClass() async {
1150 Source source = addSource(r''' 1208 Source source = addSource(r'''
1151 class A { 1209 class A {
1152 static get x => 0; 1210 static get x => 0;
1153 set x(int p) {} 1211 set x(int p) {}
1154 }'''); 1212 }''');
1155 await assertErrors(source, 1213 await computeAnalysisResult(source);
1214 assertErrors(source,
1156 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); 1215 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]);
1157 verify([source]); 1216 verify([source]);
1158 } 1217 }
1159 1218
1160 test_conflictingStaticSetterAndInstanceMember_thisClass_getter() async { 1219 test_conflictingStaticSetterAndInstanceMember_thisClass_getter() async {
1161 Source source = addSource(r''' 1220 Source source = addSource(r'''
1162 class A { 1221 class A {
1163 get x => 0; 1222 get x => 0;
1164 static set x(int p) {} 1223 static set x(int p) {}
1165 }'''); 1224 }''');
1166 await assertErrors(source, 1225 await computeAnalysisResult(source);
1226 assertErrors(source,
1167 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); 1227 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]);
1168 verify([source]); 1228 verify([source]);
1169 } 1229 }
1170 1230
1171 test_conflictingStaticSetterAndInstanceMember_thisClass_method() async { 1231 test_conflictingStaticSetterAndInstanceMember_thisClass_method() async {
1172 Source source = addSource(r''' 1232 Source source = addSource(r'''
1173 class A { 1233 class A {
1174 x() {} 1234 x() {}
1175 static set x(int p) {} 1235 static set x(int p) {}
1176 }'''); 1236 }''');
1177 await assertErrors(source, 1237 await computeAnalysisResult(source);
1238 assertErrors(source,
1178 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); 1239 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]);
1179 verify([source]); 1240 verify([source]);
1180 } 1241 }
1181 1242
1182 test_constWithAbstractClass() async { 1243 test_constWithAbstractClass() async {
1183 Source source = addSource(r''' 1244 Source source = addSource(r'''
1184 abstract class A { 1245 abstract class A {
1185 const A(); 1246 const A();
1186 } 1247 }
1187 void f() { 1248 void f() {
1188 A a = const A(); 1249 A a = const A();
1189 }'''); 1250 }''');
1190 await assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]); 1251 await computeAnalysisResult(source);
1252 assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]);
1191 verify([source]); 1253 verify([source]);
1192 } 1254 }
1193 1255
1194 test_equalKeysInMap() async { 1256 test_equalKeysInMap() async {
1195 Source source = addSource("var m = {'a' : 0, 'b' : 1, 'a' : 2};"); 1257 Source source = addSource("var m = {'a' : 0, 'b' : 1, 'a' : 2};");
1196 await assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); 1258 await computeAnalysisResult(source);
1259 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]);
1197 verify([source]); 1260 verify([source]);
1198 } 1261 }
1199 1262
1200 test_equalKeysInMap_withEqualTypeParams() async { 1263 test_equalKeysInMap_withEqualTypeParams() async {
1201 Source source = addSource(r''' 1264 Source source = addSource(r'''
1202 class A<T> { 1265 class A<T> {
1203 const A(); 1266 const A();
1204 } 1267 }
1205 var m = {const A<int>(): 0, const A<int>(): 1};'''); 1268 var m = {const A<int>(): 0, const A<int>(): 1};''');
1206 await assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); 1269 await computeAnalysisResult(source);
1270 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]);
1207 verify([source]); 1271 verify([source]);
1208 } 1272 }
1209 1273
1210 test_equalKeysInMap_withUnequalTypeParams() async { 1274 test_equalKeysInMap_withUnequalTypeParams() async {
1211 // No error should be produced because A<int> and A<num> are different 1275 // No error should be produced because A<int> and A<num> are different
1212 // types. 1276 // types.
1213 Source source = addSource(r''' 1277 Source source = addSource(r'''
1214 class A<T> { 1278 class A<T> {
1215 const A(); 1279 const A();
1216 } 1280 }
1217 var m = {const A<int>(): 0, const A<num>(): 1};'''); 1281 var m = {const A<int>(): 0, const A<num>(): 1};''');
1218 await assertNoErrors(source); 1282 await computeAnalysisResult(source);
1283 assertNoErrors(source);
1219 verify([source]); 1284 verify([source]);
1220 } 1285 }
1221 1286
1222 test_exportDuplicatedLibraryNamed() async { 1287 test_exportDuplicatedLibraryNamed() async {
1223 Source source = addSource(r''' 1288 Source source = addSource(r'''
1224 library test; 1289 library test;
1225 export 'lib1.dart'; 1290 export 'lib1.dart';
1226 export 'lib2.dart';'''); 1291 export 'lib2.dart';''');
1227 addNamedSource("/lib1.dart", "library lib;"); 1292 addNamedSource("/lib1.dart", "library lib;");
1228 addNamedSource("/lib2.dart", "library lib;"); 1293 addNamedSource("/lib2.dart", "library lib;");
1229 await assertErrors( 1294 await computeAnalysisResult(source);
1230 source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAMED]); 1295 assertErrors(source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAMED]);
1231 verify([source]); 1296 verify([source]);
1232 } 1297 }
1233 1298
1234 test_extraPositionalArguments() async { 1299 test_extraPositionalArguments() async {
1235 Source source = addSource(r''' 1300 Source source = addSource(r'''
1236 f() {} 1301 f() {}
1237 main() { 1302 main() {
1238 f(0, 1, '2'); 1303 f(0, 1, '2');
1239 }'''); 1304 }''');
1240 await assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); 1305 await computeAnalysisResult(source);
1306 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]);
1241 verify([source]); 1307 verify([source]);
1242 } 1308 }
1243 1309
1244 test_extraPositionalArguments_functionExpression() async { 1310 test_extraPositionalArguments_functionExpression() async {
1245 Source source = addSource(r''' 1311 Source source = addSource(r'''
1246 main() { 1312 main() {
1247 (int x) {} (0, 1); 1313 (int x) {} (0, 1);
1248 }'''); 1314 }''');
1249 await assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); 1315 await computeAnalysisResult(source);
1316 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]);
1250 verify([source]); 1317 verify([source]);
1251 } 1318 }
1252 1319
1253 test_fieldInitializedInInitializerAndDeclaration_final() async { 1320 test_fieldInitializedInInitializerAndDeclaration_final() async {
1254 Source source = addSource(r''' 1321 Source source = addSource(r'''
1255 class A { 1322 class A {
1256 final int x = 0; 1323 final int x = 0;
1257 A() : x = 1 {} 1324 A() : x = 1 {}
1258 }'''); 1325 }''');
1259 await assertErrors(source, 1326 await computeAnalysisResult(source);
1327 assertErrors(source,
1260 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); 1328 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]);
1261 verify([source]); 1329 verify([source]);
1262 } 1330 }
1263 1331
1264 test_fieldInitializerNotAssignable() async { 1332 test_fieldInitializerNotAssignable() async {
1265 Source source = addSource(r''' 1333 Source source = addSource(r'''
1266 class A { 1334 class A {
1267 int x; 1335 int x;
1268 A() : x = ''; 1336 A() : x = '';
1269 }'''); 1337 }''');
1270 await assertErrors( 1338 await computeAnalysisResult(source);
1271 source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]); 1339 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]);
1272 verify([source]); 1340 verify([source]);
1273 } 1341 }
1274 1342
1275 test_fieldInitializingFormalNotAssignable() async { 1343 test_fieldInitializingFormalNotAssignable() async {
1276 Source source = addSource(r''' 1344 Source source = addSource(r'''
1277 class A { 1345 class A {
1278 int x; 1346 int x;
1279 A(String this.x) {} 1347 A(String this.x) {}
1280 }'''); 1348 }''');
1281 await assertErrors( 1349 await computeAnalysisResult(source);
1350 assertErrors(
1282 source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE]); 1351 source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE]);
1283 verify([source]); 1352 verify([source]);
1284 } 1353 }
1285 1354
1286 /** 1355 /**
1287 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR code, but tests the 1356 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR code, but tests the
1288 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid ed here to show 1357 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid ed here to show
1289 * coverage over all of the permutations of initializers in constructor declar ations. 1358 * coverage over all of the permutations of initializers in constructor declar ations.
1290 * 1359 *
1291 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of 1360 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of
1292 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w e use it instead of 1361 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w e use it instead of
1293 * the broader code 1362 * the broader code
1294 */ 1363 */
1295 test_finalInitializedInDeclarationAndConstructor_initializers() async { 1364 test_finalInitializedInDeclarationAndConstructor_initializers() async {
1296 Source source = addSource(r''' 1365 Source source = addSource(r'''
1297 class A { 1366 class A {
1298 final x = 0; 1367 final x = 0;
1299 A() : x = 0 {} 1368 A() : x = 0 {}
1300 }'''); 1369 }''');
1301 await assertErrors(source, 1370 await computeAnalysisResult(source);
1371 assertErrors(source,
1302 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); 1372 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]);
1303 verify([source]); 1373 verify([source]);
1304 } 1374 }
1305 1375
1306 test_finalInitializedInDeclarationAndConstructor_initializingFormal() async { 1376 test_finalInitializedInDeclarationAndConstructor_initializingFormal() async {
1307 Source source = addSource(r''' 1377 Source source = addSource(r'''
1308 class A { 1378 class A {
1309 final x = 0; 1379 final x = 0;
1310 A(this.x) {} 1380 A(this.x) {}
1311 }'''); 1381 }''');
1312 await assertErrors(source, 1382 await computeAnalysisResult(source);
1383 assertErrors(source,
1313 [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR]); 1384 [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR]);
1314 verify([source]); 1385 verify([source]);
1315 } 1386 }
1316 1387
1317 test_finalNotInitialized_inConstructor_1() async { 1388 test_finalNotInitialized_inConstructor_1() async {
1318 Source source = addSource(r''' 1389 Source source = addSource(r'''
1319 class A { 1390 class A {
1320 final int x; 1391 final int x;
1321 A() {} 1392 A() {}
1322 }'''); 1393 }''');
1323 await assertErrors( 1394 await computeAnalysisResult(source);
1395 assertErrors(
1324 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1]); 1396 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1]);
1325 verify([source]); 1397 verify([source]);
1326 } 1398 }
1327 1399
1328 test_finalNotInitialized_inConstructor_2() async { 1400 test_finalNotInitialized_inConstructor_2() async {
1329 Source source = addSource(r''' 1401 Source source = addSource(r'''
1330 class A { 1402 class A {
1331 final int a; 1403 final int a;
1332 final int b; 1404 final int b;
1333 A() {} 1405 A() {}
1334 }'''); 1406 }''');
1335 await assertErrors( 1407 await computeAnalysisResult(source);
1408 assertErrors(
1336 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2]); 1409 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2]);
1337 verify([source]); 1410 verify([source]);
1338 } 1411 }
1339 1412
1340 test_finalNotInitialized_inConstructor_3() async { 1413 test_finalNotInitialized_inConstructor_3() async {
1341 Source source = addSource(r''' 1414 Source source = addSource(r'''
1342 class A { 1415 class A {
1343 final int a; 1416 final int a;
1344 final int b; 1417 final int b;
1345 final int c; 1418 final int c;
1346 A() {} 1419 A() {}
1347 }'''); 1420 }''');
1348 await assertErrors( 1421 await computeAnalysisResult(source);
1422 assertErrors(
1349 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS]); 1423 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS]);
1350 verify([source]); 1424 verify([source]);
1351 } 1425 }
1352 1426
1353 test_finalNotInitialized_instanceField_final() async { 1427 test_finalNotInitialized_instanceField_final() async {
1354 Source source = addSource(r''' 1428 Source source = addSource(r'''
1355 class A { 1429 class A {
1356 final F; 1430 final F;
1357 }'''); 1431 }''');
1358 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1432 await computeAnalysisResult(source);
1433 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1359 verify([source]); 1434 verify([source]);
1360 } 1435 }
1361 1436
1362 test_finalNotInitialized_instanceField_final_static() async { 1437 test_finalNotInitialized_instanceField_final_static() async {
1363 Source source = addSource(r''' 1438 Source source = addSource(r'''
1364 class A { 1439 class A {
1365 static final F; 1440 static final F;
1366 }'''); 1441 }''');
1367 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1442 await computeAnalysisResult(source);
1443 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1368 verify([source]); 1444 verify([source]);
1369 } 1445 }
1370 1446
1371 test_finalNotInitialized_library_final() async { 1447 test_finalNotInitialized_library_final() async {
1372 Source source = addSource("final F;"); 1448 Source source = addSource("final F;");
1373 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1449 await computeAnalysisResult(source);
1450 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1374 verify([source]); 1451 verify([source]);
1375 } 1452 }
1376 1453
1377 test_finalNotInitialized_local_final() async { 1454 test_finalNotInitialized_local_final() async {
1378 Source source = addSource(r''' 1455 Source source = addSource(r'''
1379 f() { 1456 f() {
1380 final int x; 1457 final int x;
1381 }'''); 1458 }''');
1382 await assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1459 await computeAnalysisResult(source);
1460 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1383 verify([source]); 1461 verify([source]);
1384 } 1462 }
1385 1463
1386 test_functionWithoutCall_direct() async { 1464 test_functionWithoutCall_direct() async {
1387 Source source = addSource(r''' 1465 Source source = addSource(r'''
1388 class A implements Function { 1466 class A implements Function {
1389 }'''); 1467 }''');
1390 await assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); 1468 await computeAnalysisResult(source);
1469 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
1391 verify([source]); 1470 verify([source]);
1392 } 1471 }
1393 1472
1394 test_functionWithoutCall_indirect_extends() async { 1473 test_functionWithoutCall_indirect_extends() async {
1395 Source source = addSource(r''' 1474 Source source = addSource(r'''
1396 abstract class A implements Function { 1475 abstract class A implements Function {
1397 } 1476 }
1398 class B extends A { 1477 class B extends A {
1399 }'''); 1478 }''');
1400 await assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); 1479 await computeAnalysisResult(source);
1480 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
1401 verify([source]); 1481 verify([source]);
1402 } 1482 }
1403 1483
1404 test_functionWithoutCall_indirect_implements() async { 1484 test_functionWithoutCall_indirect_implements() async {
1405 Source source = addSource(r''' 1485 Source source = addSource(r'''
1406 abstract class A implements Function { 1486 abstract class A implements Function {
1407 } 1487 }
1408 class B implements A { 1488 class B implements A {
1409 }'''); 1489 }''');
1410 await assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); 1490 await computeAnalysisResult(source);
1491 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
1411 verify([source]); 1492 verify([source]);
1412 } 1493 }
1413 1494
1414 test_importDuplicatedLibraryNamed() async { 1495 test_importDuplicatedLibraryNamed() async {
1415 Source source = addSource(r''' 1496 Source source = addSource(r'''
1416 library test; 1497 library test;
1417 import 'lib1.dart'; 1498 import 'lib1.dart';
1418 import 'lib2.dart';'''); 1499 import 'lib2.dart';''');
1419 addNamedSource("/lib1.dart", "library lib;"); 1500 addNamedSource("/lib1.dart", "library lib;");
1420 addNamedSource("/lib2.dart", "library lib;"); 1501 addNamedSource("/lib2.dart", "library lib;");
1421 await assertErrors(source, [ 1502 await computeAnalysisResult(source);
1503 assertErrors(source, [
1422 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED, 1504 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED,
1423 HintCode.UNUSED_IMPORT, 1505 HintCode.UNUSED_IMPORT,
1424 HintCode.UNUSED_IMPORT 1506 HintCode.UNUSED_IMPORT
1425 ]); 1507 ]);
1426 verify([source]); 1508 verify([source]);
1427 } 1509 }
1428 1510
1429 test_importOfNonLibrary() async { 1511 test_importOfNonLibrary() async {
1430 await resolveWithErrors(<String>[ 1512 await resolveWithErrors(<String>[
1431 r''' 1513 r'''
(...skipping 11 matching lines...) Expand all
1443 test_inconsistentMethodInheritanceGetterAndMethod() async { 1525 test_inconsistentMethodInheritanceGetterAndMethod() async {
1444 Source source = addSource(r''' 1526 Source source = addSource(r'''
1445 abstract class A { 1527 abstract class A {
1446 int x(); 1528 int x();
1447 } 1529 }
1448 abstract class B { 1530 abstract class B {
1449 int get x; 1531 int get x;
1450 } 1532 }
1451 class C implements A, B { 1533 class C implements A, B {
1452 }'''); 1534 }''');
1453 await assertErrors(source, 1535 await computeAnalysisResult(source);
1536 assertErrors(source,
1454 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); 1537 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
1455 verify([source]); 1538 verify([source]);
1456 } 1539 }
1457 1540
1458 test_instanceMethodNameCollidesWithSuperclassStatic_field() async { 1541 test_instanceMethodNameCollidesWithSuperclassStatic_field() async {
1459 Source source = addSource(r''' 1542 Source source = addSource(r'''
1460 class A { 1543 class A {
1461 static var n; 1544 static var n;
1462 } 1545 }
1463 class B extends A { 1546 class B extends A {
1464 void n() {} 1547 void n() {}
1465 }'''); 1548 }''');
1466 await assertErrors(source, [ 1549 await computeAnalysisResult(source);
1550 assertErrors(source, [
1467 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1551 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1468 ]); 1552 ]);
1469 verify([source]); 1553 verify([source]);
1470 } 1554 }
1471 1555
1472 test_instanceMethodNameCollidesWithSuperclassStatic_field2() async { 1556 test_instanceMethodNameCollidesWithSuperclassStatic_field2() async {
1473 Source source = addSource(r''' 1557 Source source = addSource(r'''
1474 class A { 1558 class A {
1475 static var n; 1559 static var n;
1476 } 1560 }
1477 class B extends A { 1561 class B extends A {
1478 } 1562 }
1479 class C extends B { 1563 class C extends B {
1480 void n() {} 1564 void n() {}
1481 }'''); 1565 }''');
1482 await assertErrors(source, [ 1566 await computeAnalysisResult(source);
1567 assertErrors(source, [
1483 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1568 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1484 ]); 1569 ]);
1485 verify([source]); 1570 verify([source]);
1486 } 1571 }
1487 1572
1488 test_instanceMethodNameCollidesWithSuperclassStatic_getter() async { 1573 test_instanceMethodNameCollidesWithSuperclassStatic_getter() async {
1489 Source source = addSource(r''' 1574 Source source = addSource(r'''
1490 class A { 1575 class A {
1491 static get n {return 0;} 1576 static get n {return 0;}
1492 } 1577 }
1493 class B extends A { 1578 class B extends A {
1494 void n() {} 1579 void n() {}
1495 }'''); 1580 }''');
1496 await assertErrors(source, [ 1581 await computeAnalysisResult(source);
1582 assertErrors(source, [
1497 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1583 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1498 ]); 1584 ]);
1499 verify([source]); 1585 verify([source]);
1500 } 1586 }
1501 1587
1502 test_instanceMethodNameCollidesWithSuperclassStatic_getter2() async { 1588 test_instanceMethodNameCollidesWithSuperclassStatic_getter2() async {
1503 Source source = addSource(r''' 1589 Source source = addSource(r'''
1504 class A { 1590 class A {
1505 static get n {return 0;} 1591 static get n {return 0;}
1506 } 1592 }
1507 class B extends A { 1593 class B extends A {
1508 } 1594 }
1509 class C extends B { 1595 class C extends B {
1510 void n() {} 1596 void n() {}
1511 }'''); 1597 }''');
1512 await assertErrors(source, [ 1598 await computeAnalysisResult(source);
1599 assertErrors(source, [
1513 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1600 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1514 ]); 1601 ]);
1515 verify([source]); 1602 verify([source]);
1516 } 1603 }
1517 1604
1518 test_instanceMethodNameCollidesWithSuperclassStatic_interface() async { 1605 test_instanceMethodNameCollidesWithSuperclassStatic_interface() async {
1519 Source source = addSource(r''' 1606 Source source = addSource(r'''
1520 class Base { 1607 class Base {
1521 static foo() {} 1608 static foo() {}
1522 } 1609 }
1523 abstract class Ifc { 1610 abstract class Ifc {
1524 foo(); 1611 foo();
1525 } 1612 }
1526 class C extends Base implements Ifc { 1613 class C extends Base implements Ifc {
1527 foo() {} 1614 foo() {}
1528 } 1615 }
1529 '''); 1616 ''');
1530 await assertErrors(source, [ 1617 await computeAnalysisResult(source);
1618 assertErrors(source, [
1531 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1619 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1532 ]); 1620 ]);
1533 verify([source]); 1621 verify([source]);
1534 } 1622 }
1535 1623
1536 test_instanceMethodNameCollidesWithSuperclassStatic_method() async { 1624 test_instanceMethodNameCollidesWithSuperclassStatic_method() async {
1537 Source source = addSource(r''' 1625 Source source = addSource(r'''
1538 class A { 1626 class A {
1539 static n () {} 1627 static n () {}
1540 } 1628 }
1541 class B extends A { 1629 class B extends A {
1542 void n() {} 1630 void n() {}
1543 }'''); 1631 }''');
1544 await assertErrors(source, [ 1632 await computeAnalysisResult(source);
1633 assertErrors(source, [
1545 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1634 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1546 ]); 1635 ]);
1547 verify([source]); 1636 verify([source]);
1548 } 1637 }
1549 1638
1550 test_instanceMethodNameCollidesWithSuperclassStatic_method2() async { 1639 test_instanceMethodNameCollidesWithSuperclassStatic_method2() async {
1551 Source source = addSource(r''' 1640 Source source = addSource(r'''
1552 class A { 1641 class A {
1553 static n () {} 1642 static n () {}
1554 } 1643 }
1555 class B extends A { 1644 class B extends A {
1556 } 1645 }
1557 class C extends B { 1646 class C extends B {
1558 void n() {} 1647 void n() {}
1559 }'''); 1648 }''');
1560 await assertErrors(source, [ 1649 await computeAnalysisResult(source);
1650 assertErrors(source, [
1561 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1651 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1562 ]); 1652 ]);
1563 verify([source]); 1653 verify([source]);
1564 } 1654 }
1565 1655
1566 test_instanceMethodNameCollidesWithSuperclassStatic_setter() async { 1656 test_instanceMethodNameCollidesWithSuperclassStatic_setter() async {
1567 Source source = addSource(r''' 1657 Source source = addSource(r'''
1568 class A { 1658 class A {
1569 static set n(int x) {} 1659 static set n(int x) {}
1570 } 1660 }
1571 class B extends A { 1661 class B extends A {
1572 void n() {} 1662 void n() {}
1573 }'''); 1663 }''');
1574 await assertErrors(source, [ 1664 await computeAnalysisResult(source);
1665 assertErrors(source, [
1575 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1666 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1576 ]); 1667 ]);
1577 verify([source]); 1668 verify([source]);
1578 } 1669 }
1579 1670
1580 test_instanceMethodNameCollidesWithSuperclassStatic_setter2() async { 1671 test_instanceMethodNameCollidesWithSuperclassStatic_setter2() async {
1581 Source source = addSource(r''' 1672 Source source = addSource(r'''
1582 class A { 1673 class A {
1583 static set n(int x) {} 1674 static set n(int x) {}
1584 } 1675 }
1585 class B extends A { 1676 class B extends A {
1586 } 1677 }
1587 class C extends B { 1678 class C extends B {
1588 void n() {} 1679 void n() {}
1589 }'''); 1680 }''');
1590 await assertErrors(source, [ 1681 await computeAnalysisResult(source);
1682 assertErrors(source, [
1591 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC 1683 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC
1592 ]); 1684 ]);
1593 verify([source]); 1685 verify([source]);
1594 } 1686 }
1595 1687
1596 test_invalidGetterOverrideReturnType() async { 1688 test_invalidGetterOverrideReturnType() async {
1597 Source source = addSource(r''' 1689 Source source = addSource(r'''
1598 class A { 1690 class A {
1599 int get g { return 0; } 1691 int get g { return 0; }
1600 } 1692 }
1601 class B extends A { 1693 class B extends A {
1602 String get g { return 'a'; } 1694 String get g { return 'a'; }
1603 }'''); 1695 }''');
1604 await assertErrors( 1696 await computeAnalysisResult(source);
1697 assertErrors(
1605 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); 1698 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
1606 verify([source]); 1699 verify([source]);
1607 } 1700 }
1608 1701
1609 test_invalidGetterOverrideReturnType_implicit() async { 1702 test_invalidGetterOverrideReturnType_implicit() async {
1610 Source source = addSource(r''' 1703 Source source = addSource(r'''
1611 class A { 1704 class A {
1612 String f; 1705 String f;
1613 } 1706 }
1614 class B extends A { 1707 class B extends A {
1615 int f; 1708 int f;
1616 }'''); 1709 }''');
1617 await assertErrors(source, [ 1710 await computeAnalysisResult(source);
1711 assertErrors(source, [
1618 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE, 1712 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE,
1619 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE 1713 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE
1620 ]); 1714 ]);
1621 verify([source]); 1715 verify([source]);
1622 } 1716 }
1623 1717
1624 test_invalidGetterOverrideReturnType_twoInterfaces() async { 1718 test_invalidGetterOverrideReturnType_twoInterfaces() async {
1625 // test from language/override_inheritance_field_test_11.dart 1719 // test from language/override_inheritance_field_test_11.dart
1626 Source source = addSource(r''' 1720 Source source = addSource(r'''
1627 abstract class I { 1721 abstract class I {
1628 int get getter => null; 1722 int get getter => null;
1629 } 1723 }
1630 abstract class J { 1724 abstract class J {
1631 num get getter => null; 1725 num get getter => null;
1632 } 1726 }
1633 abstract class A implements I, J {} 1727 abstract class A implements I, J {}
1634 class B extends A { 1728 class B extends A {
1635 String get getter => null; 1729 String get getter => null;
1636 }'''); 1730 }''');
1637 await assertErrors( 1731 await computeAnalysisResult(source);
1732 assertErrors(
1638 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); 1733 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
1639 verify([source]); 1734 verify([source]);
1640 } 1735 }
1641 1736
1642 test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() async { 1737 test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() async {
1643 Source source = addSource(r''' 1738 Source source = addSource(r'''
1644 abstract class I<U> { 1739 abstract class I<U> {
1645 U get g => null; 1740 U get g => null;
1646 } 1741 }
1647 abstract class J<V> { 1742 abstract class J<V> {
1648 V get g => null; 1743 V get g => null;
1649 } 1744 }
1650 class B implements I<int>, J<String> { 1745 class B implements I<int>, J<String> {
1651 double get g => null; 1746 double get g => null;
1652 }'''); 1747 }''');
1653 await assertErrors( 1748 await computeAnalysisResult(source);
1749 assertErrors(
1654 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]); 1750 source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
1655 verify([source]); 1751 verify([source]);
1656 } 1752 }
1657 1753
1658 test_invalidMethodOverrideNamedParamType() async { 1754 test_invalidMethodOverrideNamedParamType() async {
1659 Source source = addSource(r''' 1755 Source source = addSource(r'''
1660 class A { 1756 class A {
1661 m({int a}) {} 1757 m({int a}) {}
1662 } 1758 }
1663 class B implements A { 1759 class B implements A {
1664 m({String a}) {} 1760 m({String a}) {}
1665 }'''); 1761 }''');
1666 await assertErrors( 1762 await computeAnalysisResult(source);
1763 assertErrors(
1667 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE]); 1764 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE]);
1668 verify([source]); 1765 verify([source]);
1669 } 1766 }
1670 1767
1671 test_invalidMethodOverrideNormalParamType_interface() async { 1768 test_invalidMethodOverrideNormalParamType_interface() async {
1672 Source source = addSource(r''' 1769 Source source = addSource(r'''
1673 class A { 1770 class A {
1674 m(int a) {} 1771 m(int a) {}
1675 } 1772 }
1676 class B implements A { 1773 class B implements A {
1677 m(String a) {} 1774 m(String a) {}
1678 }'''); 1775 }''');
1679 await assertErrors( 1776 await computeAnalysisResult(source);
1777 assertErrors(
1680 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); 1778 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
1681 verify([source]); 1779 verify([source]);
1682 } 1780 }
1683 1781
1684 test_invalidMethodOverrideNormalParamType_superclass() async { 1782 test_invalidMethodOverrideNormalParamType_superclass() async {
1685 Source source = addSource(r''' 1783 Source source = addSource(r'''
1686 class A { 1784 class A {
1687 m(int a) {} 1785 m(int a) {}
1688 } 1786 }
1689 class B extends A { 1787 class B extends A {
1690 m(String a) {} 1788 m(String a) {}
1691 }'''); 1789 }''');
1692 await assertErrors( 1790 await computeAnalysisResult(source);
1791 assertErrors(
1693 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); 1792 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
1694 verify([source]); 1793 verify([source]);
1695 } 1794 }
1696 1795
1697 test_invalidMethodOverrideNormalParamType_superclass_interface() async { 1796 test_invalidMethodOverrideNormalParamType_superclass_interface() async {
1698 Source source = addSource(r''' 1797 Source source = addSource(r'''
1699 abstract class I<U> { 1798 abstract class I<U> {
1700 m(U u) => null; 1799 m(U u) => null;
1701 } 1800 }
1702 abstract class J<V> { 1801 abstract class J<V> {
1703 m(V v) => null; 1802 m(V v) => null;
1704 } 1803 }
1705 class B extends I<int> implements J<String> { 1804 class B extends I<int> implements J<String> {
1706 m(double d) {} 1805 m(double d) {}
1707 }'''); 1806 }''');
1708 await assertErrors( 1807 await computeAnalysisResult(source);
1808 assertErrors(
1709 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); 1809 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
1710 verify([source]); 1810 verify([source]);
1711 } 1811 }
1712 1812
1713 test_invalidMethodOverrideNormalParamType_twoInterfaces() async { 1813 test_invalidMethodOverrideNormalParamType_twoInterfaces() async {
1714 Source source = addSource(r''' 1814 Source source = addSource(r'''
1715 abstract class I { 1815 abstract class I {
1716 m(int n); 1816 m(int n);
1717 } 1817 }
1718 abstract class J { 1818 abstract class J {
1719 m(num n); 1819 m(num n);
1720 } 1820 }
1721 abstract class A implements I, J {} 1821 abstract class A implements I, J {}
1722 class B extends A { 1822 class B extends A {
1723 m(String n) {} 1823 m(String n) {}
1724 }'''); 1824 }''');
1725 await assertErrors( 1825 await computeAnalysisResult(source);
1826 assertErrors(
1726 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); 1827 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
1727 verify([source]); 1828 verify([source]);
1728 } 1829 }
1729 1830
1730 test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() async { 1831 test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() async {
1731 // language/override_inheritance_generic_test/08 1832 // language/override_inheritance_generic_test/08
1732 Source source = addSource(r''' 1833 Source source = addSource(r'''
1733 abstract class I<U> { 1834 abstract class I<U> {
1734 m(U u) => null; 1835 m(U u) => null;
1735 } 1836 }
1736 abstract class J<V> { 1837 abstract class J<V> {
1737 m(V v) => null; 1838 m(V v) => null;
1738 } 1839 }
1739 class B implements I<int>, J<String> { 1840 class B implements I<int>, J<String> {
1740 m(double d) {} 1841 m(double d) {}
1741 }'''); 1842 }''');
1742 await assertErrors( 1843 await computeAnalysisResult(source);
1844 assertErrors(
1743 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]); 1845 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
1744 verify([source]); 1846 verify([source]);
1745 } 1847 }
1746 1848
1747 test_invalidMethodOverrideOptionalParamType() async { 1849 test_invalidMethodOverrideOptionalParamType() async {
1748 Source source = addSource(r''' 1850 Source source = addSource(r'''
1749 class A { 1851 class A {
1750 m([int a]) {} 1852 m([int a]) {}
1751 } 1853 }
1752 class B implements A { 1854 class B implements A {
1753 m([String a]) {} 1855 m([String a]) {}
1754 }'''); 1856 }''');
1755 await assertErrors(source, 1857 await computeAnalysisResult(source);
1858 assertErrors(source,
1756 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); 1859 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]);
1757 verify([source]); 1860 verify([source]);
1758 } 1861 }
1759 1862
1760 test_invalidMethodOverrideOptionalParamType_twoInterfaces() async { 1863 test_invalidMethodOverrideOptionalParamType_twoInterfaces() async {
1761 Source source = addSource(r''' 1864 Source source = addSource(r'''
1762 abstract class I { 1865 abstract class I {
1763 m([int n]); 1866 m([int n]);
1764 } 1867 }
1765 abstract class J { 1868 abstract class J {
1766 m([num n]); 1869 m([num n]);
1767 } 1870 }
1768 abstract class A implements I, J {} 1871 abstract class A implements I, J {}
1769 class B extends A { 1872 class B extends A {
1770 m([String n]) {} 1873 m([String n]) {}
1771 }'''); 1874 }''');
1772 await assertErrors(source, 1875 await computeAnalysisResult(source);
1876 assertErrors(source,
1773 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); 1877 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]);
1774 verify([source]); 1878 verify([source]);
1775 } 1879 }
1776 1880
1777 test_invalidMethodOverrideReturnType_interface() async { 1881 test_invalidMethodOverrideReturnType_interface() async {
1778 Source source = addSource(r''' 1882 Source source = addSource(r'''
1779 class A { 1883 class A {
1780 int m() { return 0; } 1884 int m() { return 0; }
1781 } 1885 }
1782 class B implements A { 1886 class B implements A {
1783 String m() { return 'a'; } 1887 String m() { return 'a'; }
1784 }'''); 1888 }''');
1785 await assertErrors( 1889 await computeAnalysisResult(source);
1890 assertErrors(
1786 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1891 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1787 verify([source]); 1892 verify([source]);
1788 } 1893 }
1789 1894
1790 test_invalidMethodOverrideReturnType_interface_grandparent() async { 1895 test_invalidMethodOverrideReturnType_interface_grandparent() async {
1791 Source source = addSource(r''' 1896 Source source = addSource(r'''
1792 abstract class A { 1897 abstract class A {
1793 int m(); 1898 int m();
1794 } 1899 }
1795 abstract class B implements A { 1900 abstract class B implements A {
1796 } 1901 }
1797 class C implements B { 1902 class C implements B {
1798 String m() { return 'a'; } 1903 String m() { return 'a'; }
1799 }'''); 1904 }''');
1800 await assertErrors( 1905 await computeAnalysisResult(source);
1906 assertErrors(
1801 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1907 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1802 verify([source]); 1908 verify([source]);
1803 } 1909 }
1804 1910
1805 test_invalidMethodOverrideReturnType_mixin() async { 1911 test_invalidMethodOverrideReturnType_mixin() async {
1806 Source source = addSource(r''' 1912 Source source = addSource(r'''
1807 class A { 1913 class A {
1808 int m() { return 0; } 1914 int m() { return 0; }
1809 } 1915 }
1810 class B extends Object with A { 1916 class B extends Object with A {
1811 String m() { return 'a'; } 1917 String m() { return 'a'; }
1812 }'''); 1918 }''');
1813 await assertErrors( 1919 await computeAnalysisResult(source);
1920 assertErrors(
1814 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1921 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1815 verify([source]); 1922 verify([source]);
1816 } 1923 }
1817 1924
1818 test_invalidMethodOverrideReturnType_superclass() async { 1925 test_invalidMethodOverrideReturnType_superclass() async {
1819 Source source = addSource(r''' 1926 Source source = addSource(r'''
1820 class A { 1927 class A {
1821 int m() { return 0; } 1928 int m() { return 0; }
1822 } 1929 }
1823 class B extends A { 1930 class B extends A {
1824 String m() { return 'a'; } 1931 String m() { return 'a'; }
1825 }'''); 1932 }''');
1826 await assertErrors( 1933 await computeAnalysisResult(source);
1934 assertErrors(
1827 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1935 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1828 verify([source]); 1936 verify([source]);
1829 } 1937 }
1830 1938
1831 test_invalidMethodOverrideReturnType_superclass_grandparent() async { 1939 test_invalidMethodOverrideReturnType_superclass_grandparent() async {
1832 Source source = addSource(r''' 1940 Source source = addSource(r'''
1833 class A { 1941 class A {
1834 int m() { return 0; } 1942 int m() { return 0; }
1835 } 1943 }
1836 class B extends A { 1944 class B extends A {
1837 } 1945 }
1838 class C extends B { 1946 class C extends B {
1839 String m() { return 'a'; } 1947 String m() { return 'a'; }
1840 }'''); 1948 }''');
1841 await assertErrors( 1949 await computeAnalysisResult(source);
1950 assertErrors(
1842 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1951 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1843 verify([source]); 1952 verify([source]);
1844 } 1953 }
1845 1954
1846 test_invalidMethodOverrideReturnType_twoInterfaces() async { 1955 test_invalidMethodOverrideReturnType_twoInterfaces() async {
1847 Source source = addSource(r''' 1956 Source source = addSource(r'''
1848 abstract class I { 1957 abstract class I {
1849 int m(); 1958 int m();
1850 } 1959 }
1851 abstract class J { 1960 abstract class J {
1852 num m(); 1961 num m();
1853 } 1962 }
1854 abstract class A implements I, J {} 1963 abstract class A implements I, J {}
1855 class B extends A { 1964 class B extends A {
1856 String m() => ''; 1965 String m() => '';
1857 }'''); 1966 }''');
1858 await assertErrors( 1967 await computeAnalysisResult(source);
1968 assertErrors(
1859 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1969 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1860 verify([source]); 1970 verify([source]);
1861 } 1971 }
1862 1972
1863 test_invalidMethodOverrideReturnType_void() async { 1973 test_invalidMethodOverrideReturnType_void() async {
1864 Source source = addSource(r''' 1974 Source source = addSource(r'''
1865 class A { 1975 class A {
1866 int m() { return 0; } 1976 int m() { return 0; }
1867 } 1977 }
1868 class B extends A { 1978 class B extends A {
1869 void m() {} 1979 void m() {}
1870 }'''); 1980 }''');
1871 await assertErrors( 1981 await computeAnalysisResult(source);
1982 assertErrors(
1872 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]); 1983 source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
1873 verify([source]); 1984 verify([source]);
1874 } 1985 }
1875 1986
1876 test_invalidOverride_defaultOverridesNonDefault() async { 1987 test_invalidOverride_defaultOverridesNonDefault() async {
1877 // If the base class provided an explicit value for a default parameter, 1988 // If the base class provided an explicit value for a default parameter,
1878 // then it is a static warning for the derived class to provide a different 1989 // then it is a static warning for the derived class to provide a different
1879 // value, even if implicitly. 1990 // value, even if implicitly.
1880 Source source = addSource(r''' 1991 Source source = addSource(r'''
1881 class A { 1992 class A {
1882 foo([x = 1]) {} 1993 foo([x = 1]) {}
1883 } 1994 }
1884 class B extends A { 1995 class B extends A {
1885 foo([x]) {} 1996 foo([x]) {}
1886 } 1997 }
1887 '''); 1998 ''');
1888 await assertErrors(source, [ 1999 await computeAnalysisResult(source);
2000 assertErrors(source, [
1889 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL 2001 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL
1890 ]); 2002 ]);
1891 verify([source]); 2003 verify([source]);
1892 } 2004 }
1893 2005
1894 test_invalidOverride_defaultOverridesNonDefault_named() async { 2006 test_invalidOverride_defaultOverridesNonDefault_named() async {
1895 // If the base class provided an explicit value for a default parameter, 2007 // If the base class provided an explicit value for a default parameter,
1896 // then it is a static warning for the derived class to provide a different 2008 // then it is a static warning for the derived class to provide a different
1897 // value, even if implicitly. 2009 // value, even if implicitly.
1898 Source source = addSource(r''' 2010 Source source = addSource(r'''
1899 class A { 2011 class A {
1900 foo({x: 1}) {} 2012 foo({x: 1}) {}
1901 } 2013 }
1902 class B extends A { 2014 class B extends A {
1903 foo({x}) {} 2015 foo({x}) {}
1904 } 2016 }
1905 '''); 2017 ''');
1906 await assertErrors(source, 2018 await computeAnalysisResult(source);
2019 assertErrors(source,
1907 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); 2020 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]);
1908 verify([source]); 2021 verify([source]);
1909 } 2022 }
1910 2023
1911 test_invalidOverride_defaultOverridesNonDefaultNull() async { 2024 test_invalidOverride_defaultOverridesNonDefaultNull() async {
1912 // If the base class provided an explicit null value for a default 2025 // If the base class provided an explicit null value for a default
1913 // parameter, then it is ok for the derived class to let the default value 2026 // parameter, then it is ok for the derived class to let the default value
1914 // be implicit, because the implicit default value of null matches the 2027 // be implicit, because the implicit default value of null matches the
1915 // explicit default value of null. 2028 // explicit default value of null.
1916 Source source = addSource(r''' 2029 Source source = addSource(r'''
1917 class A { 2030 class A {
1918 foo([x = null]) {} 2031 foo([x = null]) {}
1919 } 2032 }
1920 class B extends A { 2033 class B extends A {
1921 foo([x]) {} 2034 foo([x]) {}
1922 } 2035 }
1923 '''); 2036 ''');
1924 await assertNoErrors(source); 2037 await computeAnalysisResult(source);
2038 assertNoErrors(source);
1925 verify([source]); 2039 verify([source]);
1926 } 2040 }
1927 2041
1928 test_invalidOverride_defaultOverridesNonDefaultNull_named() async { 2042 test_invalidOverride_defaultOverridesNonDefaultNull_named() async {
1929 // If the base class provided an explicit null value for a default 2043 // If the base class provided an explicit null value for a default
1930 // parameter, then it is ok for the derived class to let the default value 2044 // parameter, then it is ok for the derived class to let the default value
1931 // be implicit, because the implicit default value of null matches the 2045 // be implicit, because the implicit default value of null matches the
1932 // explicit default value of null. 2046 // explicit default value of null.
1933 Source source = addSource(r''' 2047 Source source = addSource(r'''
1934 class A { 2048 class A {
1935 foo({x: null}) {} 2049 foo({x: null}) {}
1936 } 2050 }
1937 class B extends A { 2051 class B extends A {
1938 foo({x}) {} 2052 foo({x}) {}
1939 } 2053 }
1940 '''); 2054 ''');
1941 await assertNoErrors(source); 2055 await computeAnalysisResult(source);
2056 assertNoErrors(source);
1942 verify([source]); 2057 verify([source]);
1943 } 2058 }
1944 2059
1945 test_invalidOverride_nonDefaultOverridesDefault() async { 2060 test_invalidOverride_nonDefaultOverridesDefault() async {
1946 // If the base class lets the default parameter be implicit, then it is ok 2061 // If the base class lets the default parameter be implicit, then it is ok
1947 // for the derived class to provide an explicit default value, even if it's 2062 // for the derived class to provide an explicit default value, even if it's
1948 // not null. 2063 // not null.
1949 Source source = addSource(r''' 2064 Source source = addSource(r'''
1950 class A { 2065 class A {
1951 foo([x]) {} 2066 foo([x]) {}
1952 } 2067 }
1953 class B extends A { 2068 class B extends A {
1954 foo([x = 1]) {} 2069 foo([x = 1]) {}
1955 } 2070 }
1956 '''); 2071 ''');
1957 await assertNoErrors(source); 2072 await computeAnalysisResult(source);
2073 assertNoErrors(source);
1958 verify([source]); 2074 verify([source]);
1959 } 2075 }
1960 2076
1961 test_invalidOverride_nonDefaultOverridesDefault_named() async { 2077 test_invalidOverride_nonDefaultOverridesDefault_named() async {
1962 // If the base class lets the default parameter be implicit, then it is ok 2078 // If the base class lets the default parameter be implicit, then it is ok
1963 // for the derived class to provide an explicit default value, even if it's 2079 // for the derived class to provide an explicit default value, even if it's
1964 // not null. 2080 // not null.
1965 Source source = addSource(r''' 2081 Source source = addSource(r'''
1966 class A { 2082 class A {
1967 foo({x}) {} 2083 foo({x}) {}
1968 } 2084 }
1969 class B extends A { 2085 class B extends A {
1970 foo({x: 1}) {} 2086 foo({x: 1}) {}
1971 } 2087 }
1972 '''); 2088 ''');
1973 await assertNoErrors(source); 2089 await computeAnalysisResult(source);
2090 assertNoErrors(source);
1974 verify([source]); 2091 verify([source]);
1975 } 2092 }
1976 2093
1977 test_invalidOverrideDifferentDefaultValues_named() async { 2094 test_invalidOverrideDifferentDefaultValues_named() async {
1978 Source source = addSource(r''' 2095 Source source = addSource(r'''
1979 class A { 2096 class A {
1980 m({int p : 0}) {} 2097 m({int p : 0}) {}
1981 } 2098 }
1982 class B extends A { 2099 class B extends A {
1983 m({int p : 1}) {} 2100 m({int p : 1}) {}
1984 }'''); 2101 }''');
1985 await assertErrors(source, 2102 await computeAnalysisResult(source);
2103 assertErrors(source,
1986 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); 2104 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]);
1987 verify([source]); 2105 verify([source]);
1988 } 2106 }
1989 2107
1990 test_invalidOverrideDifferentDefaultValues_positional() async { 2108 test_invalidOverrideDifferentDefaultValues_positional() async {
1991 Source source = addSource(r''' 2109 Source source = addSource(r'''
1992 class A { 2110 class A {
1993 m([int p = 0]) {} 2111 m([int p = 0]) {}
1994 } 2112 }
1995 class B extends A { 2113 class B extends A {
1996 m([int p = 1]) {} 2114 m([int p = 1]) {}
1997 }'''); 2115 }''');
1998 await assertErrors(source, [ 2116 await computeAnalysisResult(source);
2117 assertErrors(source, [
1999 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL 2118 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL
2000 ]); 2119 ]);
2001 verify([source]); 2120 verify([source]);
2002 } 2121 }
2003 2122
2004 test_invalidOverrideNamed_fewerNamedParameters() async { 2123 test_invalidOverrideNamed_fewerNamedParameters() async {
2005 Source source = addSource(r''' 2124 Source source = addSource(r'''
2006 class A { 2125 class A {
2007 m({a, b}) {} 2126 m({a, b}) {}
2008 } 2127 }
2009 class B extends A { 2128 class B extends A {
2010 m({a}) {} 2129 m({a}) {}
2011 }'''); 2130 }''');
2012 await assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); 2131 await computeAnalysisResult(source);
2132 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]);
2013 verify([source]); 2133 verify([source]);
2014 } 2134 }
2015 2135
2016 test_invalidOverrideNamed_missingNamedParameter() async { 2136 test_invalidOverrideNamed_missingNamedParameter() async {
2017 Source source = addSource(r''' 2137 Source source = addSource(r'''
2018 class A { 2138 class A {
2019 m({a, b}) {} 2139 m({a, b}) {}
2020 } 2140 }
2021 class B extends A { 2141 class B extends A {
2022 m({a, c}) {} 2142 m({a, c}) {}
2023 }'''); 2143 }''');
2024 await assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); 2144 await computeAnalysisResult(source);
2145 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]);
2025 verify([source]); 2146 verify([source]);
2026 } 2147 }
2027 2148
2028 test_invalidOverridePositional_optional() async { 2149 test_invalidOverridePositional_optional() async {
2029 Source source = addSource(r''' 2150 Source source = addSource(r'''
2030 class A { 2151 class A {
2031 m([a, b]) {} 2152 m([a, b]) {}
2032 } 2153 }
2033 class B extends A { 2154 class B extends A {
2034 m([a]) {} 2155 m([a]) {}
2035 }'''); 2156 }''');
2036 await assertErrors( 2157 await computeAnalysisResult(source);
2037 source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); 2158 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
2038 verify([source]); 2159 verify([source]);
2039 } 2160 }
2040 2161
2041 test_invalidOverridePositional_optionalAndRequired() async { 2162 test_invalidOverridePositional_optionalAndRequired() async {
2042 Source source = addSource(r''' 2163 Source source = addSource(r'''
2043 class A { 2164 class A {
2044 m(a, b, [c, d]) {} 2165 m(a, b, [c, d]) {}
2045 } 2166 }
2046 class B extends A { 2167 class B extends A {
2047 m(a, b, [c]) {} 2168 m(a, b, [c]) {}
2048 }'''); 2169 }''');
2049 await assertErrors( 2170 await computeAnalysisResult(source);
2050 source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); 2171 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
2051 verify([source]); 2172 verify([source]);
2052 } 2173 }
2053 2174
2054 test_invalidOverridePositional_optionalAndRequired2() async { 2175 test_invalidOverridePositional_optionalAndRequired2() async {
2055 Source source = addSource(r''' 2176 Source source = addSource(r'''
2056 class A { 2177 class A {
2057 m(a, b, [c, d]) {} 2178 m(a, b, [c, d]) {}
2058 } 2179 }
2059 class B extends A { 2180 class B extends A {
2060 m(a, [c, d]) {} 2181 m(a, [c, d]) {}
2061 }'''); 2182 }''');
2062 await assertErrors( 2183 await computeAnalysisResult(source);
2063 source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); 2184 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
2064 verify([source]); 2185 verify([source]);
2065 } 2186 }
2066 2187
2067 test_invalidOverrideRequired() async { 2188 test_invalidOverrideRequired() async {
2068 Source source = addSource(r''' 2189 Source source = addSource(r'''
2069 class A { 2190 class A {
2070 m(a) {} 2191 m(a) {}
2071 } 2192 }
2072 class B extends A { 2193 class B extends A {
2073 m(a, b) {} 2194 m(a, b) {}
2074 }'''); 2195 }''');
2075 await assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]); 2196 await computeAnalysisResult(source);
2197 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]);
2076 verify([source]); 2198 verify([source]);
2077 } 2199 }
2078 2200
2079 test_invalidSetterOverrideNormalParamType() async { 2201 test_invalidSetterOverrideNormalParamType() async {
2080 Source source = addSource(r''' 2202 Source source = addSource(r'''
2081 class A { 2203 class A {
2082 void set s(int v) {} 2204 void set s(int v) {}
2083 } 2205 }
2084 class B extends A { 2206 class B extends A {
2085 void set s(String v) {} 2207 void set s(String v) {}
2086 }'''); 2208 }''');
2087 await assertErrors( 2209 await computeAnalysisResult(source);
2210 assertErrors(
2088 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); 2211 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
2089 verify([source]); 2212 verify([source]);
2090 } 2213 }
2091 2214
2092 test_invalidSetterOverrideNormalParamType_superclass_interface() async { 2215 test_invalidSetterOverrideNormalParamType_superclass_interface() async {
2093 Source source = addSource(r''' 2216 Source source = addSource(r'''
2094 abstract class I { 2217 abstract class I {
2095 set setter14(int _) => null; 2218 set setter14(int _) => null;
2096 } 2219 }
2097 abstract class J { 2220 abstract class J {
2098 set setter14(num _) => null; 2221 set setter14(num _) => null;
2099 } 2222 }
2100 abstract class A extends I implements J {} 2223 abstract class A extends I implements J {}
2101 class B extends A { 2224 class B extends A {
2102 set setter14(String _) => null; 2225 set setter14(String _) => null;
2103 }'''); 2226 }''');
2104 await assertErrors( 2227 await computeAnalysisResult(source);
2228 assertErrors(
2105 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); 2229 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
2106 verify([source]); 2230 verify([source]);
2107 } 2231 }
2108 2232
2109 test_invalidSetterOverrideNormalParamType_twoInterfaces() async { 2233 test_invalidSetterOverrideNormalParamType_twoInterfaces() async {
2110 // test from language/override_inheritance_field_test_34.dart 2234 // test from language/override_inheritance_field_test_34.dart
2111 Source source = addSource(r''' 2235 Source source = addSource(r'''
2112 abstract class I { 2236 abstract class I {
2113 set setter14(int _) => null; 2237 set setter14(int _) => null;
2114 } 2238 }
2115 abstract class J { 2239 abstract class J {
2116 set setter14(num _) => null; 2240 set setter14(num _) => null;
2117 } 2241 }
2118 abstract class A implements I, J {} 2242 abstract class A implements I, J {}
2119 class B extends A { 2243 class B extends A {
2120 set setter14(String _) => null; 2244 set setter14(String _) => null;
2121 }'''); 2245 }''');
2122 await assertErrors( 2246 await computeAnalysisResult(source);
2247 assertErrors(
2123 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); 2248 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
2124 verify([source]); 2249 verify([source]);
2125 } 2250 }
2126 2251
2127 test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() async { 2252 test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() async {
2128 Source source = addSource(r''' 2253 Source source = addSource(r'''
2129 abstract class I<U> { 2254 abstract class I<U> {
2130 set s(U u) {} 2255 set s(U u) {}
2131 } 2256 }
2132 abstract class J<V> { 2257 abstract class J<V> {
2133 set s(V v) {} 2258 set s(V v) {}
2134 } 2259 }
2135 class B implements I<int>, J<String> { 2260 class B implements I<int>, J<String> {
2136 set s(double d) {} 2261 set s(double d) {}
2137 }'''); 2262 }''');
2138 await assertErrors( 2263 await computeAnalysisResult(source);
2264 assertErrors(
2139 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); 2265 source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
2140 verify([source]); 2266 verify([source]);
2141 } 2267 }
2142 2268
2143 test_listElementTypeNotAssignable() async { 2269 test_listElementTypeNotAssignable() async {
2144 Source source = addSource("var v = <String> [42];"); 2270 Source source = addSource("var v = <String> [42];");
2145 await assertErrors( 2271 await computeAnalysisResult(source);
2146 source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]); 2272 assertErrors(source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]);
2147 verify([source]); 2273 verify([source]);
2148 } 2274 }
2149 2275
2150 test_mapKeyTypeNotAssignable() async { 2276 test_mapKeyTypeNotAssignable() async {
2151 Source source = addSource("var v = <String, int > {1 : 2};"); 2277 Source source = addSource("var v = <String, int > {1 : 2};");
2152 await assertErrors( 2278 await computeAnalysisResult(source);
2153 source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]); 2279 assertErrors(source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]);
2154 verify([source]); 2280 verify([source]);
2155 } 2281 }
2156 2282
2157 test_mapValueTypeNotAssignable() async { 2283 test_mapValueTypeNotAssignable() async {
2158 Source source = addSource("var v = <String, String> {'a' : 2};"); 2284 Source source = addSource("var v = <String, String> {'a' : 2};");
2159 await assertErrors( 2285 await computeAnalysisResult(source);
2160 source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]); 2286 assertErrors(source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]);
2161 verify([source]); 2287 verify([source]);
2162 } 2288 }
2163 2289
2164 test_mismatchedAccessorTypes_class() async { 2290 test_mismatchedAccessorTypes_class() async {
2165 Source source = addSource(r''' 2291 Source source = addSource(r'''
2166 class A { 2292 class A {
2167 int get g { return 0; } 2293 int get g { return 0; }
2168 set g(String v) {} 2294 set g(String v) {}
2169 }'''); 2295 }''');
2170 await assertErrors( 2296 await computeAnalysisResult(source);
2297 assertErrors(
2171 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); 2298 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]);
2172 verify([source]); 2299 verify([source]);
2173 } 2300 }
2174 2301
2175 test_mismatchedAccessorTypes_getterAndSuperSetter() async { 2302 test_mismatchedAccessorTypes_getterAndSuperSetter() async {
2176 Source source = addSource(r''' 2303 Source source = addSource(r'''
2177 class A { 2304 class A {
2178 int get g { return 0; } 2305 int get g { return 0; }
2179 } 2306 }
2180 class B extends A { 2307 class B extends A {
2181 set g(String v) {} 2308 set g(String v) {}
2182 }'''); 2309 }''');
2183 await assertErrors(source, 2310 await computeAnalysisResult(source);
2311 assertErrors(source,
2184 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); 2312 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]);
2185 verify([source]); 2313 verify([source]);
2186 } 2314 }
2187 2315
2188 test_mismatchedAccessorTypes_setterAndSuperGetter() async { 2316 test_mismatchedAccessorTypes_setterAndSuperGetter() async {
2189 Source source = addSource(r''' 2317 Source source = addSource(r'''
2190 class A { 2318 class A {
2191 set g(int v) {} 2319 set g(int v) {}
2192 } 2320 }
2193 class B extends A { 2321 class B extends A {
2194 String get g { return ''; } 2322 String get g { return ''; }
2195 }'''); 2323 }''');
2196 await assertErrors(source, 2324 await computeAnalysisResult(source);
2325 assertErrors(source,
2197 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); 2326 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]);
2198 verify([source]); 2327 verify([source]);
2199 } 2328 }
2200 2329
2201 test_mismatchedAccessorTypes_topLevel() async { 2330 test_mismatchedAccessorTypes_topLevel() async {
2202 Source source = addSource(r''' 2331 Source source = addSource(r'''
2203 int get g { return 0; } 2332 int get g { return 0; }
2204 set g(String v) {}'''); 2333 set g(String v) {}''');
2205 await assertErrors( 2334 await computeAnalysisResult(source);
2335 assertErrors(
2206 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); 2336 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]);
2207 verify([source]); 2337 verify([source]);
2208 } 2338 }
2209 2339
2210 test_missingEnumConstantInSwitch() async { 2340 test_missingEnumConstantInSwitch() async {
2211 Source source = addSource(r''' 2341 Source source = addSource(r'''
2212 enum E { ONE, TWO, THREE, FOUR } 2342 enum E { ONE, TWO, THREE, FOUR }
2213 bool odd(E e) { 2343 bool odd(E e) {
2214 switch (e) { 2344 switch (e) {
2215 case E.ONE: 2345 case E.ONE:
2216 case E.THREE: return true; 2346 case E.THREE: return true;
2217 } 2347 }
2218 return false; 2348 return false;
2219 }'''); 2349 }''');
2220 await assertErrors(source, [ 2350 await computeAnalysisResult(source);
2351 assertErrors(source, [
2221 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH, 2352 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
2222 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH 2353 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH
2223 ]); 2354 ]);
2224 verify([source]); 2355 verify([source]);
2225 } 2356 }
2226 2357
2227 test_mixedReturnTypes_localFunction() async { 2358 test_mixedReturnTypes_localFunction() async {
2228 Source source = addSource(r''' 2359 Source source = addSource(r'''
2229 class C { 2360 class C {
2230 m(int x) { 2361 m(int x) {
2231 return (int y) { 2362 return (int y) {
2232 if (y < 0) { 2363 if (y < 0) {
2233 return; 2364 return;
2234 } 2365 }
2235 return 0; 2366 return 0;
2236 }; 2367 };
2237 } 2368 }
2238 }'''); 2369 }''');
2239 await assertErrors(source, [ 2370 await computeAnalysisResult(source);
2371 assertErrors(source, [
2240 StaticWarningCode.MIXED_RETURN_TYPES, 2372 StaticWarningCode.MIXED_RETURN_TYPES,
2241 StaticWarningCode.MIXED_RETURN_TYPES 2373 StaticWarningCode.MIXED_RETURN_TYPES
2242 ]); 2374 ]);
2243 verify([source]); 2375 verify([source]);
2244 } 2376 }
2245 2377
2246 test_mixedReturnTypes_method() async { 2378 test_mixedReturnTypes_method() async {
2247 Source source = addSource(r''' 2379 Source source = addSource(r'''
2248 class C { 2380 class C {
2249 m(int x) { 2381 m(int x) {
2250 if (x < 0) { 2382 if (x < 0) {
2251 return; 2383 return;
2252 } 2384 }
2253 return 0; 2385 return 0;
2254 } 2386 }
2255 }'''); 2387 }''');
2256 await assertErrors(source, [ 2388 await computeAnalysisResult(source);
2389 assertErrors(source, [
2257 StaticWarningCode.MIXED_RETURN_TYPES, 2390 StaticWarningCode.MIXED_RETURN_TYPES,
2258 StaticWarningCode.MIXED_RETURN_TYPES 2391 StaticWarningCode.MIXED_RETURN_TYPES
2259 ]); 2392 ]);
2260 verify([source]); 2393 verify([source]);
2261 } 2394 }
2262 2395
2263 test_mixedReturnTypes_topLevelFunction() async { 2396 test_mixedReturnTypes_topLevelFunction() async {
2264 Source source = addSource(r''' 2397 Source source = addSource(r'''
2265 f(int x) { 2398 f(int x) {
2266 if (x < 0) { 2399 if (x < 0) {
2267 return; 2400 return;
2268 } 2401 }
2269 return 0; 2402 return 0;
2270 }'''); 2403 }''');
2271 await assertErrors(source, [ 2404 await computeAnalysisResult(source);
2405 assertErrors(source, [
2272 StaticWarningCode.MIXED_RETURN_TYPES, 2406 StaticWarningCode.MIXED_RETURN_TYPES,
2273 StaticWarningCode.MIXED_RETURN_TYPES 2407 StaticWarningCode.MIXED_RETURN_TYPES
2274 ]); 2408 ]);
2275 verify([source]); 2409 verify([source]);
2276 } 2410 }
2277 2411
2278 test_newWithAbstractClass() async { 2412 test_newWithAbstractClass() async {
2279 Source source = addSource(r''' 2413 Source source = addSource(r'''
2280 abstract class A {} 2414 abstract class A {}
2281 void f() { 2415 void f() {
2282 A a = new A(); 2416 A a = new A();
2283 }'''); 2417 }''');
2284 await assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]); 2418 await computeAnalysisResult(source);
2419 assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]);
2285 verify([source]); 2420 verify([source]);
2286 } 2421 }
2287 2422
2288 test_newWithInvalidTypeParameters() async { 2423 test_newWithInvalidTypeParameters() async {
2289 Source source = addSource(r''' 2424 Source source = addSource(r'''
2290 class A {} 2425 class A {}
2291 f() { return new A<A>(); }'''); 2426 f() { return new A<A>(); }''');
2292 await assertErrors( 2427 await computeAnalysisResult(source);
2293 source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); 2428 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
2294 verify([source]); 2429 verify([source]);
2295 } 2430 }
2296 2431
2297 test_newWithInvalidTypeParameters_tooFew() async { 2432 test_newWithInvalidTypeParameters_tooFew() async {
2298 Source source = addSource(r''' 2433 Source source = addSource(r'''
2299 class A {} 2434 class A {}
2300 class C<K, V> {} 2435 class C<K, V> {}
2301 f(p) { 2436 f(p) {
2302 return new C<A>(); 2437 return new C<A>();
2303 }'''); 2438 }''');
2304 await assertErrors( 2439 await computeAnalysisResult(source);
2305 source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); 2440 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
2306 verify([source]); 2441 verify([source]);
2307 } 2442 }
2308 2443
2309 test_newWithInvalidTypeParameters_tooMany() async { 2444 test_newWithInvalidTypeParameters_tooMany() async {
2310 Source source = addSource(r''' 2445 Source source = addSource(r'''
2311 class A {} 2446 class A {}
2312 class C<E> {} 2447 class C<E> {}
2313 f(p) { 2448 f(p) {
2314 return new C<A, A>(); 2449 return new C<A, A>();
2315 }'''); 2450 }''');
2316 await assertErrors( 2451 await computeAnalysisResult(source);
2317 source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); 2452 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
2318 verify([source]); 2453 verify([source]);
2319 } 2454 }
2320 2455
2321 test_newWithNonType() async { 2456 test_newWithNonType() async {
2322 Source source = addSource(r''' 2457 Source source = addSource(r'''
2323 var A = 0; 2458 var A = 0;
2324 void f() { 2459 void f() {
2325 var a = new A(); 2460 var a = new A();
2326 }'''); 2461 }''');
2327 await assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); 2462 await computeAnalysisResult(source);
2463 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]);
2328 verify([source]); 2464 verify([source]);
2329 } 2465 }
2330 2466
2331 test_newWithNonType_fromLibrary() async { 2467 test_newWithNonType_fromLibrary() async {
2332 Source source1 = addNamedSource("/lib.dart", "class B {}"); 2468 Source source1 = addNamedSource("/lib.dart", "class B {}");
2333 Source source2 = addNamedSource( 2469 Source source2 = addNamedSource(
2334 "/lib2.dart", 2470 "/lib2.dart",
2335 r''' 2471 r'''
2336 import 'lib.dart' as lib; 2472 import 'lib.dart' as lib;
2337 void f() { 2473 void f() {
2338 var a = new lib.A(); 2474 var a = new lib.A();
2339 } 2475 }
2340 lib.B b;'''); 2476 lib.B b;''');
2341 await assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); 2477 await computeAnalysisResult(source1);
2478 await computeAnalysisResult(source2);
2479 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]);
2342 verify([source1]); 2480 verify([source1]);
2343 } 2481 }
2344 2482
2345 test_newWithUndefinedConstructor() async { 2483 test_newWithUndefinedConstructor() async {
2346 Source source = addSource(r''' 2484 Source source = addSource(r'''
2347 class A { 2485 class A {
2348 A() {} 2486 A() {}
2349 } 2487 }
2350 f() { 2488 f() {
2351 new A.name(); 2489 new A.name();
2352 }'''); 2490 }''');
2353 await assertErrors( 2491 await computeAnalysisResult(source);
2354 source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]); 2492 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]);
2355 // no verify(), 'name' is not resolved 2493 // no verify(), 'name' is not resolved
2356 } 2494 }
2357 2495
2358 test_newWithUndefinedConstructorDefault() async { 2496 test_newWithUndefinedConstructorDefault() async {
2359 Source source = addSource(r''' 2497 Source source = addSource(r'''
2360 class A { 2498 class A {
2361 A.name() {} 2499 A.name() {}
2362 } 2500 }
2363 f() { 2501 f() {
2364 new A(); 2502 new A();
2365 }'''); 2503 }''');
2366 await assertErrors( 2504 await computeAnalysisResult(source);
2505 assertErrors(
2367 source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT]); 2506 source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT]);
2368 verify([source]); 2507 verify([source]);
2369 } 2508 }
2370 2509
2371 test_nonAbstractClassInheritsAbstractMemberFivePlus() async { 2510 test_nonAbstractClassInheritsAbstractMemberFivePlus() async {
2372 Source source = addSource(r''' 2511 Source source = addSource(r'''
2373 abstract class A { 2512 abstract class A {
2374 m(); 2513 m();
2375 n(); 2514 n();
2376 o(); 2515 o();
2377 p(); 2516 p();
2378 q(); 2517 q();
2379 } 2518 }
2380 class C extends A { 2519 class C extends A {
2381 }'''); 2520 }''');
2382 await assertErrors(source, [ 2521 await computeAnalysisResult(source);
2522 assertErrors(source, [
2383 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS 2523 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS
2384 ]); 2524 ]);
2385 verify([source]); 2525 verify([source]);
2386 } 2526 }
2387 2527
2388 test_nonAbstractClassInheritsAbstractMemberFour() async { 2528 test_nonAbstractClassInheritsAbstractMemberFour() async {
2389 Source source = addSource(r''' 2529 Source source = addSource(r'''
2390 abstract class A { 2530 abstract class A {
2391 m(); 2531 m();
2392 n(); 2532 n();
2393 o(); 2533 o();
2394 p(); 2534 p();
2395 } 2535 }
2396 class C extends A { 2536 class C extends A {
2397 }'''); 2537 }''');
2398 await assertErrors(source, 2538 await computeAnalysisResult(source);
2539 assertErrors(source,
2399 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR]); 2540 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR]);
2400 verify([source]); 2541 verify([source]);
2401 } 2542 }
2402 2543
2403 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() asyn c { 2544 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() asyn c {
2404 // 15979 2545 // 15979
2405 Source source = addSource(r''' 2546 Source source = addSource(r'''
2406 abstract class M {} 2547 abstract class M {}
2407 abstract class A {} 2548 abstract class A {}
2408 abstract class I { 2549 abstract class I {
2409 m(); 2550 m();
2410 } 2551 }
2411 class B = A with M implements I;'''); 2552 class B = A with M implements I;''');
2412 await assertErrors(source, 2553 await computeAnalysisResult(source);
2554 assertErrors(source,
2413 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2555 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2414 verify([source]); 2556 verify([source]);
2415 } 2557 }
2416 2558
2417 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() async { 2559 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() async {
2418 // 15979 2560 // 15979
2419 Source source = addSource(r''' 2561 Source source = addSource(r'''
2420 abstract class M { 2562 abstract class M {
2421 m(); 2563 m();
2422 } 2564 }
2423 abstract class A {} 2565 abstract class A {}
2424 class B = A with M;'''); 2566 class B = A with M;''');
2425 await assertErrors(source, 2567 await computeAnalysisResult(source);
2568 assertErrors(source,
2426 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2569 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2427 verify([source]); 2570 verify([source]);
2428 } 2571 }
2429 2572
2430 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() asy nc { 2573 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() asy nc {
2431 // 15979 2574 // 15979
2432 Source source = addSource(r''' 2575 Source source = addSource(r'''
2433 class M {} 2576 class M {}
2434 abstract class A { 2577 abstract class A {
2435 m(); 2578 m();
2436 } 2579 }
2437 class B = A with M;'''); 2580 class B = A with M;''');
2438 await assertErrors(source, 2581 await computeAnalysisResult(source);
2582 assertErrors(source,
2439 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2583 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2440 verify([source]); 2584 verify([source]);
2441 } 2585 }
2442 2586
2443 test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsU sedInImplementation() async { 2587 test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsU sedInImplementation() async {
2444 // 15028 2588 // 15028
2445 Source source = addSource(r''' 2589 Source source = addSource(r'''
2446 class C { 2590 class C {
2447 foo(int x) => x; 2591 foo(int x) => x;
2448 } 2592 }
2449 abstract class D { 2593 abstract class D {
2450 foo(x, [y]); 2594 foo(x, [y]);
2451 } 2595 }
2452 class E extends C implements D {}'''); 2596 class E extends C implements D {}''');
2453 await assertErrors(source, 2597 await computeAnalysisResult(source);
2598 assertErrors(source,
2454 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2599 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2455 verify([source]); 2600 verify([source]);
2456 } 2601 }
2457 2602
2458 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() async { 2603 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() async {
2459 Source source = addSource(r''' 2604 Source source = addSource(r'''
2460 class I { 2605 class I {
2461 int get g {return 1;} 2606 int get g {return 1;}
2462 } 2607 }
2463 class C implements I { 2608 class C implements I {
2464 }'''); 2609 }''');
2465 await assertErrors(source, 2610 await computeAnalysisResult(source);
2611 assertErrors(source,
2466 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2612 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2467 verify([source]); 2613 verify([source]);
2468 } 2614 }
2469 2615
2470 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() async { 2616 test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() async {
2471 Source source = addSource(r''' 2617 Source source = addSource(r'''
2472 abstract class A { 2618 abstract class A {
2473 int get g; 2619 int get g;
2474 } 2620 }
2475 class C extends A { 2621 class C extends A {
2476 }'''); 2622 }''');
2477 await assertErrors(source, 2623 await computeAnalysisResult(source);
2624 assertErrors(source,
2478 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2625 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2479 verify([source]); 2626 verify([source]);
2480 } 2627 }
2481 2628
2482 test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() async { 2629 test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() async {
2483 Source source = addSource(r''' 2630 Source source = addSource(r'''
2484 class I { 2631 class I {
2485 m(p) {} 2632 m(p) {}
2486 } 2633 }
2487 class C implements I { 2634 class C implements I {
2488 }'''); 2635 }''');
2489 await assertErrors(source, 2636 await computeAnalysisResult(source);
2637 assertErrors(source,
2490 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2638 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2491 verify([source]); 2639 verify([source]);
2492 } 2640 }
2493 2641
2494 test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() async { 2642 test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() async {
2495 Source source = addSource(r''' 2643 Source source = addSource(r'''
2496 abstract class A { 2644 abstract class A {
2497 m(p); 2645 m(p);
2498 } 2646 }
2499 class C extends A { 2647 class C extends A {
2500 }'''); 2648 }''');
2501 await assertErrors(source, 2649 await computeAnalysisResult(source);
2650 assertErrors(source,
2502 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2651 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2503 verify([source]); 2652 verify([source]);
2504 } 2653 }
2505 2654
2506 test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() asy nc { 2655 test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() asy nc {
2507 // 7640 2656 // 7640
2508 Source source = addSource(r''' 2657 Source source = addSource(r'''
2509 abstract class A { 2658 abstract class A {
2510 int x(int a); 2659 int x(int a);
2511 } 2660 }
2512 abstract class B { 2661 abstract class B {
2513 int x(int a, [int b]); 2662 int x(int a, [int b]);
2514 } 2663 }
2515 class C implements A, B { 2664 class C implements A, B {
2516 }'''); 2665 }''');
2517 await assertErrors(source, 2666 await computeAnalysisResult(source);
2667 assertErrors(source,
2518 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2668 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2519 verify([source]); 2669 verify([source]);
2520 } 2670 }
2521 2671
2522 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() async { 2672 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() async {
2523 // 15001 2673 // 15001
2524 Source source = addSource(r''' 2674 Source source = addSource(r'''
2525 abstract class A { get g1; get g2; } 2675 abstract class A { get g1; get g2; }
2526 abstract class B implements A { get g1 => 1; } 2676 abstract class B implements A { get g1 => 1; }
2527 class C extends Object with B {}'''); 2677 class C extends Object with B {}''');
2528 await assertErrors(source, 2678 await computeAnalysisResult(source);
2679 assertErrors(source,
2529 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2680 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2530 } 2681 }
2531 2682
2532 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() async { 2683 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() async {
2533 // 15001 2684 // 15001
2534 Source source = addSource(r''' 2685 Source source = addSource(r'''
2535 abstract class A { m1(); m2(); } 2686 abstract class A { m1(); m2(); }
2536 abstract class B implements A { m1() => 1; } 2687 abstract class B implements A { m1() => 1; }
2537 class C extends Object with B {}'''); 2688 class C extends Object with B {}''');
2538 await assertErrors(source, 2689 await computeAnalysisResult(source);
2690 assertErrors(source,
2539 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2691 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2540 } 2692 }
2541 2693
2542 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() async { 2694 test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() async {
2543 // 15001 2695 // 15001
2544 Source source = addSource(r''' 2696 Source source = addSource(r'''
2545 abstract class A { set s1(v); set s2(v); } 2697 abstract class A { set s1(v); set s2(v); }
2546 abstract class B implements A { set s1(v) {} } 2698 abstract class B implements A { set s1(v) {} }
2547 class C extends Object with B {}'''); 2699 class C extends Object with B {}''');
2548 await assertErrors(source, 2700 await computeAnalysisResult(source);
2701 assertErrors(source,
2549 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2702 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2550 } 2703 }
2551 2704
2552 test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_interface() async { 2705 test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_interface() async {
2553 // 15979 2706 // 15979
2554 Source source = addSource(r''' 2707 Source source = addSource(r'''
2555 class I { 2708 class I {
2556 noSuchMethod(v) => ''; 2709 noSuchMethod(v) => '';
2557 } 2710 }
2558 abstract class A { 2711 abstract class A {
2559 m(); 2712 m();
2560 } 2713 }
2561 class B extends A implements I { 2714 class B extends A implements I {
2562 }'''); 2715 }''');
2563 await assertErrors(source, 2716 await computeAnalysisResult(source);
2717 assertErrors(source,
2564 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2718 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2565 verify([source]); 2719 verify([source]);
2566 } 2720 }
2567 2721
2568 test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() asy nc { 2722 test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() asy nc {
2569 // test from language/override_inheritance_abstract_test_14.dart 2723 // test from language/override_inheritance_abstract_test_14.dart
2570 Source source = addSource(r''' 2724 Source source = addSource(r'''
2571 abstract class A { 2725 abstract class A {
2572 set field(_); 2726 set field(_);
2573 } 2727 }
2574 abstract class I { 2728 abstract class I {
2575 var field; 2729 var field;
2576 } 2730 }
2577 class B extends A implements I { 2731 class B extends A implements I {
2578 get field => 0; 2732 get field => 0;
2579 }'''); 2733 }''');
2580 await assertErrors(source, 2734 await computeAnalysisResult(source);
2735 assertErrors(source,
2581 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2736 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2582 verify([source]); 2737 verify([source]);
2583 } 2738 }
2584 2739
2585 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() async { 2740 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() async {
2586 Source source = addSource(r''' 2741 Source source = addSource(r'''
2587 class I { 2742 class I {
2588 set s(int i) {} 2743 set s(int i) {}
2589 } 2744 }
2590 class C implements I { 2745 class C implements I {
2591 }'''); 2746 }''');
2592 await assertErrors(source, 2747 await computeAnalysisResult(source);
2748 assertErrors(source,
2593 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2749 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2594 verify([source]); 2750 verify([source]);
2595 } 2751 }
2596 2752
2597 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() async { 2753 test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() async {
2598 Source source = addSource(r''' 2754 Source source = addSource(r'''
2599 abstract class A { 2755 abstract class A {
2600 set s(int i); 2756 set s(int i);
2601 } 2757 }
2602 class C extends A { 2758 class C extends A {
2603 }'''); 2759 }''');
2604 await assertErrors(source, 2760 await computeAnalysisResult(source);
2761 assertErrors(source,
2605 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2762 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2606 verify([source]); 2763 verify([source]);
2607 } 2764 }
2608 2765
2609 test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() async { 2766 test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() async {
2610 // bug 11154 2767 // bug 11154
2611 Source source = addSource(r''' 2768 Source source = addSource(r'''
2612 class A { 2769 class A {
2613 get a => 'a'; 2770 get a => 'a';
2614 } 2771 }
2615 abstract class B implements A { 2772 abstract class B implements A {
2616 get b => 'b'; 2773 get b => 'b';
2617 } 2774 }
2618 class C extends B { 2775 class C extends B {
2619 }'''); 2776 }''');
2620 await assertErrors(source, 2777 await computeAnalysisResult(source);
2778 assertErrors(source,
2621 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2779 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2622 verify([source]); 2780 verify([source]);
2623 } 2781 }
2624 2782
2625 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingG etter() async { 2783 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingG etter() async {
2626 // 16133 2784 // 16133
2627 Source source = addSource(r''' 2785 Source source = addSource(r'''
2628 class I { 2786 class I {
2629 var v; 2787 var v;
2630 } 2788 }
2631 class C implements I { 2789 class C implements I {
2632 set v(_) {} 2790 set v(_) {}
2633 }'''); 2791 }''');
2634 await assertErrors(source, 2792 await computeAnalysisResult(source);
2793 assertErrors(source,
2635 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2794 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2636 verify([source]); 2795 verify([source]);
2637 } 2796 }
2638 2797
2639 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingS etter() async { 2798 test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingS etter() async {
2640 // 16133 2799 // 16133
2641 Source source = addSource(r''' 2800 Source source = addSource(r'''
2642 class I { 2801 class I {
2643 var v; 2802 var v;
2644 } 2803 }
2645 class C implements I { 2804 class C implements I {
2646 get v => 1; 2805 get v => 1;
2647 }'''); 2806 }''');
2648 await assertErrors(source, 2807 await computeAnalysisResult(source);
2808 assertErrors(source,
2649 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); 2809 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
2650 verify([source]); 2810 verify([source]);
2651 } 2811 }
2652 2812
2653 test_nonAbstractClassInheritsAbstractMemberThree() async { 2813 test_nonAbstractClassInheritsAbstractMemberThree() async {
2654 Source source = addSource(r''' 2814 Source source = addSource(r'''
2655 abstract class A { 2815 abstract class A {
2656 m(); 2816 m();
2657 n(); 2817 n();
2658 o(); 2818 o();
2659 } 2819 }
2660 class C extends A { 2820 class C extends A {
2661 }'''); 2821 }''');
2662 await assertErrors(source, 2822 await computeAnalysisResult(source);
2823 assertErrors(source,
2663 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE]); 2824 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE]);
2664 verify([source]); 2825 verify([source]);
2665 } 2826 }
2666 2827
2667 test_nonAbstractClassInheritsAbstractMemberTwo() async { 2828 test_nonAbstractClassInheritsAbstractMemberTwo() async {
2668 Source source = addSource(r''' 2829 Source source = addSource(r'''
2669 abstract class A { 2830 abstract class A {
2670 m(); 2831 m();
2671 n(); 2832 n();
2672 } 2833 }
2673 class C extends A { 2834 class C extends A {
2674 }'''); 2835 }''');
2675 await assertErrors(source, 2836 await computeAnalysisResult(source);
2837 assertErrors(source,
2676 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); 2838 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
2677 verify([source]); 2839 verify([source]);
2678 } 2840 }
2679 2841
2680 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingB oth() async { 2842 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingB oth() async {
2681 // 16133 2843 // 16133
2682 Source source = addSource(r''' 2844 Source source = addSource(r'''
2683 class I { 2845 class I {
2684 var v; 2846 var v;
2685 } 2847 }
2686 class C implements I { 2848 class C implements I {
2687 }'''); 2849 }''');
2688 await assertErrors(source, 2850 await computeAnalysisResult(source);
2851 assertErrors(source,
2689 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); 2852 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
2690 verify([source]); 2853 verify([source]);
2691 } 2854 }
2692 2855
2693 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromMixin_missingBoth( ) async { 2856 test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromMixin_missingBoth( ) async {
2694 // 26411 2857 // 26411
2695 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); 2858 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true);
2696 Source source = addSource(r''' 2859 Source source = addSource(r'''
2697 class A { 2860 class A {
2698 int f; 2861 int f;
2699 } 2862 }
2700 class B extends A {} 2863 class B extends A {}
2701 class C extends Object with B {} 2864 class C extends Object with B {}
2702 '''); 2865 ''');
2703 await assertErrors(source, 2866 await computeAnalysisResult(source);
2867 assertErrors(source,
2704 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); 2868 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
2705 verify([source]); 2869 verify([source]);
2706 } 2870 }
2707 2871
2708 test_nonTypeInCatchClause_noElement() async { 2872 test_nonTypeInCatchClause_noElement() async {
2709 Source source = addSource(r''' 2873 Source source = addSource(r'''
2710 f() { 2874 f() {
2711 try { 2875 try {
2712 } on T catch (e) { 2876 } on T catch (e) {
2713 } 2877 }
2714 }'''); 2878 }''');
2715 await assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); 2879 await computeAnalysisResult(source);
2880 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]);
2716 verify([source]); 2881 verify([source]);
2717 } 2882 }
2718 2883
2719 test_nonTypeInCatchClause_notType() async { 2884 test_nonTypeInCatchClause_notType() async {
2720 Source source = addSource(r''' 2885 Source source = addSource(r'''
2721 var T = 0; 2886 var T = 0;
2722 f() { 2887 f() {
2723 try { 2888 try {
2724 } on T catch (e) { 2889 } on T catch (e) {
2725 } 2890 }
2726 }'''); 2891 }''');
2727 await assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); 2892 await computeAnalysisResult(source);
2893 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]);
2728 verify([source]); 2894 verify([source]);
2729 } 2895 }
2730 2896
2731 test_nonVoidReturnForOperator() async { 2897 test_nonVoidReturnForOperator() async {
2732 Source source = addSource(r''' 2898 Source source = addSource(r'''
2733 class A { 2899 class A {
2734 int operator []=(a, b) { return a; } 2900 int operator []=(a, b) { return a; }
2735 }'''); 2901 }''');
2736 await assertErrors( 2902 await computeAnalysisResult(source);
2737 source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]); 2903 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]);
2738 verify([source]); 2904 verify([source]);
2739 } 2905 }
2740 2906
2741 test_nonVoidReturnForSetter_function() async { 2907 test_nonVoidReturnForSetter_function() async {
2742 Source source = addSource(r''' 2908 Source source = addSource(r'''
2743 int set x(int v) { 2909 int set x(int v) {
2744 return 42; 2910 return 42;
2745 }'''); 2911 }''');
2746 await assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); 2912 await computeAnalysisResult(source);
2913 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]);
2747 verify([source]); 2914 verify([source]);
2748 } 2915 }
2749 2916
2750 test_nonVoidReturnForSetter_method() async { 2917 test_nonVoidReturnForSetter_method() async {
2751 Source source = addSource(r''' 2918 Source source = addSource(r'''
2752 class A { 2919 class A {
2753 int set x(int v) { 2920 int set x(int v) {
2754 return 42; 2921 return 42;
2755 } 2922 }
2756 }'''); 2923 }''');
2757 await assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); 2924 await computeAnalysisResult(source);
2925 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]);
2758 verify([source]); 2926 verify([source]);
2759 } 2927 }
2760 2928
2761 test_notAType() async { 2929 test_notAType() async {
2762 Source source = addSource(r''' 2930 Source source = addSource(r'''
2763 f() {} 2931 f() {}
2764 main() { 2932 main() {
2765 f v = null; 2933 f v = null;
2766 }'''); 2934 }''');
2767 await assertErrors(source, [StaticWarningCode.NOT_A_TYPE]); 2935 await computeAnalysisResult(source);
2936 assertErrors(source, [StaticWarningCode.NOT_A_TYPE]);
2768 verify([source]); 2937 verify([source]);
2769 } 2938 }
2770 2939
2771 test_notEnoughRequiredArguments() async { 2940 test_notEnoughRequiredArguments() async {
2772 Source source = addSource(r''' 2941 Source source = addSource(r'''
2773 f(int a, String b) {} 2942 f(int a, String b) {}
2774 main() { 2943 main() {
2775 f(); 2944 f();
2776 }'''); 2945 }''');
2777 await assertErrors( 2946 await computeAnalysisResult(source);
2778 source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); 2947 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
2779 verify([source]); 2948 verify([source]);
2780 } 2949 }
2781 2950
2782 test_notEnoughRequiredArguments_functionExpression() async { 2951 test_notEnoughRequiredArguments_functionExpression() async {
2783 Source source = addSource(r''' 2952 Source source = addSource(r'''
2784 main() { 2953 main() {
2785 (int x) {} (); 2954 (int x) {} ();
2786 }'''); 2955 }''');
2787 await assertErrors( 2956 await computeAnalysisResult(source);
2788 source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); 2957 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
2789 verify([source]); 2958 verify([source]);
2790 } 2959 }
2791 2960
2792 test_notEnoughRequiredArguments_getterReturningFunction() async { 2961 test_notEnoughRequiredArguments_getterReturningFunction() async {
2793 Source source = addSource(r''' 2962 Source source = addSource(r'''
2794 typedef Getter(self); 2963 typedef Getter(self);
2795 Getter getter = (x) => x; 2964 Getter getter = (x) => x;
2796 main() { 2965 main() {
2797 getter(); 2966 getter();
2798 }'''); 2967 }''');
2799 await assertErrors( 2968 await computeAnalysisResult(source);
2800 source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); 2969 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
2801 verify([source]); 2970 verify([source]);
2802 } 2971 }
2803 2972
2804 test_partOfDifferentLibrary() async { 2973 test_partOfDifferentLibrary() async {
2805 Source source = addSource(r''' 2974 Source source = addSource(r'''
2806 library lib; 2975 library lib;
2807 part 'part.dart';'''); 2976 part 'part.dart';''');
2808 addNamedSource("/part.dart", "part of lub;"); 2977 addNamedSource("/part.dart", "part of lub;");
2809 await assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]); 2978 await computeAnalysisResult(source);
2979 assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]);
2810 verify([source]); 2980 verify([source]);
2811 } 2981 }
2812 2982
2813 test_redirectToInvalidFunctionType() async { 2983 test_redirectToInvalidFunctionType() async {
2814 Source source = addSource(r''' 2984 Source source = addSource(r'''
2815 class A implements B { 2985 class A implements B {
2816 A(int p) {} 2986 A(int p) {}
2817 } 2987 }
2818 class B { 2988 class B {
2819 factory B() = A; 2989 factory B() = A;
2820 }'''); 2990 }''');
2821 await assertErrors( 2991 await computeAnalysisResult(source);
2822 source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]); 2992 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]);
2823 verify([source]); 2993 verify([source]);
2824 } 2994 }
2825 2995
2826 test_redirectToInvalidReturnType() async { 2996 test_redirectToInvalidReturnType() async {
2827 Source source = addSource(r''' 2997 Source source = addSource(r'''
2828 class A { 2998 class A {
2829 A() {} 2999 A() {}
2830 } 3000 }
2831 class B { 3001 class B {
2832 factory B() = A; 3002 factory B() = A;
2833 }'''); 3003 }''');
2834 await assertErrors( 3004 await computeAnalysisResult(source);
2835 source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]); 3005 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]);
2836 verify([source]); 3006 verify([source]);
2837 } 3007 }
2838 3008
2839 test_redirectToMissingConstructor_named() async { 3009 test_redirectToMissingConstructor_named() async {
2840 Source source = addSource(r''' 3010 Source source = addSource(r'''
2841 class A implements B{ 3011 class A implements B{
2842 A() {} 3012 A() {}
2843 } 3013 }
2844 class B { 3014 class B {
2845 factory B() = A.name; 3015 factory B() = A.name;
2846 }'''); 3016 }''');
2847 await assertErrors( 3017 await computeAnalysisResult(source);
2848 source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); 3018 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
2849 } 3019 }
2850 3020
2851 test_redirectToMissingConstructor_unnamed() async { 3021 test_redirectToMissingConstructor_unnamed() async {
2852 Source source = addSource(r''' 3022 Source source = addSource(r'''
2853 class A implements B{ 3023 class A implements B{
2854 A.name() {} 3024 A.name() {}
2855 } 3025 }
2856 class B { 3026 class B {
2857 factory B() = A; 3027 factory B() = A;
2858 }'''); 3028 }''');
2859 await assertErrors( 3029 await computeAnalysisResult(source);
2860 source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); 3030 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
2861 } 3031 }
2862 3032
2863 test_redirectToNonClass_notAType() async { 3033 test_redirectToNonClass_notAType() async {
2864 Source source = addSource(r''' 3034 Source source = addSource(r'''
2865 class B { 3035 class B {
2866 int A; 3036 int A;
2867 factory B() = A; 3037 factory B() = A;
2868 }'''); 3038 }''');
2869 await assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); 3039 await computeAnalysisResult(source);
3040 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]);
2870 verify([source]); 3041 verify([source]);
2871 } 3042 }
2872 3043
2873 test_redirectToNonClass_undefinedIdentifier() async { 3044 test_redirectToNonClass_undefinedIdentifier() async {
2874 Source source = addSource(r''' 3045 Source source = addSource(r'''
2875 class B { 3046 class B {
2876 factory B() = A; 3047 factory B() = A;
2877 }'''); 3048 }''');
2878 await assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); 3049 await computeAnalysisResult(source);
3050 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]);
2879 verify([source]); 3051 verify([source]);
2880 } 3052 }
2881 3053
2882 test_returnWithoutValue_async() async { 3054 test_returnWithoutValue_async() async {
2883 Source source = addSource(''' 3055 Source source = addSource('''
2884 import 'dart:async'; 3056 import 'dart:async';
2885 Future<int> f() async { 3057 Future<int> f() async {
2886 return; 3058 return;
2887 } 3059 }
2888 '''); 3060 ''');
2889 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 3061 await computeAnalysisResult(source);
3062 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2890 verify([source]); 3063 verify([source]);
2891 } 3064 }
2892 3065
2893 test_returnWithoutValue_factoryConstructor() async { 3066 test_returnWithoutValue_factoryConstructor() async {
2894 Source source = addSource("class A { factory A() { return; } }"); 3067 Source source = addSource("class A { factory A() { return; } }");
2895 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 3068 await computeAnalysisResult(source);
3069 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2896 verify([source]); 3070 verify([source]);
2897 } 3071 }
2898 3072
2899 test_returnWithoutValue_function() async { 3073 test_returnWithoutValue_function() async {
2900 Source source = addSource("int f() { return; }"); 3074 Source source = addSource("int f() { return; }");
2901 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 3075 await computeAnalysisResult(source);
3076 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2902 verify([source]); 3077 verify([source]);
2903 } 3078 }
2904 3079
2905 test_returnWithoutValue_method() async { 3080 test_returnWithoutValue_method() async {
2906 Source source = addSource("class A { int m() { return; } }"); 3081 Source source = addSource("class A { int m() { return; } }");
2907 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 3082 await computeAnalysisResult(source);
3083 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2908 verify([source]); 3084 verify([source]);
2909 } 3085 }
2910 3086
2911 test_returnWithoutValue_mixedReturnTypes_function() async { 3087 test_returnWithoutValue_mixedReturnTypes_function() async {
2912 // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no 3088 // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no
2913 // MIXED_RETURN_TYPES are created. 3089 // MIXED_RETURN_TYPES are created.
2914 Source source = addSource(r''' 3090 Source source = addSource(r'''
2915 int f(int x) { 3091 int f(int x) {
2916 if (x < 0) { 3092 if (x < 0) {
2917 return 1; 3093 return 1;
2918 } 3094 }
2919 return; 3095 return;
2920 }'''); 3096 }''');
2921 await assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 3097 await computeAnalysisResult(source);
3098 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2922 verify([source]); 3099 verify([source]);
2923 } 3100 }
2924 3101
2925 test_staticAccessToInstanceMember_method_invocation() async { 3102 test_staticAccessToInstanceMember_method_invocation() async {
2926 Source source = addSource(r''' 3103 Source source = addSource(r'''
2927 class A { 3104 class A {
2928 m() {} 3105 m() {}
2929 } 3106 }
2930 main() { 3107 main() {
2931 A.m(); 3108 A.m();
2932 }'''); 3109 }''');
2933 await assertErrors( 3110 await computeAnalysisResult(source);
2934 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 3111 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2935 verify([source]); 3112 verify([source]);
2936 } 3113 }
2937 3114
2938 test_staticAccessToInstanceMember_method_reference() async { 3115 test_staticAccessToInstanceMember_method_reference() async {
2939 Source source = addSource(r''' 3116 Source source = addSource(r'''
2940 class A { 3117 class A {
2941 m() {} 3118 m() {}
2942 } 3119 }
2943 main() { 3120 main() {
2944 A.m; 3121 A.m;
2945 }'''); 3122 }''');
2946 await assertErrors( 3123 await computeAnalysisResult(source);
2947 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 3124 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2948 verify([source]); 3125 verify([source]);
2949 } 3126 }
2950 3127
2951 test_staticAccessToInstanceMember_propertyAccess_field() async { 3128 test_staticAccessToInstanceMember_propertyAccess_field() async {
2952 Source source = addSource(r''' 3129 Source source = addSource(r'''
2953 class A { 3130 class A {
2954 var f; 3131 var f;
2955 } 3132 }
2956 main() { 3133 main() {
2957 A.f; 3134 A.f;
2958 }'''); 3135 }''');
2959 await assertErrors( 3136 await computeAnalysisResult(source);
2960 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 3137 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2961 verify([source]); 3138 verify([source]);
2962 } 3139 }
2963 3140
2964 test_staticAccessToInstanceMember_propertyAccess_getter() async { 3141 test_staticAccessToInstanceMember_propertyAccess_getter() async {
2965 Source source = addSource(r''' 3142 Source source = addSource(r'''
2966 class A { 3143 class A {
2967 get f => 42; 3144 get f => 42;
2968 } 3145 }
2969 main() { 3146 main() {
2970 A.f; 3147 A.f;
2971 }'''); 3148 }''');
2972 await assertErrors( 3149 await computeAnalysisResult(source);
2973 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 3150 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2974 verify([source]); 3151 verify([source]);
2975 } 3152 }
2976 3153
2977 test_staticAccessToInstanceMember_propertyAccess_setter() async { 3154 test_staticAccessToInstanceMember_propertyAccess_setter() async {
2978 Source source = addSource(r''' 3155 Source source = addSource(r'''
2979 class A { 3156 class A {
2980 set f(x) {} 3157 set f(x) {}
2981 } 3158 }
2982 main() { 3159 main() {
2983 A.f = 42; 3160 A.f = 42;
2984 }'''); 3161 }''');
2985 await assertErrors( 3162 await computeAnalysisResult(source);
2986 source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 3163 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2987 verify([source]); 3164 verify([source]);
2988 } 3165 }
2989 3166
2990 test_switchExpressionNotAssignable() async { 3167 test_switchExpressionNotAssignable() async {
2991 Source source = addSource(r''' 3168 Source source = addSource(r'''
2992 f(int p) { 3169 f(int p) {
2993 switch (p) { 3170 switch (p) {
2994 case 'a': break; 3171 case 'a': break;
2995 } 3172 }
2996 }'''); 3173 }''');
2997 await assertErrors( 3174 await computeAnalysisResult(source);
2998 source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]); 3175 assertErrors(source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]);
2999 verify([source]); 3176 verify([source]);
3000 } 3177 }
3001 3178
3002 test_typeAnnotationDeferredClass_asExpression() async { 3179 test_typeAnnotationDeferredClass_asExpression() async {
3003 await resolveWithErrors(<String>[ 3180 await resolveWithErrors(<String>[
3004 r''' 3181 r'''
3005 library lib1; 3182 library lib1;
3006 class A {}''', 3183 class A {}''',
3007 r''' 3184 r'''
3008 library root; 3185 library root;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
3185 3362
3186 test_typeAnnotationGenericFunctionParameter_localFunction() async { 3363 test_typeAnnotationGenericFunctionParameter_localFunction() async {
3187 Source source = addSource(r''' 3364 Source source = addSource(r'''
3188 class A { 3365 class A {
3189 void method() { 3366 void method() {
3190 T local<T>(Object t) { 3367 T local<T>(Object t) {
3191 return (t is T) ? t : null; 3368 return (t is T) ? t : null;
3192 } 3369 }
3193 } 3370 }
3194 }'''); 3371 }''');
3195 await assertErrors( 3372 await computeAnalysisResult(source);
3373 assertErrors(
3196 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); 3374 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]);
3197 verify([source]); 3375 verify([source]);
3198 } 3376 }
3199 3377
3200 test_typeAnnotationGenericFunctionParameter_method() async { 3378 test_typeAnnotationGenericFunctionParameter_method() async {
3201 Source source = addSource(r''' 3379 Source source = addSource(r'''
3202 class A { 3380 class A {
3203 T method<T>(Object t) { 3381 T method<T>(Object t) {
3204 return (t is T) ? t : null; 3382 return (t is T) ? t : null;
3205 } 3383 }
3206 }'''); 3384 }''');
3207 await assertErrors( 3385 await computeAnalysisResult(source);
3386 assertErrors(
3208 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); 3387 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]);
3209 verify([source]); 3388 verify([source]);
3210 } 3389 }
3211 3390
3212 test_typeAnnotationGenericFunctionParameter_topLevelFunction() async { 3391 test_typeAnnotationGenericFunctionParameter_topLevelFunction() async {
3213 Source source = addSource(r''' 3392 Source source = addSource(r'''
3214 T function<T>(Object t) { 3393 T function<T>(Object t) {
3215 return (t is T) ? t : null; 3394 return (t is T) ? t : null;
3216 }'''); 3395 }''');
3217 await assertErrors( 3396 await computeAnalysisResult(source);
3397 assertErrors(
3218 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]); 3398 source, [StaticWarningCode.TYPE_ANNOTATION_GENERIC_FUNCTION_PARAMETER]);
3219 verify([source]); 3399 verify([source]);
3220 } 3400 }
3221 3401
3222 test_typeParameterReferencedByStatic_field() async { 3402 test_typeParameterReferencedByStatic_field() async {
3223 Source source = addSource(r''' 3403 Source source = addSource(r'''
3224 class A<K> { 3404 class A<K> {
3225 static K k; 3405 static K k;
3226 }'''); 3406 }''');
3227 await assertErrors( 3407 await computeAnalysisResult(source);
3408 assertErrors(
3228 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); 3409 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
3229 verify([source]); 3410 verify([source]);
3230 } 3411 }
3231 3412
3232 test_typeParameterReferencedByStatic_getter() async { 3413 test_typeParameterReferencedByStatic_getter() async {
3233 Source source = addSource(r''' 3414 Source source = addSource(r'''
3234 class A<K> { 3415 class A<K> {
3235 static K get k => null; 3416 static K get k => null;
3236 }'''); 3417 }''');
3237 await assertErrors( 3418 await computeAnalysisResult(source);
3419 assertErrors(
3238 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); 3420 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
3239 verify([source]); 3421 verify([source]);
3240 } 3422 }
3241 3423
3242 test_typeParameterReferencedByStatic_methodBodyReference() async { 3424 test_typeParameterReferencedByStatic_methodBodyReference() async {
3243 Source source = addSource(r''' 3425 Source source = addSource(r'''
3244 class A<K> { 3426 class A<K> {
3245 static m() { 3427 static m() {
3246 K k; 3428 K k;
3247 } 3429 }
3248 }'''); 3430 }''');
3249 await assertErrors( 3431 await computeAnalysisResult(source);
3432 assertErrors(
3250 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); 3433 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
3251 verify([source]); 3434 verify([source]);
3252 } 3435 }
3253 3436
3254 test_typeParameterReferencedByStatic_methodParameter() async { 3437 test_typeParameterReferencedByStatic_methodParameter() async {
3255 Source source = addSource(r''' 3438 Source source = addSource(r'''
3256 class A<K> { 3439 class A<K> {
3257 static m(K k) {} 3440 static m(K k) {}
3258 }'''); 3441 }''');
3259 await assertErrors( 3442 await computeAnalysisResult(source);
3443 assertErrors(
3260 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); 3444 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
3261 verify([source]); 3445 verify([source]);
3262 } 3446 }
3263 3447
3264 test_typeParameterReferencedByStatic_methodReturn() async { 3448 test_typeParameterReferencedByStatic_methodReturn() async {
3265 Source source = addSource(r''' 3449 Source source = addSource(r'''
3266 class A<K> { 3450 class A<K> {
3267 static K m() { return null; } 3451 static K m() { return null; }
3268 }'''); 3452 }''');
3269 await assertErrors( 3453 await computeAnalysisResult(source);
3454 assertErrors(
3270 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); 3455 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
3271 verify([source]); 3456 verify([source]);
3272 } 3457 }
3273 3458
3274 test_typeParameterReferencedByStatic_setter() async { 3459 test_typeParameterReferencedByStatic_setter() async {
3275 Source source = addSource(r''' 3460 Source source = addSource(r'''
3276 class A<K> { 3461 class A<K> {
3277 static set s(K k) {} 3462 static set s(K k) {}
3278 }'''); 3463 }''');
3279 await assertErrors( 3464 await computeAnalysisResult(source);
3465 assertErrors(
3280 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); 3466 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
3281 verify([source]); 3467 verify([source]);
3282 } 3468 }
3283 3469
3284 test_typePromotion_functionType_arg_InterToDyn() async { 3470 test_typePromotion_functionType_arg_InterToDyn() async {
3285 Source source = addSource(r''' 3471 Source source = addSource(r'''
3286 typedef FuncDyn(x); 3472 typedef FuncDyn(x);
3287 typedef FuncA(A a); 3473 typedef FuncA(A a);
3288 class A {} 3474 class A {}
3289 class B {} 3475 class B {}
3290 main(FuncA f) { 3476 main(FuncA f) {
3291 if (f is FuncDyn) { 3477 if (f is FuncDyn) {
3292 f(new B()); 3478 f(new B());
3293 } 3479 }
3294 }'''); 3480 }''');
3295 await assertErrors( 3481 await computeAnalysisResult(source);
3296 source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 3482 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
3297 } 3483 }
3298 3484
3299 test_typeTestNonType() async { 3485 test_typeTestNonType() async {
3300 Source source = addSource(r''' 3486 Source source = addSource(r'''
3301 var A = 0; 3487 var A = 0;
3302 f(var p) { 3488 f(var p) {
3303 if (p is A) { 3489 if (p is A) {
3304 } 3490 }
3305 }'''); 3491 }''');
3306 await assertErrors(source, [StaticWarningCode.TYPE_TEST_WITH_NON_TYPE]); 3492 await computeAnalysisResult(source);
3493 assertErrors(source, [StaticWarningCode.TYPE_TEST_WITH_NON_TYPE]);
3307 verify([source]); 3494 verify([source]);
3308 } 3495 }
3309 3496
3310 test_typeTestWithUndefinedName() async { 3497 test_typeTestWithUndefinedName() async {
3311 Source source = addSource(r''' 3498 Source source = addSource(r'''
3312 f(var p) { 3499 f(var p) {
3313 if (p is A) { 3500 if (p is A) {
3314 } 3501 }
3315 }'''); 3502 }''');
3316 await assertErrors( 3503 await computeAnalysisResult(source);
3317 source, [StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME]); 3504 assertErrors(source, [StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME]);
3318 verify([source]); 3505 verify([source]);
3319 } 3506 }
3320 3507
3321 test_undefinedClass_instanceCreation() async { 3508 test_undefinedClass_instanceCreation() async {
3322 Source source = addSource("f() { new C(); }"); 3509 Source source = addSource("f() { new C(); }");
3323 await assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); 3510 await computeAnalysisResult(source);
3511 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
3324 } 3512 }
3325 3513
3326 test_undefinedClass_variableDeclaration() async { 3514 test_undefinedClass_variableDeclaration() async {
3327 Source source = addSource("f() { C c; }"); 3515 Source source = addSource("f() { C c; }");
3328 await assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); 3516 await computeAnalysisResult(source);
3517 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
3329 } 3518 }
3330 3519
3331 test_undefinedClassBoolean_variableDeclaration() async { 3520 test_undefinedClassBoolean_variableDeclaration() async {
3332 Source source = addSource("f() { boolean v; }"); 3521 Source source = addSource("f() { boolean v; }");
3333 await assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); 3522 await computeAnalysisResult(source);
3523 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]);
3334 } 3524 }
3335 3525
3336 test_undefinedGetter_fromLibrary() async { 3526 test_undefinedGetter_fromLibrary() async {
3337 Source source1 = addNamedSource("/lib.dart", ""); 3527 Source source1 = addNamedSource("/lib.dart", "");
3338 Source source2 = addNamedSource( 3528 Source source2 = addNamedSource(
3339 "/lib2.dart", 3529 "/lib2.dart",
3340 r''' 3530 r'''
3341 import 'lib.dart' as lib; 3531 import 'lib.dart' as lib;
3342 void f() { 3532 void f() {
3343 var g = lib.gg; 3533 var g = lib.gg;
3344 }'''); 3534 }''');
3345 await assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); 3535 await computeAnalysisResult(source1);
3536 await computeAnalysisResult(source2);
3537 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]);
3346 verify([source1]); 3538 verify([source1]);
3347 } 3539 }
3348 3540
3349 test_undefinedIdentifier_for() async { 3541 test_undefinedIdentifier_for() async {
3350 Source source = addSource(r''' 3542 Source source = addSource(r'''
3351 f(var l) { 3543 f(var l) {
3352 for (e in l) { 3544 for (e in l) {
3353 } 3545 }
3354 }'''); 3546 }''');
3355 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3547 await computeAnalysisResult(source);
3548 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3356 } 3549 }
3357 3550
3358 test_undefinedIdentifier_function() async { 3551 test_undefinedIdentifier_function() async {
3359 Source source = addSource("int a() => b;"); 3552 Source source = addSource("int a() => b;");
3360 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3553 await computeAnalysisResult(source);
3554 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3361 } 3555 }
3362 3556
3363 test_undefinedIdentifier_importCore_withShow() async { 3557 test_undefinedIdentifier_importCore_withShow() async {
3364 Source source = addSource(r''' 3558 Source source = addSource(r'''
3365 import 'dart:core' show List; 3559 import 'dart:core' show List;
3366 main() { 3560 main() {
3367 List; 3561 List;
3368 String; 3562 String;
3369 }'''); 3563 }''');
3370 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3564 await computeAnalysisResult(source);
3565 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3371 } 3566 }
3372 3567
3373 test_undefinedIdentifier_initializer() async { 3568 test_undefinedIdentifier_initializer() async {
3374 Source source = addSource("var a = b;"); 3569 Source source = addSource("var a = b;");
3375 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3570 await computeAnalysisResult(source);
3571 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3376 } 3572 }
3377 3573
3378 test_undefinedIdentifier_methodInvocation() async { 3574 test_undefinedIdentifier_methodInvocation() async {
3379 Source source = addSource("f() { C.m(); }"); 3575 Source source = addSource("f() { C.m(); }");
3380 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3576 await computeAnalysisResult(source);
3577 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3381 } 3578 }
3382 3579
3383 test_undefinedIdentifier_private_getter() async { 3580 test_undefinedIdentifier_private_getter() async {
3384 addNamedSource( 3581 addNamedSource(
3385 "/lib.dart", 3582 "/lib.dart",
3386 r''' 3583 r'''
3387 library lib; 3584 library lib;
3388 class A { 3585 class A {
3389 var _foo; 3586 var _foo;
3390 }'''); 3587 }''');
3391 Source source = addSource(r''' 3588 Source source = addSource(r'''
3392 import 'lib.dart'; 3589 import 'lib.dart';
3393 class B extends A { 3590 class B extends A {
3394 test() { 3591 test() {
3395 var v = _foo; 3592 var v = _foo;
3396 } 3593 }
3397 }'''); 3594 }''');
3398 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3595 await computeAnalysisResult(source);
3596 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3399 } 3597 }
3400 3598
3401 test_undefinedIdentifier_private_setter() async { 3599 test_undefinedIdentifier_private_setter() async {
3402 addNamedSource( 3600 addNamedSource(
3403 "/lib.dart", 3601 "/lib.dart",
3404 r''' 3602 r'''
3405 library lib; 3603 library lib;
3406 class A { 3604 class A {
3407 var _foo; 3605 var _foo;
3408 }'''); 3606 }''');
3409 Source source = addSource(r''' 3607 Source source = addSource(r'''
3410 import 'lib.dart'; 3608 import 'lib.dart';
3411 class B extends A { 3609 class B extends A {
3412 test() { 3610 test() {
3413 _foo = 42; 3611 _foo = 42;
3414 } 3612 }
3415 }'''); 3613 }''');
3416 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3614 await computeAnalysisResult(source);
3615 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
3417 } 3616 }
3418 3617
3419 test_undefinedIdentifierAwait_function() async { 3618 test_undefinedIdentifierAwait_function() async {
3420 Source source = addSource("void a() { await; }"); 3619 Source source = addSource("void a() { await; }");
3421 await assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT]); 3620 await computeAnalysisResult(source);
3621 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT]);
3422 } 3622 }
3423 3623
3424 test_undefinedNamedParameter() async { 3624 test_undefinedNamedParameter() async {
3425 Source source = addSource(r''' 3625 Source source = addSource(r'''
3426 f({a, b}) {} 3626 f({a, b}) {}
3427 main() { 3627 main() {
3428 f(c: 1); 3628 f(c: 1);
3429 }'''); 3629 }''');
3430 await assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); 3630 await computeAnalysisResult(source);
3631 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]);
3431 // no verify(), 'c' is not resolved 3632 // no verify(), 'c' is not resolved
3432 } 3633 }
3433 3634
3434 test_undefinedSetter() async { 3635 test_undefinedSetter() async {
3435 addNamedSource("/lib.dart", ""); 3636 addNamedSource("/lib.dart", "");
3436 Source source2 = addNamedSource( 3637 Source source2 = addNamedSource(
3437 "/lib2.dart", 3638 "/lib2.dart",
3438 r''' 3639 r'''
3439 import 'lib.dart' as lib; 3640 import 'lib.dart' as lib;
3440 void f() { 3641 void f() {
3441 lib.gg = null; 3642 lib.gg = null;
3442 }'''); 3643 }''');
3443 await assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); 3644 await computeAnalysisResult(source2);
3645 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]);
3444 } 3646 }
3445 3647
3446 test_undefinedStaticMethodOrGetter_getter() async { 3648 test_undefinedStaticMethodOrGetter_getter() async {
3447 Source source = addSource(r''' 3649 Source source = addSource(r'''
3448 class C {} 3650 class C {}
3449 f(var p) { 3651 f(var p) {
3450 f(C.m); 3652 f(C.m);
3451 }'''); 3653 }''');
3452 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); 3654 await computeAnalysisResult(source);
3655 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
3453 } 3656 }
3454 3657
3455 test_undefinedStaticMethodOrGetter_getter_inSuperclass() async { 3658 test_undefinedStaticMethodOrGetter_getter_inSuperclass() async {
3456 Source source = addSource(r''' 3659 Source source = addSource(r'''
3457 class S { 3660 class S {
3458 static int get g => 0; 3661 static int get g => 0;
3459 } 3662 }
3460 class C extends S {} 3663 class C extends S {}
3461 f(var p) { 3664 f(var p) {
3462 f(C.g); 3665 f(C.g);
3463 }'''); 3666 }''');
3464 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); 3667 await computeAnalysisResult(source);
3668 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
3465 } 3669 }
3466 3670
3467 test_undefinedStaticMethodOrGetter_method() async { 3671 test_undefinedStaticMethodOrGetter_method() async {
3468 Source source = addSource(r''' 3672 Source source = addSource(r'''
3469 class C {} 3673 class C {}
3470 f(var p) { 3674 f(var p) {
3471 f(C.m()); 3675 f(C.m());
3472 }'''); 3676 }''');
3473 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); 3677 await computeAnalysisResult(source);
3678 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
3474 } 3679 }
3475 3680
3476 test_undefinedStaticMethodOrGetter_method_inSuperclass() async { 3681 test_undefinedStaticMethodOrGetter_method_inSuperclass() async {
3477 Source source = addSource(r''' 3682 Source source = addSource(r'''
3478 class S { 3683 class S {
3479 static m() {} 3684 static m() {}
3480 } 3685 }
3481 class C extends S {} 3686 class C extends S {}
3482 f(var p) { 3687 f(var p) {
3483 f(C.m()); 3688 f(C.m());
3484 }'''); 3689 }''');
3485 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); 3690 await computeAnalysisResult(source);
3691 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
3486 } 3692 }
3487 3693
3488 test_undefinedStaticMethodOrGetter_setter_inSuperclass() async { 3694 test_undefinedStaticMethodOrGetter_setter_inSuperclass() async {
3489 Source source = addSource(r''' 3695 Source source = addSource(r'''
3490 class S { 3696 class S {
3491 static set s(int i) {} 3697 static set s(int i) {}
3492 } 3698 }
3493 class C extends S {} 3699 class C extends S {}
3494 f(var p) { 3700 f(var p) {
3495 f(C.s = 1); 3701 f(C.s = 1);
3496 }'''); 3702 }''');
3497 await assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); 3703 await computeAnalysisResult(source);
3704 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
3498 } 3705 }
3499 3706
3500 test_voidReturnForGetter() async { 3707 test_voidReturnForGetter() async {
3501 Source source = addSource(r''' 3708 Source source = addSource(r'''
3502 class S { 3709 class S {
3503 void get value {} 3710 void get value {}
3504 }'''); 3711 }''');
3505 await assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); 3712 await computeAnalysisResult(source);
3713 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]);
3506 } 3714 }
3507 } 3715 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/static_type_warning_code_test.dart ('k') | pkg/analyzer/test/generated/strong_mode_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698