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

Side by Side Diff: pkg/analyzer/test/generated/hint_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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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.hint_code_test; 5 library analyzer.test.generated.hint_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/parser.dart'; 10 import 'package:analyzer/src/generated/parser.dart';
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 abstract class A { 70 abstract class A {
71 int get test; 71 int get test;
72 } 72 }
73 class B extends A { 73 class B extends A {
74 int get test { 74 int get test {
75 super.test; 75 super.test;
76 return 0; 76 return 0;
77 } 77 }
78 } 78 }
79 '''); 79 ''');
80 await assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]); 80 await computeAnalysisResult(source);
81 assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]);
81 verify([source]); 82 verify([source]);
82 } 83 }
83 84
84 test_abstractSuperMemberReference_method_invocation() async { 85 test_abstractSuperMemberReference_method_invocation() async {
85 Source source = addSource(r''' 86 Source source = addSource(r'''
86 abstract class A { 87 abstract class A {
87 void test(); 88 void test();
88 } 89 }
89 class B extends A { 90 class B extends A {
90 void test() { 91 void test() {
91 super.test(); 92 super.test();
92 } 93 }
93 } 94 }
94 '''); 95 ''');
95 await assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]); 96 await computeAnalysisResult(source);
97 assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]);
96 verify([source]); 98 verify([source]);
97 } 99 }
98 100
99 test_abstractSuperMemberReference_method_reference() async { 101 test_abstractSuperMemberReference_method_reference() async {
100 Source source = addSource(r''' 102 Source source = addSource(r'''
101 abstract class A { 103 abstract class A {
102 void test(); 104 void test();
103 } 105 }
104 class B extends A { 106 class B extends A {
105 void test() { 107 void test() {
106 super.test; 108 super.test;
107 } 109 }
108 } 110 }
109 '''); 111 ''');
110 await assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]); 112 await computeAnalysisResult(source);
113 assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]);
111 verify([source]); 114 verify([source]);
112 } 115 }
113 116
114 test_abstractSuperMemberReference_setter() async { 117 test_abstractSuperMemberReference_setter() async {
115 Source source = addSource(r''' 118 Source source = addSource(r'''
116 abstract class A { 119 abstract class A {
117 void set test(int v); 120 void set test(int v);
118 } 121 }
119 class B extends A { 122 class B extends A {
120 void set test(int v){ 123 void set test(int v){
121 super.test = 0; 124 super.test = 0;
122 } 125 }
123 } 126 }
124 '''); 127 ''');
125 await assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]); 128 await computeAnalysisResult(source);
129 assertErrors(source, [HintCode.ABSTRACT_SUPER_MEMBER_REFERENCE]);
126 verify([source]); 130 verify([source]);
127 } 131 }
128 132
129 test_argumentTypeNotAssignable_functionType() async { 133 test_argumentTypeNotAssignable_functionType() async {
130 Source source = addSource(r''' 134 Source source = addSource(r'''
131 m() { 135 m() {
132 var a = new A(); 136 var a = new A();
133 a.n(() => 0); 137 a.n(() => 0);
134 } 138 }
135 class A { 139 class A {
136 n(void f(int i)) {} 140 n(void f(int i)) {}
137 }'''); 141 }''');
138 await assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 142 await computeAnalysisResult(source);
143 assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
139 verify([source]); 144 verify([source]);
140 } 145 }
141 146
142 test_argumentTypeNotAssignable_message() async { 147 test_argumentTypeNotAssignable_message() async {
143 // The implementation of HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE assumes that 148 // The implementation of HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE assumes that
144 // StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE has the same message. 149 // StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE has the same message.
145 expect(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message, 150 expect(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message,
146 HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message); 151 HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message);
147 } 152 }
148 153
149 test_argumentTypeNotAssignable_type() async { 154 test_argumentTypeNotAssignable_type() async {
150 Source source = addSource(r''' 155 Source source = addSource(r'''
151 m() { 156 m() {
152 var i = ''; 157 var i = '';
153 n(i); 158 n(i);
154 } 159 }
155 n(int i) {}'''); 160 n(int i) {}''');
156 await assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 161 await computeAnalysisResult(source);
162 assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
157 verify([source]); 163 verify([source]);
158 } 164 }
159 165
160 test_canBeNullAfterNullAware_false_methodInvocation() async { 166 test_canBeNullAfterNullAware_false_methodInvocation() async {
161 Source source = addSource(r''' 167 Source source = addSource(r'''
162 m(x) { 168 m(x) {
163 x?.a()?.b(); 169 x?.a()?.b();
164 } 170 }
165 '''); 171 ''');
166 await assertNoErrors(source); 172 await computeAnalysisResult(source);
173 assertNoErrors(source);
167 verify([source]); 174 verify([source]);
168 } 175 }
169 176
170 test_canBeNullAfterNullAware_false_null() async { 177 test_canBeNullAfterNullAware_false_null() async {
171 Source source = addSource(r''' 178 Source source = addSource(r'''
172 m(x) { 179 m(x) {
173 x?.a.hashCode; 180 x?.a.hashCode;
174 x?.a.runtimeType; 181 x?.a.runtimeType;
175 x?.a.toString(); 182 x?.a.toString();
176 x?.b().hashCode; 183 x?.b().hashCode;
177 x?.b().runtimeType; 184 x?.b().runtimeType;
178 x?.b().toString(); 185 x?.b().toString();
179 } 186 }
180 '''); 187 ''');
181 await assertNoErrors(source); 188 await computeAnalysisResult(source);
189 assertNoErrors(source);
182 verify([source]); 190 verify([source]);
183 } 191 }
184 192
185 test_canBeNullAfterNullAware_false_propertyAccess() async { 193 test_canBeNullAfterNullAware_false_propertyAccess() async {
186 Source source = addSource(r''' 194 Source source = addSource(r'''
187 m(x) { 195 m(x) {
188 x?.a?.b; 196 x?.a?.b;
189 } 197 }
190 '''); 198 ''');
191 await assertNoErrors(source); 199 await computeAnalysisResult(source);
200 assertNoErrors(source);
192 verify([source]); 201 verify([source]);
193 } 202 }
194 203
195 test_canBeNullAfterNullAware_methodInvocation() async { 204 test_canBeNullAfterNullAware_methodInvocation() async {
196 Source source = addSource(r''' 205 Source source = addSource(r'''
197 m(x) { 206 m(x) {
198 x?.a.b(); 207 x?.a.b();
199 } 208 }
200 '''); 209 ''');
201 await assertErrors(source, [HintCode.CAN_BE_NULL_AFTER_NULL_AWARE]); 210 await computeAnalysisResult(source);
211 assertErrors(source, [HintCode.CAN_BE_NULL_AFTER_NULL_AWARE]);
202 verify([source]); 212 verify([source]);
203 } 213 }
204 214
205 test_canBeNullAfterNullAware_parenthesized() async { 215 test_canBeNullAfterNullAware_parenthesized() async {
206 Source source = addSource(r''' 216 Source source = addSource(r'''
207 m(x) { 217 m(x) {
208 (x?.a).b; 218 (x?.a).b;
209 } 219 }
210 '''); 220 ''');
211 await assertErrors(source, [HintCode.CAN_BE_NULL_AFTER_NULL_AWARE]); 221 await computeAnalysisResult(source);
222 assertErrors(source, [HintCode.CAN_BE_NULL_AFTER_NULL_AWARE]);
212 verify([source]); 223 verify([source]);
213 } 224 }
214 225
215 test_canBeNullAfterNullAware_propertyAccess() async { 226 test_canBeNullAfterNullAware_propertyAccess() async {
216 Source source = addSource(r''' 227 Source source = addSource(r'''
217 m(x) { 228 m(x) {
218 x?.a.b; 229 x?.a.b;
219 } 230 }
220 '''); 231 ''');
221 await assertErrors(source, [HintCode.CAN_BE_NULL_AFTER_NULL_AWARE]); 232 await computeAnalysisResult(source);
233 assertErrors(source, [HintCode.CAN_BE_NULL_AFTER_NULL_AWARE]);
222 verify([source]); 234 verify([source]);
223 } 235 }
224 236
225 test_deadCode_deadBlock_conditionalElse() async { 237 test_deadCode_deadBlock_conditionalElse() async {
226 Source source = addSource(r''' 238 Source source = addSource(r'''
227 f() { 239 f() {
228 true ? 1 : 2; 240 true ? 1 : 2;
229 }'''); 241 }''');
230 await assertErrors(source, [HintCode.DEAD_CODE]); 242 await computeAnalysisResult(source);
243 assertErrors(source, [HintCode.DEAD_CODE]);
231 verify([source]); 244 verify([source]);
232 } 245 }
233 246
234 test_deadCode_deadBlock_conditionalElse_nested() async { 247 test_deadCode_deadBlock_conditionalElse_nested() async {
235 // test that a dead else-statement can't generate additional violations 248 // test that a dead else-statement can't generate additional violations
236 Source source = addSource(r''' 249 Source source = addSource(r'''
237 f() { 250 f() {
238 true ? true : false && false; 251 true ? true : false && false;
239 }'''); 252 }''');
240 await assertErrors(source, [HintCode.DEAD_CODE]); 253 await computeAnalysisResult(source);
254 assertErrors(source, [HintCode.DEAD_CODE]);
241 verify([source]); 255 verify([source]);
242 } 256 }
243 257
244 test_deadCode_deadBlock_conditionalIf() async { 258 test_deadCode_deadBlock_conditionalIf() async {
245 Source source = addSource(r''' 259 Source source = addSource(r'''
246 f() { 260 f() {
247 false ? 1 : 2; 261 false ? 1 : 2;
248 }'''); 262 }''');
249 await assertErrors(source, [HintCode.DEAD_CODE]); 263 await computeAnalysisResult(source);
264 assertErrors(source, [HintCode.DEAD_CODE]);
250 verify([source]); 265 verify([source]);
251 } 266 }
252 267
253 test_deadCode_deadBlock_conditionalIf_nested() async { 268 test_deadCode_deadBlock_conditionalIf_nested() async {
254 // test that a dead then-statement can't generate additional violations 269 // test that a dead then-statement can't generate additional violations
255 Source source = addSource(r''' 270 Source source = addSource(r'''
256 f() { 271 f() {
257 false ? false && false : true; 272 false ? false && false : true;
258 }'''); 273 }''');
259 await assertErrors(source, [HintCode.DEAD_CODE]); 274 await computeAnalysisResult(source);
275 assertErrors(source, [HintCode.DEAD_CODE]);
260 verify([source]); 276 verify([source]);
261 } 277 }
262 278
263 test_deadCode_deadBlock_else() async { 279 test_deadCode_deadBlock_else() async {
264 Source source = addSource(r''' 280 Source source = addSource(r'''
265 f() { 281 f() {
266 if(true) {} else {} 282 if(true) {} else {}
267 }'''); 283 }''');
268 await assertErrors(source, [HintCode.DEAD_CODE]); 284 await computeAnalysisResult(source);
285 assertErrors(source, [HintCode.DEAD_CODE]);
269 verify([source]); 286 verify([source]);
270 } 287 }
271 288
272 test_deadCode_deadBlock_else_nested() async { 289 test_deadCode_deadBlock_else_nested() async {
273 // test that a dead else-statement can't generate additional violations 290 // test that a dead else-statement can't generate additional violations
274 Source source = addSource(r''' 291 Source source = addSource(r'''
275 f() { 292 f() {
276 if(true) {} else {if (false) {}} 293 if(true) {} else {if (false) {}}
277 }'''); 294 }''');
278 await assertErrors(source, [HintCode.DEAD_CODE]); 295 await computeAnalysisResult(source);
296 assertErrors(source, [HintCode.DEAD_CODE]);
279 verify([source]); 297 verify([source]);
280 } 298 }
281 299
282 test_deadCode_deadBlock_if() async { 300 test_deadCode_deadBlock_if() async {
283 Source source = addSource(r''' 301 Source source = addSource(r'''
284 f() { 302 f() {
285 if(false) {} 303 if(false) {}
286 }'''); 304 }''');
287 await assertErrors(source, [HintCode.DEAD_CODE]); 305 await computeAnalysisResult(source);
306 assertErrors(source, [HintCode.DEAD_CODE]);
288 verify([source]); 307 verify([source]);
289 } 308 }
290 309
291 test_deadCode_deadBlock_if_nested() async { 310 test_deadCode_deadBlock_if_nested() async {
292 // test that a dead then-statement can't generate additional violations 311 // test that a dead then-statement can't generate additional violations
293 Source source = addSource(r''' 312 Source source = addSource(r'''
294 f() { 313 f() {
295 if(false) {if(false) {}} 314 if(false) {if(false) {}}
296 }'''); 315 }''');
297 await assertErrors(source, [HintCode.DEAD_CODE]); 316 await computeAnalysisResult(source);
317 assertErrors(source, [HintCode.DEAD_CODE]);
298 verify([source]); 318 verify([source]);
299 } 319 }
300 320
301 test_deadCode_deadBlock_while() async { 321 test_deadCode_deadBlock_while() async {
302 Source source = addSource(r''' 322 Source source = addSource(r'''
303 f() { 323 f() {
304 while(false) {} 324 while(false) {}
305 }'''); 325 }''');
306 await assertErrors(source, [HintCode.DEAD_CODE]); 326 await computeAnalysisResult(source);
327 assertErrors(source, [HintCode.DEAD_CODE]);
307 verify([source]); 328 verify([source]);
308 } 329 }
309 330
310 test_deadCode_deadBlock_while_nested() async { 331 test_deadCode_deadBlock_while_nested() async {
311 // test that a dead while body can't generate additional violations 332 // test that a dead while body can't generate additional violations
312 Source source = addSource(r''' 333 Source source = addSource(r'''
313 f() { 334 f() {
314 while(false) {if(false) {}} 335 while(false) {if(false) {}}
315 }'''); 336 }''');
316 await assertErrors(source, [HintCode.DEAD_CODE]); 337 await computeAnalysisResult(source);
338 assertErrors(source, [HintCode.DEAD_CODE]);
317 verify([source]); 339 verify([source]);
318 } 340 }
319 341
320 test_deadCode_deadCatch_catchFollowingCatch() async { 342 test_deadCode_deadCatch_catchFollowingCatch() async {
321 Source source = addSource(r''' 343 Source source = addSource(r'''
322 class A {} 344 class A {}
323 f() { 345 f() {
324 try {} catch (e) {} catch (e) {} 346 try {} catch (e) {} catch (e) {}
325 }'''); 347 }''');
326 await assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); 348 await computeAnalysisResult(source);
349 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
327 verify([source]); 350 verify([source]);
328 } 351 }
329 352
330 test_deadCode_deadCatch_catchFollowingCatch_nested() async { 353 test_deadCode_deadCatch_catchFollowingCatch_nested() async {
331 // test that a dead catch clause can't generate additional violations 354 // test that a dead catch clause can't generate additional violations
332 Source source = addSource(r''' 355 Source source = addSource(r'''
333 class A {} 356 class A {}
334 f() { 357 f() {
335 try {} catch (e) {} catch (e) {if(false) {}} 358 try {} catch (e) {} catch (e) {if(false) {}}
336 }'''); 359 }''');
337 await assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); 360 await computeAnalysisResult(source);
361 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
338 verify([source]); 362 verify([source]);
339 } 363 }
340 364
341 test_deadCode_deadCatch_catchFollowingCatch_object() async { 365 test_deadCode_deadCatch_catchFollowingCatch_object() async {
342 Source source = addSource(r''' 366 Source source = addSource(r'''
343 f() { 367 f() {
344 try {} on Object catch (e) {} catch (e) {} 368 try {} on Object catch (e) {} catch (e) {}
345 }'''); 369 }''');
346 await assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); 370 await computeAnalysisResult(source);
371 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
347 verify([source]); 372 verify([source]);
348 } 373 }
349 374
350 test_deadCode_deadCatch_catchFollowingCatch_object_nested() async { 375 test_deadCode_deadCatch_catchFollowingCatch_object_nested() async {
351 // test that a dead catch clause can't generate additional violations 376 // test that a dead catch clause can't generate additional violations
352 Source source = addSource(r''' 377 Source source = addSource(r'''
353 f() { 378 f() {
354 try {} on Object catch (e) {} catch (e) {if(false) {}} 379 try {} on Object catch (e) {} catch (e) {if(false) {}}
355 }'''); 380 }''');
356 await assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); 381 await computeAnalysisResult(source);
382 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
357 verify([source]); 383 verify([source]);
358 } 384 }
359 385
360 test_deadCode_deadCatch_onCatchSubtype() async { 386 test_deadCode_deadCatch_onCatchSubtype() async {
361 Source source = addSource(r''' 387 Source source = addSource(r'''
362 class A {} 388 class A {}
363 class B extends A {} 389 class B extends A {}
364 f() { 390 f() {
365 try {} on A catch (e) {} on B catch (e) {} 391 try {} on A catch (e) {} on B catch (e) {}
366 }'''); 392 }''');
367 await assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]); 393 await computeAnalysisResult(source);
394 assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]);
368 verify([source]); 395 verify([source]);
369 } 396 }
370 397
371 test_deadCode_deadCatch_onCatchSubtype_nested() async { 398 test_deadCode_deadCatch_onCatchSubtype_nested() async {
372 // test that a dead catch clause can't generate additional violations 399 // test that a dead catch clause can't generate additional violations
373 Source source = addSource(r''' 400 Source source = addSource(r'''
374 class A {} 401 class A {}
375 class B extends A {} 402 class B extends A {}
376 f() { 403 f() {
377 try {} on A catch (e) {} on B catch (e) {if(false) {}} 404 try {} on A catch (e) {} on B catch (e) {if(false) {}}
378 }'''); 405 }''');
379 await assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]); 406 await computeAnalysisResult(source);
407 assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]);
380 verify([source]); 408 verify([source]);
381 } 409 }
382 410
383 test_deadCode_deadFinalReturnInCase() async { 411 test_deadCode_deadFinalReturnInCase() async {
384 Source source = addSource(r''' 412 Source source = addSource(r'''
385 f() { 413 f() {
386 switch (true) { 414 switch (true) {
387 case true: 415 case true:
388 try { 416 try {
389 int a = 1; 417 int a = 1;
390 } finally { 418 } finally {
391 return; 419 return;
392 } 420 }
393 return; 421 return;
394 default: 422 default:
395 break; 423 break;
396 } 424 }
397 }'''); 425 }''');
398 await assertErrors(source, [HintCode.DEAD_CODE]); 426 await computeAnalysisResult(source);
427 assertErrors(source, [HintCode.DEAD_CODE]);
399 verify([source]); 428 verify([source]);
400 } 429 }
401 430
402 test_deadCode_deadFinalStatementInCase() async { 431 test_deadCode_deadFinalStatementInCase() async {
403 Source source = addSource(r''' 432 Source source = addSource(r'''
404 f() { 433 f() {
405 switch (true) { 434 switch (true) {
406 case true: 435 case true:
407 try { 436 try {
408 int a = 1; 437 int a = 1;
409 } finally { 438 } finally {
410 return; 439 return;
411 } 440 }
412 int b = 1; 441 int b = 1;
413 default: 442 default:
414 break; 443 break;
415 } 444 }
416 }'''); 445 }''');
417 // A single dead statement at the end of a switch case that is not a 446 // A single dead statement at the end of a switch case that is not a
418 // terminating statement will yield two errors. 447 // terminating statement will yield two errors.
419 await assertErrors(source, 448 await computeAnalysisResult(source);
449 assertErrors(source,
420 [HintCode.DEAD_CODE, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]); 450 [HintCode.DEAD_CODE, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]);
421 verify([source]); 451 verify([source]);
422 } 452 }
423 453
424 test_deadCode_deadOperandLHS_and() async { 454 test_deadCode_deadOperandLHS_and() async {
425 Source source = addSource(r''' 455 Source source = addSource(r'''
426 f() { 456 f() {
427 bool b = false && false; 457 bool b = false && false;
428 }'''); 458 }''');
429 await assertErrors(source, [HintCode.DEAD_CODE]); 459 await computeAnalysisResult(source);
460 assertErrors(source, [HintCode.DEAD_CODE]);
430 verify([source]); 461 verify([source]);
431 } 462 }
432 463
433 test_deadCode_deadOperandLHS_and_nested() async { 464 test_deadCode_deadOperandLHS_and_nested() async {
434 Source source = addSource(r''' 465 Source source = addSource(r'''
435 f() { 466 f() {
436 bool b = false && (false && false); 467 bool b = false && (false && false);
437 }'''); 468 }''');
438 await assertErrors(source, [HintCode.DEAD_CODE]); 469 await computeAnalysisResult(source);
470 assertErrors(source, [HintCode.DEAD_CODE]);
439 verify([source]); 471 verify([source]);
440 } 472 }
441 473
442 test_deadCode_deadOperandLHS_or() async { 474 test_deadCode_deadOperandLHS_or() async {
443 Source source = addSource(r''' 475 Source source = addSource(r'''
444 f() { 476 f() {
445 bool b = true || true; 477 bool b = true || true;
446 }'''); 478 }''');
447 await assertErrors(source, [HintCode.DEAD_CODE]); 479 await computeAnalysisResult(source);
480 assertErrors(source, [HintCode.DEAD_CODE]);
448 verify([source]); 481 verify([source]);
449 } 482 }
450 483
451 test_deadCode_deadOperandLHS_or_nested() async { 484 test_deadCode_deadOperandLHS_or_nested() async {
452 Source source = addSource(r''' 485 Source source = addSource(r'''
453 f() { 486 f() {
454 bool b = true || (false && false); 487 bool b = true || (false && false);
455 }'''); 488 }''');
456 await assertErrors(source, [HintCode.DEAD_CODE]); 489 await computeAnalysisResult(source);
490 assertErrors(source, [HintCode.DEAD_CODE]);
457 verify([source]); 491 verify([source]);
458 } 492 }
459 493
460 test_deadCode_statementAfterBreak_inDefaultCase() async { 494 test_deadCode_statementAfterBreak_inDefaultCase() async {
461 Source source = addSource(r''' 495 Source source = addSource(r'''
462 f(v) { 496 f(v) {
463 switch(v) { 497 switch(v) {
464 case 1: 498 case 1:
465 default: 499 default:
466 break; 500 break;
467 var a; 501 var a;
468 } 502 }
469 }'''); 503 }''');
470 await assertErrors(source, [HintCode.DEAD_CODE]); 504 await computeAnalysisResult(source);
505 assertErrors(source, [HintCode.DEAD_CODE]);
471 verify([source]); 506 verify([source]);
472 } 507 }
473 508
474 test_deadCode_statementAfterBreak_inForEachStatement() async { 509 test_deadCode_statementAfterBreak_inForEachStatement() async {
475 Source source = addSource(r''' 510 Source source = addSource(r'''
476 f() { 511 f() {
477 var list; 512 var list;
478 for(var l in list) { 513 for(var l in list) {
479 break; 514 break;
480 var a; 515 var a;
481 } 516 }
482 }'''); 517 }''');
483 await assertErrors(source, [HintCode.DEAD_CODE]); 518 await computeAnalysisResult(source);
519 assertErrors(source, [HintCode.DEAD_CODE]);
484 verify([source]); 520 verify([source]);
485 } 521 }
486 522
487 test_deadCode_statementAfterBreak_inForStatement() async { 523 test_deadCode_statementAfterBreak_inForStatement() async {
488 Source source = addSource(r''' 524 Source source = addSource(r'''
489 f() { 525 f() {
490 for(;;) { 526 for(;;) {
491 break; 527 break;
492 var a; 528 var a;
493 } 529 }
494 }'''); 530 }''');
495 await assertErrors(source, [HintCode.DEAD_CODE]); 531 await computeAnalysisResult(source);
532 assertErrors(source, [HintCode.DEAD_CODE]);
496 verify([source]); 533 verify([source]);
497 } 534 }
498 535
499 test_deadCode_statementAfterBreak_inSwitchCase() async { 536 test_deadCode_statementAfterBreak_inSwitchCase() async {
500 Source source = addSource(r''' 537 Source source = addSource(r'''
501 f(v) { 538 f(v) {
502 switch(v) { 539 switch(v) {
503 case 1: 540 case 1:
504 break; 541 break;
505 var a; 542 var a;
506 } 543 }
507 }'''); 544 }''');
508 await assertErrors(source, [HintCode.DEAD_CODE]); 545 await computeAnalysisResult(source);
546 assertErrors(source, [HintCode.DEAD_CODE]);
509 verify([source]); 547 verify([source]);
510 } 548 }
511 549
512 test_deadCode_statementAfterBreak_inWhileStatement() async { 550 test_deadCode_statementAfterBreak_inWhileStatement() async {
513 Source source = addSource(r''' 551 Source source = addSource(r'''
514 f(v) { 552 f(v) {
515 while(v) { 553 while(v) {
516 break; 554 break;
517 var a; 555 var a;
518 } 556 }
519 }'''); 557 }''');
520 await assertErrors(source, [HintCode.DEAD_CODE]); 558 await computeAnalysisResult(source);
559 assertErrors(source, [HintCode.DEAD_CODE]);
521 verify([source]); 560 verify([source]);
522 } 561 }
523 562
524 test_deadCode_statementAfterContinue_inForEachStatement() async { 563 test_deadCode_statementAfterContinue_inForEachStatement() async {
525 Source source = addSource(r''' 564 Source source = addSource(r'''
526 f() { 565 f() {
527 var list; 566 var list;
528 for(var l in list) { 567 for(var l in list) {
529 continue; 568 continue;
530 var a; 569 var a;
531 } 570 }
532 }'''); 571 }''');
533 await assertErrors(source, [HintCode.DEAD_CODE]); 572 await computeAnalysisResult(source);
573 assertErrors(source, [HintCode.DEAD_CODE]);
534 verify([source]); 574 verify([source]);
535 } 575 }
536 576
537 test_deadCode_statementAfterContinue_inForStatement() async { 577 test_deadCode_statementAfterContinue_inForStatement() async {
538 Source source = addSource(r''' 578 Source source = addSource(r'''
539 f() { 579 f() {
540 for(;;) { 580 for(;;) {
541 continue; 581 continue;
542 var a; 582 var a;
543 } 583 }
544 }'''); 584 }''');
545 await assertErrors(source, [HintCode.DEAD_CODE]); 585 await computeAnalysisResult(source);
586 assertErrors(source, [HintCode.DEAD_CODE]);
546 verify([source]); 587 verify([source]);
547 } 588 }
548 589
549 test_deadCode_statementAfterContinue_inWhileStatement() async { 590 test_deadCode_statementAfterContinue_inWhileStatement() async {
550 Source source = addSource(r''' 591 Source source = addSource(r'''
551 f(v) { 592 f(v) {
552 while(v) { 593 while(v) {
553 continue; 594 continue;
554 var a; 595 var a;
555 } 596 }
556 }'''); 597 }''');
557 await assertErrors(source, [HintCode.DEAD_CODE]); 598 await computeAnalysisResult(source);
599 assertErrors(source, [HintCode.DEAD_CODE]);
558 verify([source]); 600 verify([source]);
559 } 601 }
560 602
561 test_deadCode_statementAfterExitingIf_returns() async { 603 test_deadCode_statementAfterExitingIf_returns() async {
562 Source source = addSource(r''' 604 Source source = addSource(r'''
563 f() { 605 f() {
564 if (1 > 2) { 606 if (1 > 2) {
565 return; 607 return;
566 } else { 608 } else {
567 return; 609 return;
568 } 610 }
569 var one = 1; 611 var one = 1;
570 }'''); 612 }''');
571 await assertErrors(source, [HintCode.DEAD_CODE]); 613 await computeAnalysisResult(source);
614 assertErrors(source, [HintCode.DEAD_CODE]);
572 verify([source]); 615 verify([source]);
573 } 616 }
574 617
575 test_deadCode_statementAfterRethrow() async { 618 test_deadCode_statementAfterRethrow() async {
576 Source source = addSource(r''' 619 Source source = addSource(r'''
577 f() { 620 f() {
578 try { 621 try {
579 var one = 1; 622 var one = 1;
580 } catch (e) { 623 } catch (e) {
581 rethrow; 624 rethrow;
582 var two = 2; 625 var two = 2;
583 } 626 }
584 }'''); 627 }''');
585 await assertErrors(source, [HintCode.DEAD_CODE]); 628 await computeAnalysisResult(source);
629 assertErrors(source, [HintCode.DEAD_CODE]);
586 verify([source]); 630 verify([source]);
587 } 631 }
588 632
589 test_deadCode_statementAfterReturn_function() async { 633 test_deadCode_statementAfterReturn_function() async {
590 Source source = addSource(r''' 634 Source source = addSource(r'''
591 f() { 635 f() {
592 var one = 1; 636 var one = 1;
593 return; 637 return;
594 var two = 2; 638 var two = 2;
595 }'''); 639 }''');
596 await assertErrors(source, [HintCode.DEAD_CODE]); 640 await computeAnalysisResult(source);
641 assertErrors(source, [HintCode.DEAD_CODE]);
597 verify([source]); 642 verify([source]);
598 } 643 }
599 644
600 test_deadCode_statementAfterReturn_ifStatement() async { 645 test_deadCode_statementAfterReturn_ifStatement() async {
601 Source source = addSource(r''' 646 Source source = addSource(r'''
602 f(bool b) { 647 f(bool b) {
603 if(b) { 648 if(b) {
604 var one = 1; 649 var one = 1;
605 return; 650 return;
606 var two = 2; 651 var two = 2;
607 } 652 }
608 }'''); 653 }''');
609 await assertErrors(source, [HintCode.DEAD_CODE]); 654 await computeAnalysisResult(source);
655 assertErrors(source, [HintCode.DEAD_CODE]);
610 verify([source]); 656 verify([source]);
611 } 657 }
612 658
613 test_deadCode_statementAfterReturn_method() async { 659 test_deadCode_statementAfterReturn_method() async {
614 Source source = addSource(r''' 660 Source source = addSource(r'''
615 class A { 661 class A {
616 m() { 662 m() {
617 var one = 1; 663 var one = 1;
618 return; 664 return;
619 var two = 2; 665 var two = 2;
620 } 666 }
621 }'''); 667 }''');
622 await assertErrors(source, [HintCode.DEAD_CODE]); 668 await computeAnalysisResult(source);
669 assertErrors(source, [HintCode.DEAD_CODE]);
623 verify([source]); 670 verify([source]);
624 } 671 }
625 672
626 test_deadCode_statementAfterReturn_nested() async { 673 test_deadCode_statementAfterReturn_nested() async {
627 Source source = addSource(r''' 674 Source source = addSource(r'''
628 f() { 675 f() {
629 var one = 1; 676 var one = 1;
630 return; 677 return;
631 if(false) {} 678 if(false) {}
632 }'''); 679 }''');
633 await assertErrors(source, [HintCode.DEAD_CODE]); 680 await computeAnalysisResult(source);
681 assertErrors(source, [HintCode.DEAD_CODE]);
634 verify([source]); 682 verify([source]);
635 } 683 }
636 684
637 test_deadCode_statementAfterReturn_twoReturns() async { 685 test_deadCode_statementAfterReturn_twoReturns() async {
638 Source source = addSource(r''' 686 Source source = addSource(r'''
639 f() { 687 f() {
640 var one = 1; 688 var one = 1;
641 return; 689 return;
642 var two = 2; 690 var two = 2;
643 return; 691 return;
644 var three = 3; 692 var three = 3;
645 }'''); 693 }''');
646 await assertErrors(source, [HintCode.DEAD_CODE]); 694 await computeAnalysisResult(source);
695 assertErrors(source, [HintCode.DEAD_CODE]);
647 verify([source]); 696 verify([source]);
648 } 697 }
649 698
650 test_deadCode_statementAfterThrow() async { 699 test_deadCode_statementAfterThrow() async {
651 Source source = addSource(r''' 700 Source source = addSource(r'''
652 f() { 701 f() {
653 var one = 1; 702 var one = 1;
654 throw 'Stop here'; 703 throw 'Stop here';
655 var two = 2; 704 var two = 2;
656 }'''); 705 }''');
657 await assertErrors(source, [HintCode.DEAD_CODE]); 706 await computeAnalysisResult(source);
707 assertErrors(source, [HintCode.DEAD_CODE]);
658 verify([source]); 708 verify([source]);
659 } 709 }
660 710
661 test_deprecatedAnnotationUse_assignment() async { 711 test_deprecatedAnnotationUse_assignment() async {
662 Source source = addSource(r''' 712 Source source = addSource(r'''
663 class A { 713 class A {
664 @deprecated 714 @deprecated
665 A operator+(A a) { return a; } 715 A operator+(A a) { return a; }
666 } 716 }
667 f(A a) { 717 f(A a) {
668 A b; 718 A b;
669 a += b; 719 a += b;
670 }'''); 720 }''');
671 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 721 await computeAnalysisResult(source);
722 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
672 verify([source]); 723 verify([source]);
673 } 724 }
674 725
675 test_deprecatedAnnotationUse_call() async { 726 test_deprecatedAnnotationUse_call() async {
676 Source source = addSource(r''' 727 Source source = addSource(r'''
677 class A { 728 class A {
678 @deprecated 729 @deprecated
679 call() {} 730 call() {}
680 m() { 731 m() {
681 A a = new A(); 732 A a = new A();
682 a(); 733 a();
683 } 734 }
684 }'''); 735 }''');
685 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 736 await computeAnalysisResult(source);
737 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
686 verify([source]); 738 verify([source]);
687 } 739 }
688 740
689 test_deprecatedAnnotationUse_deprecated() async { 741 test_deprecatedAnnotationUse_deprecated() async {
690 Source source = addSource(r''' 742 Source source = addSource(r'''
691 class A { 743 class A {
692 @deprecated 744 @deprecated
693 m() {} 745 m() {}
694 n() {m();} 746 n() {m();}
695 }'''); 747 }''');
696 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 748 await computeAnalysisResult(source);
749 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
697 verify([source]); 750 verify([source]);
698 } 751 }
699 752
700 test_deprecatedAnnotationUse_Deprecated() async { 753 test_deprecatedAnnotationUse_Deprecated() async {
701 Source source = addSource(r''' 754 Source source = addSource(r'''
702 class A { 755 class A {
703 @Deprecated('0.9') 756 @Deprecated('0.9')
704 m() {} 757 m() {}
705 n() {m();} 758 n() {m();}
706 }'''); 759 }''');
707 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 760 await computeAnalysisResult(source);
761 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
708 verify([source]); 762 verify([source]);
709 } 763 }
710 764
711 test_deprecatedAnnotationUse_export() async { 765 test_deprecatedAnnotationUse_export() async {
712 Source source = addSource("export 'deprecated_library.dart';"); 766 Source source = addSource("export 'deprecated_library.dart';");
713 addNamedSource( 767 addNamedSource(
714 "/deprecated_library.dart", 768 "/deprecated_library.dart",
715 r''' 769 r'''
716 @deprecated 770 @deprecated
717 library deprecated_library; 771 library deprecated_library;
718 class A {}'''); 772 class A {}''');
719 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 773 await computeAnalysisResult(source);
774 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
720 verify([source]); 775 verify([source]);
721 } 776 }
722 777
723 test_deprecatedAnnotationUse_field() async { 778 test_deprecatedAnnotationUse_field() async {
724 Source source = addSource(r''' 779 Source source = addSource(r'''
725 class A { 780 class A {
726 @deprecated 781 @deprecated
727 int x = 1; 782 int x = 1;
728 } 783 }
729 f(A a) { 784 f(A a) {
730 return a.x; 785 return a.x;
731 }'''); 786 }''');
732 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 787 await computeAnalysisResult(source);
788 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
733 verify([source]); 789 verify([source]);
734 } 790 }
735 791
736 test_deprecatedAnnotationUse_getter() async { 792 test_deprecatedAnnotationUse_getter() async {
737 Source source = addSource(r''' 793 Source source = addSource(r'''
738 class A { 794 class A {
739 @deprecated 795 @deprecated
740 get m => 1; 796 get m => 1;
741 } 797 }
742 f(A a) { 798 f(A a) {
743 return a.m; 799 return a.m;
744 }'''); 800 }''');
745 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 801 await computeAnalysisResult(source);
802 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
746 verify([source]); 803 verify([source]);
747 } 804 }
748 805
749 test_deprecatedAnnotationUse_import() async { 806 test_deprecatedAnnotationUse_import() async {
750 Source source = addSource(r''' 807 Source source = addSource(r'''
751 import 'deprecated_library.dart'; 808 import 'deprecated_library.dart';
752 f(A a) {}'''); 809 f(A a) {}''');
753 addNamedSource( 810 addNamedSource(
754 "/deprecated_library.dart", 811 "/deprecated_library.dart",
755 r''' 812 r'''
756 @deprecated 813 @deprecated
757 library deprecated_library; 814 library deprecated_library;
758 class A {}'''); 815 class A {}''');
759 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 816 await computeAnalysisResult(source);
817 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
760 verify([source]); 818 verify([source]);
761 } 819 }
762 820
763 test_deprecatedAnnotationUse_indexExpression() async { 821 test_deprecatedAnnotationUse_indexExpression() async {
764 Source source = addSource(r''' 822 Source source = addSource(r'''
765 class A { 823 class A {
766 @deprecated 824 @deprecated
767 operator[](int i) {} 825 operator[](int i) {}
768 } 826 }
769 f(A a) { 827 f(A a) {
770 return a[1]; 828 return a[1];
771 }'''); 829 }''');
772 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 830 await computeAnalysisResult(source);
831 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
773 verify([source]); 832 verify([source]);
774 } 833 }
775 834
776 test_deprecatedAnnotationUse_instanceCreation() async { 835 test_deprecatedAnnotationUse_instanceCreation() async {
777 Source source = addSource(r''' 836 Source source = addSource(r'''
778 class A { 837 class A {
779 @deprecated 838 @deprecated
780 A(int i) {} 839 A(int i) {}
781 } 840 }
782 f() { 841 f() {
783 A a = new A(1); 842 A a = new A(1);
784 }'''); 843 }''');
785 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 844 await computeAnalysisResult(source);
845 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
786 verify([source]); 846 verify([source]);
787 } 847 }
788 848
789 test_deprecatedAnnotationUse_instanceCreation_namedConstructor() async { 849 test_deprecatedAnnotationUse_instanceCreation_namedConstructor() async {
790 Source source = addSource(r''' 850 Source source = addSource(r'''
791 class A { 851 class A {
792 @deprecated 852 @deprecated
793 A.named(int i) {} 853 A.named(int i) {}
794 } 854 }
795 f() { 855 f() {
796 A a = new A.named(1); 856 A a = new A.named(1);
797 }'''); 857 }''');
798 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 858 await computeAnalysisResult(source);
859 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
799 verify([source]); 860 verify([source]);
800 } 861 }
801 862
802 test_deprecatedAnnotationUse_named() async { 863 test_deprecatedAnnotationUse_named() async {
803 Source source = addSource(r''' 864 Source source = addSource(r'''
804 class A { 865 class A {
805 m({@deprecated int x}) {} 866 m({@deprecated int x}) {}
806 n() {m(x: 1);} 867 n() {m(x: 1);}
807 }'''); 868 }''');
808 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 869 await computeAnalysisResult(source);
870 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
809 verify([source]); 871 verify([source]);
810 } 872 }
811 873
812 test_deprecatedAnnotationUse_operator() async { 874 test_deprecatedAnnotationUse_operator() async {
813 Source source = addSource(r''' 875 Source source = addSource(r'''
814 class A { 876 class A {
815 @deprecated 877 @deprecated
816 operator+(A a) {} 878 operator+(A a) {}
817 } 879 }
818 f(A a) { 880 f(A a) {
819 A b; 881 A b;
820 return a + b; 882 return a + b;
821 }'''); 883 }''');
822 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 884 await computeAnalysisResult(source);
885 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
823 verify([source]); 886 verify([source]);
824 } 887 }
825 888
826 test_deprecatedAnnotationUse_positional() async { 889 test_deprecatedAnnotationUse_positional() async {
827 Source source = addSource(r''' 890 Source source = addSource(r'''
828 class A { 891 class A {
829 m([@deprecated int x]) {} 892 m([@deprecated int x]) {}
830 n() {m(1);} 893 n() {m(1);}
831 }'''); 894 }''');
832 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 895 await computeAnalysisResult(source);
896 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
833 verify([source]); 897 verify([source]);
834 } 898 }
835 899
836 test_deprecatedAnnotationUse_setter() async { 900 test_deprecatedAnnotationUse_setter() async {
837 Source source = addSource(r''' 901 Source source = addSource(r'''
838 class A { 902 class A {
839 @deprecated 903 @deprecated
840 set s(v) {} 904 set s(v) {}
841 } 905 }
842 f(A a) { 906 f(A a) {
843 return a.s = 1; 907 return a.s = 1;
844 }'''); 908 }''');
845 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 909 await computeAnalysisResult(source);
910 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
846 verify([source]); 911 verify([source]);
847 } 912 }
848 913
849 test_deprecatedAnnotationUse_superConstructor() async { 914 test_deprecatedAnnotationUse_superConstructor() async {
850 Source source = addSource(r''' 915 Source source = addSource(r'''
851 class A { 916 class A {
852 @deprecated 917 @deprecated
853 A() {} 918 A() {}
854 } 919 }
855 class B extends A { 920 class B extends A {
856 B() : super() {} 921 B() : super() {}
857 }'''); 922 }''');
858 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 923 await computeAnalysisResult(source);
924 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
859 verify([source]); 925 verify([source]);
860 } 926 }
861 927
862 test_deprecatedAnnotationUse_superConstructor_namedConstructor() async { 928 test_deprecatedAnnotationUse_superConstructor_namedConstructor() async {
863 Source source = addSource(r''' 929 Source source = addSource(r'''
864 class A { 930 class A {
865 @deprecated 931 @deprecated
866 A.named() {} 932 A.named() {}
867 } 933 }
868 class B extends A { 934 class B extends A {
869 B() : super.named() {} 935 B() : super.named() {}
870 }'''); 936 }''');
871 await assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); 937 await computeAnalysisResult(source);
938 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
872 verify([source]); 939 verify([source]);
873 } 940 }
874 941
875 test_divisionOptimization_double() async { 942 test_divisionOptimization_double() async {
876 Source source = addSource(r''' 943 Source source = addSource(r'''
877 f(double x, double y) { 944 f(double x, double y) {
878 var v = (x / y).toInt(); 945 var v = (x / y).toInt();
879 }'''); 946 }''');
880 await assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); 947 await computeAnalysisResult(source);
948 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
881 verify([source]); 949 verify([source]);
882 } 950 }
883 951
884 test_divisionOptimization_int() async { 952 test_divisionOptimization_int() async {
885 Source source = addSource(r''' 953 Source source = addSource(r'''
886 f(int x, int y) { 954 f(int x, int y) {
887 var v = (x / y).toInt(); 955 var v = (x / y).toInt();
888 }'''); 956 }''');
889 await assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); 957 await computeAnalysisResult(source);
958 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
890 verify([source]); 959 verify([source]);
891 } 960 }
892 961
893 test_divisionOptimization_propagatedType() async { 962 test_divisionOptimization_propagatedType() async {
894 // Tests the propagated type information of the '/' method 963 // Tests the propagated type information of the '/' method
895 Source source = addSource(r''' 964 Source source = addSource(r'''
896 f(x, y) { 965 f(x, y) {
897 x = 1; 966 x = 1;
898 y = 1; 967 y = 1;
899 var v = (x / y).toInt(); 968 var v = (x / y).toInt();
900 }'''); 969 }''');
901 await assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); 970 await computeAnalysisResult(source);
971 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
902 verify([source]); 972 verify([source]);
903 } 973 }
904 974
905 test_divisionOptimization_wrappedBinaryExpression() async { 975 test_divisionOptimization_wrappedBinaryExpression() async {
906 Source source = addSource(r''' 976 Source source = addSource(r'''
907 f(int x, int y) { 977 f(int x, int y) {
908 var v = (((x / y))).toInt(); 978 var v = (((x / y))).toInt();
909 }'''); 979 }''');
910 await assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); 980 await computeAnalysisResult(source);
981 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
911 verify([source]); 982 verify([source]);
912 } 983 }
913 984
914 test_duplicateImport() async { 985 test_duplicateImport() async {
915 Source source = addSource(r''' 986 Source source = addSource(r'''
916 library L; 987 library L;
917 import 'lib1.dart'; 988 import 'lib1.dart';
918 import 'lib1.dart'; 989 import 'lib1.dart';
919 A a;'''); 990 A a;''');
920 addNamedSource( 991 addNamedSource(
921 "/lib1.dart", 992 "/lib1.dart",
922 r''' 993 r'''
923 library lib1; 994 library lib1;
924 class A {}'''); 995 class A {}''');
925 await assertErrors(source, [HintCode.DUPLICATE_IMPORT]); 996 await computeAnalysisResult(source);
997 assertErrors(source, [HintCode.DUPLICATE_IMPORT]);
926 verify([source]); 998 verify([source]);
927 } 999 }
928 1000
929 test_duplicateImport2() async { 1001 test_duplicateImport2() async {
930 Source source = addSource(r''' 1002 Source source = addSource(r'''
931 library L; 1003 library L;
932 import 'lib1.dart'; 1004 import 'lib1.dart';
933 import 'lib1.dart'; 1005 import 'lib1.dart';
934 import 'lib1.dart'; 1006 import 'lib1.dart';
935 A a;'''); 1007 A a;''');
936 addNamedSource( 1008 addNamedSource(
937 "/lib1.dart", 1009 "/lib1.dart",
938 r''' 1010 r'''
939 library lib1; 1011 library lib1;
940 class A {}'''); 1012 class A {}''');
941 await assertErrors( 1013 await computeAnalysisResult(source);
1014 assertErrors(
942 source, [HintCode.DUPLICATE_IMPORT, HintCode.DUPLICATE_IMPORT]); 1015 source, [HintCode.DUPLICATE_IMPORT, HintCode.DUPLICATE_IMPORT]);
943 verify([source]); 1016 verify([source]);
944 } 1017 }
945 1018
946 test_duplicateImport3() async { 1019 test_duplicateImport3() async {
947 Source source = addSource(r''' 1020 Source source = addSource(r'''
948 library L; 1021 library L;
949 import 'lib1.dart' as M show A hide B; 1022 import 'lib1.dart' as M show A hide B;
950 import 'lib1.dart' as M show A hide B; 1023 import 'lib1.dart' as M show A hide B;
951 M.A a;'''); 1024 M.A a;''');
952 addNamedSource( 1025 addNamedSource(
953 "/lib1.dart", 1026 "/lib1.dart",
954 r''' 1027 r'''
955 library lib1; 1028 library lib1;
956 class A {} 1029 class A {}
957 class B {}'''); 1030 class B {}''');
958 await assertErrors(source, [HintCode.DUPLICATE_IMPORT]); 1031 await computeAnalysisResult(source);
1032 assertErrors(source, [HintCode.DUPLICATE_IMPORT]);
959 verify([source]); 1033 verify([source]);
960 } 1034 }
961 1035
962 test_factory__expr_return_null_OK() async { 1036 test_factory__expr_return_null_OK() async {
963 Source source = addSource(r''' 1037 Source source = addSource(r'''
964 import 'package:meta/meta.dart'; 1038 import 'package:meta/meta.dart';
965 1039
966 class Stateful { 1040 class Stateful {
967 @factory 1041 @factory
968 State createState() => null; 1042 State createState() => null;
969 } 1043 }
970 1044
971 class State { } 1045 class State { }
972 '''); 1046 ''');
973 await assertNoErrors(source); 1047 await computeAnalysisResult(source);
1048 assertNoErrors(source);
974 verify([source]); 1049 verify([source]);
975 } 1050 }
976 1051
977 test_factory_abstract_OK() async { 1052 test_factory_abstract_OK() async {
978 Source source = addSource(r''' 1053 Source source = addSource(r'''
979 import 'package:meta/meta.dart'; 1054 import 'package:meta/meta.dart';
980 1055
981 abstract class Stateful { 1056 abstract class Stateful {
982 @factory 1057 @factory
983 State createState(); 1058 State createState();
984 } 1059 }
985 1060
986 class State { } 1061 class State { }
987 '''); 1062 ''');
988 await assertNoErrors(source); 1063 await computeAnalysisResult(source);
1064 assertNoErrors(source);
989 verify([source]); 1065 verify([source]);
990 } 1066 }
991 1067
992 test_factory_bad_return() async { 1068 test_factory_bad_return() async {
993 Source source = addSource(r''' 1069 Source source = addSource(r'''
994 import 'package:meta/meta.dart'; 1070 import 'package:meta/meta.dart';
995 1071
996 class Stateful { 1072 class Stateful {
997 State _s = new State(); 1073 State _s = new State();
998 1074
999 @factory 1075 @factory
1000 State createState() => _s; 1076 State createState() => _s;
1001 } 1077 }
1002 1078
1003 class State { } 1079 class State { }
1004 '''); 1080 ''');
1005 await assertErrors(source, [HintCode.INVALID_FACTORY_METHOD_IMPL]); 1081 await computeAnalysisResult(source);
1082 assertErrors(source, [HintCode.INVALID_FACTORY_METHOD_IMPL]);
1006 verify([source]); 1083 verify([source]);
1007 } 1084 }
1008 1085
1009 test_factory_block_OK() async { 1086 test_factory_block_OK() async {
1010 Source source = addSource(r''' 1087 Source source = addSource(r'''
1011 import 'package:meta/meta.dart'; 1088 import 'package:meta/meta.dart';
1012 1089
1013 class Stateful { 1090 class Stateful {
1014 @factory 1091 @factory
1015 State createState() { 1092 State createState() {
1016 return new State(); 1093 return new State();
1017 } 1094 }
1018 } 1095 }
1019 1096
1020 class State { } 1097 class State { }
1021 '''); 1098 ''');
1022 await assertNoErrors(source); 1099 await computeAnalysisResult(source);
1100 assertNoErrors(source);
1023 verify([source]); 1101 verify([source]);
1024 } 1102 }
1025 1103
1026 test_factory_block_return_null_OK() async { 1104 test_factory_block_return_null_OK() async {
1027 Source source = addSource(r''' 1105 Source source = addSource(r'''
1028 import 'package:meta/meta.dart'; 1106 import 'package:meta/meta.dart';
1029 1107
1030 class Stateful { 1108 class Stateful {
1031 @factory 1109 @factory
1032 State createState() { 1110 State createState() {
1033 return null; 1111 return null;
1034 } 1112 }
1035 } 1113 }
1036 1114
1037 class State { } 1115 class State { }
1038 '''); 1116 ''');
1039 await assertNoErrors(source); 1117 await computeAnalysisResult(source);
1118 assertNoErrors(source);
1040 verify([source]); 1119 verify([source]);
1041 } 1120 }
1042 1121
1043 test_factory_expr_OK() async { 1122 test_factory_expr_OK() async {
1044 Source source = addSource(r''' 1123 Source source = addSource(r'''
1045 import 'package:meta/meta.dart'; 1124 import 'package:meta/meta.dart';
1046 1125
1047 class Stateful { 1126 class Stateful {
1048 @factory 1127 @factory
1049 State createState() => new State(); 1128 State createState() => new State();
1050 } 1129 }
1051 1130
1052 class State { } 1131 class State { }
1053 '''); 1132 ''');
1054 await assertNoErrors(source); 1133 await computeAnalysisResult(source);
1134 assertNoErrors(source);
1055 verify([source]); 1135 verify([source]);
1056 } 1136 }
1057 1137
1058 test_factory_misplaced_annotation() async { 1138 test_factory_misplaced_annotation() async {
1059 Source source = addSource(r''' 1139 Source source = addSource(r'''
1060 import 'package:meta/meta.dart'; 1140 import 'package:meta/meta.dart';
1061 1141
1062 @factory 1142 @factory
1063 class X { 1143 class X {
1064 @factory 1144 @factory
1065 int x; 1145 int x;
1066 } 1146 }
1067 1147
1068 @factory 1148 @factory
1069 main() { } 1149 main() { }
1070 '''); 1150 ''');
1071 await assertErrors(source, [ 1151 await computeAnalysisResult(source);
1152 assertErrors(source, [
1072 HintCode.INVALID_FACTORY_ANNOTATION, 1153 HintCode.INVALID_FACTORY_ANNOTATION,
1073 HintCode.INVALID_FACTORY_ANNOTATION, 1154 HintCode.INVALID_FACTORY_ANNOTATION,
1074 HintCode.INVALID_FACTORY_ANNOTATION 1155 HintCode.INVALID_FACTORY_ANNOTATION
1075 ]); 1156 ]);
1076 verify([source]); 1157 verify([source]);
1077 } 1158 }
1078 1159
1079 test_factory_no_return_type_OK() async { 1160 test_factory_no_return_type_OK() async {
1080 Source source = addSource(r''' 1161 Source source = addSource(r'''
1081 import 'package:meta/meta.dart'; 1162 import 'package:meta/meta.dart';
1082 1163
1083 class Stateful { 1164 class Stateful {
1084 @factory 1165 @factory
1085 createState() { 1166 createState() {
1086 return new Stateful(); 1167 return new Stateful();
1087 } 1168 }
1088 } 1169 }
1089 '''); 1170 ''');
1090 // Null return types will get flagged elsewhere, no need to pile-on here. 1171 // Null return types will get flagged elsewhere, no need to pile-on here.
1091 await assertNoErrors(source); 1172 await computeAnalysisResult(source);
1173 assertNoErrors(source);
1092 verify([source]); 1174 verify([source]);
1093 } 1175 }
1094 1176
1095 test_factory_subclass_OK() async { 1177 test_factory_subclass_OK() async {
1096 Source source = addSource(r''' 1178 Source source = addSource(r'''
1097 import 'package:meta/meta.dart'; 1179 import 'package:meta/meta.dart';
1098 1180
1099 abstract class Stateful { 1181 abstract class Stateful {
1100 @factory 1182 @factory
1101 State createState(); 1183 State createState();
1102 } 1184 }
1103 1185
1104 class MyThing extends Stateful { 1186 class MyThing extends Stateful {
1105 @override 1187 @override
1106 State createState() { 1188 State createState() {
1107 print('my state'); 1189 print('my state');
1108 return new MyState(); 1190 return new MyState();
1109 } 1191 }
1110 } 1192 }
1111 1193
1112 class State { } 1194 class State { }
1113 class MyState extends State { } 1195 class MyState extends State { }
1114 '''); 1196 ''');
1115 await assertNoErrors(source); 1197 await computeAnalysisResult(source);
1198 assertNoErrors(source);
1116 verify([source]); 1199 verify([source]);
1117 } 1200 }
1118 1201
1119 test_factory_void_return() async { 1202 test_factory_void_return() async {
1120 Source source = addSource(r''' 1203 Source source = addSource(r'''
1121 import 'package:meta/meta.dart'; 1204 import 'package:meta/meta.dart';
1122 1205
1123 class Stateful { 1206 class Stateful {
1124 @factory 1207 @factory
1125 void createState() {} 1208 void createState() {}
1126 } 1209 }
1127 '''); 1210 ''');
1128 await assertErrors(source, [HintCode.INVALID_FACTORY_METHOD_DECL]); 1211 await computeAnalysisResult(source);
1212 assertErrors(source, [HintCode.INVALID_FACTORY_METHOD_DECL]);
1129 verify([source]); 1213 verify([source]);
1130 } 1214 }
1131 1215
1132 test_importDeferredLibraryWithLoadFunction() async { 1216 test_importDeferredLibraryWithLoadFunction() async {
1133 await resolveWithErrors(<String>[ 1217 await resolveWithErrors(<String>[
1134 r''' 1218 r'''
1135 library lib1; 1219 library lib1;
1136 loadLibrary() {} 1220 loadLibrary() {}
1137 f() {}''', 1221 f() {}''',
1138 r''' 1222 r'''
1139 library root; 1223 library root;
1140 import 'lib1.dart' deferred as lib1; 1224 import 'lib1.dart' deferred as lib1;
1141 main() { lib1.f(); }''' 1225 main() { lib1.f(); }'''
1142 ], <ErrorCode>[ 1226 ], <ErrorCode>[
1143 HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION 1227 HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION
1144 ]); 1228 ]);
1145 } 1229 }
1146 1230
1147 test_invalidAssignment_instanceVariable() async { 1231 test_invalidAssignment_instanceVariable() async {
1148 Source source = addSource(r''' 1232 Source source = addSource(r'''
1149 class A { 1233 class A {
1150 int x; 1234 int x;
1151 } 1235 }
1152 f(var y) { 1236 f(var y) {
1153 A a; 1237 A a;
1154 if(y is String) { 1238 if(y is String) {
1155 a.x = y; 1239 a.x = y;
1156 } 1240 }
1157 }'''); 1241 }''');
1158 await assertErrors(source, [HintCode.INVALID_ASSIGNMENT]); 1242 await computeAnalysisResult(source);
1243 assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
1159 verify([source]); 1244 verify([source]);
1160 } 1245 }
1161 1246
1162 test_invalidAssignment_localVariable() async { 1247 test_invalidAssignment_localVariable() async {
1163 Source source = addSource(r''' 1248 Source source = addSource(r'''
1164 f(var y) { 1249 f(var y) {
1165 if(y is String) { 1250 if(y is String) {
1166 int x = y; 1251 int x = y;
1167 } 1252 }
1168 }'''); 1253 }''');
1169 await assertErrors(source, [HintCode.INVALID_ASSIGNMENT]); 1254 await computeAnalysisResult(source);
1255 assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
1170 verify([source]); 1256 verify([source]);
1171 } 1257 }
1172 1258
1173 test_invalidAssignment_message() async { 1259 test_invalidAssignment_message() async {
1174 // The implementation of HintCode.INVALID_ASSIGNMENT assumes that 1260 // The implementation of HintCode.INVALID_ASSIGNMENT assumes that
1175 // StaticTypeWarningCode.INVALID_ASSIGNMENT has the same message. 1261 // StaticTypeWarningCode.INVALID_ASSIGNMENT has the same message.
1176 expect(StaticTypeWarningCode.INVALID_ASSIGNMENT.message, 1262 expect(StaticTypeWarningCode.INVALID_ASSIGNMENT.message,
1177 HintCode.INVALID_ASSIGNMENT.message); 1263 HintCode.INVALID_ASSIGNMENT.message);
1178 } 1264 }
1179 1265
1180 test_invalidAssignment_staticVariable() async { 1266 test_invalidAssignment_staticVariable() async {
1181 Source source = addSource(r''' 1267 Source source = addSource(r'''
1182 class A { 1268 class A {
1183 static int x; 1269 static int x;
1184 } 1270 }
1185 f(var y) { 1271 f(var y) {
1186 if(y is String) { 1272 if(y is String) {
1187 A.x = y; 1273 A.x = y;
1188 } 1274 }
1189 }'''); 1275 }''');
1190 await assertErrors(source, [HintCode.INVALID_ASSIGNMENT]); 1276 await computeAnalysisResult(source);
1277 assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
1191 verify([source]); 1278 verify([source]);
1192 } 1279 }
1193 1280
1194 test_invalidAssignment_variableDeclaration() async { 1281 test_invalidAssignment_variableDeclaration() async {
1195 // 17971 1282 // 17971
1196 Source source = addSource(r''' 1283 Source source = addSource(r'''
1197 class Point { 1284 class Point {
1198 final num x, y; 1285 final num x, y;
1199 Point(this.x, this.y); 1286 Point(this.x, this.y);
1200 Point operator +(Point other) { 1287 Point operator +(Point other) {
1201 return new Point(x+other.x, y+other.y); 1288 return new Point(x+other.x, y+other.y);
1202 } 1289 }
1203 } 1290 }
1204 main() { 1291 main() {
1205 var p1 = new Point(0, 0); 1292 var p1 = new Point(0, 0);
1206 var p2 = new Point(10, 10); 1293 var p2 = new Point(10, 10);
1207 int n = p1 + p2; 1294 int n = p1 + p2;
1208 }'''); 1295 }''');
1209 await assertErrors(source, [HintCode.INVALID_ASSIGNMENT]); 1296 await computeAnalysisResult(source);
1297 assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
1210 verify([source]); 1298 verify([source]);
1211 } 1299 }
1212 1300
1213 test_invalidUseOfProtectedMember_closure() async { 1301 test_invalidUseOfProtectedMember_closure() async {
1214 Source source = addNamedSource( 1302 Source source = addNamedSource(
1215 '/lib1.dart', 1303 '/lib1.dart',
1216 r''' 1304 r'''
1217 import 'package:meta/meta.dart'; 1305 import 'package:meta/meta.dart';
1218 1306
1219 class A { 1307 class A {
1220 @protected 1308 @protected
1221 int a() => 42; 1309 int a() => 42;
1222 } 1310 }
1223 '''); 1311 ''');
1224 Source source2 = addNamedSource( 1312 Source source2 = addNamedSource(
1225 '/lib2.dart', 1313 '/lib2.dart',
1226 r''' 1314 r'''
1227 import 'lib1.dart'; 1315 import 'lib1.dart';
1228 1316
1229 void main() { 1317 void main() {
1230 var leak = new A().a; 1318 var leak = new A().a;
1231 print(leak); 1319 print(leak);
1232 } 1320 }
1233 '''); 1321 ''');
1234 await assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); 1322 await computeAnalysisResult(source);
1235 await assertNoErrors(source); 1323 await computeAnalysisResult(source2);
1324 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1325 assertNoErrors(source);
1236 verify([source, source2]); 1326 verify([source, source2]);
1237 } 1327 }
1238 1328
1239 test_invalidUseOfProtectedMember_field() async { 1329 test_invalidUseOfProtectedMember_field() async {
1240 Source source = addNamedSource( 1330 Source source = addNamedSource(
1241 '/lib1.dart', 1331 '/lib1.dart',
1242 r''' 1332 r'''
1243 import 'package:meta/meta.dart'; 1333 import 'package:meta/meta.dart';
1244 class A { 1334 class A {
1245 @protected 1335 @protected
1246 int a; 1336 int a;
1247 } 1337 }
1248 '''); 1338 ''');
1249 Source source2 = addNamedSource( 1339 Source source2 = addNamedSource(
1250 '/lib2.dart', 1340 '/lib2.dart',
1251 r''' 1341 r'''
1252 import 'lib1.dart'; 1342 import 'lib1.dart';
1253 1343
1254 abstract class B { 1344 abstract class B {
1255 int b() => new A().a; 1345 int b() => new A().a;
1256 } 1346 }
1257 '''); 1347 ''');
1258 await assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); 1348 await computeAnalysisResult(source);
1259 await assertNoErrors(source); 1349 await computeAnalysisResult(source2);
1350 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1351 assertNoErrors(source);
1260 verify([source, source2]); 1352 verify([source, source2]);
1261 } 1353 }
1262 1354
1263 test_invalidUseOfProtectedMember_field_OK() async { 1355 test_invalidUseOfProtectedMember_field_OK() async {
1264 Source source = addSource(r''' 1356 Source source = addSource(r'''
1265 import 'package:meta/meta.dart'; 1357 import 'package:meta/meta.dart';
1266 class A { 1358 class A {
1267 @protected 1359 @protected
1268 int a; 1360 int a;
1269 } 1361 }
1270 abstract class B implements A { 1362 abstract class B implements A {
1271 int b() => a; 1363 int b() => a;
1272 }'''); 1364 }''');
1273 await assertNoErrors(source); 1365 await computeAnalysisResult(source);
1366 assertNoErrors(source);
1274 verify([source]); 1367 verify([source]);
1275 } 1368 }
1276 1369
1277 test_invalidUseOfProtectedMember_function() async { 1370 test_invalidUseOfProtectedMember_function() async {
1278 Source source = addNamedSource( 1371 Source source = addNamedSource(
1279 '/lib1.dart', 1372 '/lib1.dart',
1280 r''' 1373 r'''
1281 import 'package:meta/meta.dart'; 1374 import 'package:meta/meta.dart';
1282 class A { 1375 class A {
1283 @protected 1376 @protected
1284 void a(){ } 1377 void a(){ }
1285 } 1378 }
1286 '''); 1379 ''');
1287 Source source2 = addNamedSource( 1380 Source source2 = addNamedSource(
1288 '/lib2.dart', 1381 '/lib2.dart',
1289 r''' 1382 r'''
1290 import 'lib1.dart'; 1383 import 'lib1.dart';
1291 1384
1292 main() { 1385 main() {
1293 new A().a(); 1386 new A().a();
1294 } 1387 }
1295 '''); 1388 ''');
1296 await assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); 1389 await computeAnalysisResult(source);
1297 await assertNoErrors(source); 1390 await computeAnalysisResult(source2);
1391 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1392 assertNoErrors(source);
1298 verify([source, source2]); 1393 verify([source, source2]);
1299 } 1394 }
1300 1395
1301 test_invalidUseOfProtectedMember_function_OK() async { 1396 test_invalidUseOfProtectedMember_function_OK() async {
1302 Source source = addSource(r''' 1397 Source source = addSource(r'''
1303 import 'package:meta/meta.dart'; 1398 import 'package:meta/meta.dart';
1304 class A { 1399 class A {
1305 @protected 1400 @protected
1306 int a() => 0; 1401 int a() => 0;
1307 } 1402 }
1308 1403
1309 abstract class B implements A { 1404 abstract class B implements A {
1310 int b() => a(); 1405 int b() => a();
1311 }'''); 1406 }''');
1312 await assertNoErrors(source); 1407 await computeAnalysisResult(source);
1408 assertNoErrors(source);
1313 verify([source]); 1409 verify([source]);
1314 } 1410 }
1315 1411
1316 test_invalidUseOfProtectedMember_function_OK2() async { 1412 test_invalidUseOfProtectedMember_function_OK2() async {
1317 Source source = addSource(r''' 1413 Source source = addSource(r'''
1318 import 'package:meta/meta.dart'; 1414 import 'package:meta/meta.dart';
1319 class A { 1415 class A {
1320 @protected 1416 @protected
1321 void a(){ } 1417 void a(){ }
1322 } 1418 }
1323 main() { 1419 main() {
1324 new A().a(); 1420 new A().a();
1325 }'''); 1421 }''');
1326 await assertNoErrors(source); 1422 await computeAnalysisResult(source);
1423 assertNoErrors(source);
1327 verify([source]); 1424 verify([source]);
1328 } 1425 }
1329 1426
1330 test_invalidUseOfProtectedMember_getter() async { 1427 test_invalidUseOfProtectedMember_getter() async {
1331 Source source = addNamedSource( 1428 Source source = addNamedSource(
1332 '/lib1.dart', 1429 '/lib1.dart',
1333 r''' 1430 r'''
1334 import 'package:meta/meta.dart'; 1431 import 'package:meta/meta.dart';
1335 class A { 1432 class A {
1336 @protected 1433 @protected
1337 int get a => 42; 1434 int get a => 42;
1338 } 1435 }
1339 '''); 1436 ''');
1340 Source source2 = addNamedSource( 1437 Source source2 = addNamedSource(
1341 '/lib2.dart', 1438 '/lib2.dart',
1342 r''' 1439 r'''
1343 import 'lib1.dart'; 1440 import 'lib1.dart';
1344 1441
1345 class B { 1442 class B {
1346 A a; 1443 A a;
1347 int b() => a.a; 1444 int b() => a.a;
1348 } 1445 }
1349 '''); 1446 ''');
1350 await assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); 1447 await computeAnalysisResult(source);
1351 await assertNoErrors(source); 1448 await computeAnalysisResult(source2);
1449 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1450 assertNoErrors(source);
1352 verify([source, source2]); 1451 verify([source, source2]);
1353 } 1452 }
1354 1453
1355 test_invalidUseOfProtectedMember_getter_OK() async { 1454 test_invalidUseOfProtectedMember_getter_OK() async {
1356 Source source = addSource(r''' 1455 Source source = addSource(r'''
1357 import 'package:meta/meta.dart'; 1456 import 'package:meta/meta.dart';
1358 class A { 1457 class A {
1359 @protected 1458 @protected
1360 int get a => 42; 1459 int get a => 42;
1361 } 1460 }
1362 abstract class B implements A { 1461 abstract class B implements A {
1363 int b() => a; 1462 int b() => a;
1364 }'''); 1463 }''');
1365 await assertNoErrors(source); 1464 await computeAnalysisResult(source);
1465 assertNoErrors(source);
1366 verify([source]); 1466 verify([source]);
1367 } 1467 }
1368 1468
1369 test_invalidUseOfProtectedMember_in_docs_OK() async { 1469 test_invalidUseOfProtectedMember_in_docs_OK() async {
1370 Source source = addSource(r''' 1470 Source source = addSource(r'''
1371 import 'package:meta/meta.dart'; 1471 import 'package:meta/meta.dart';
1372 1472
1373 class A { 1473 class A {
1374 @protected 1474 @protected
1375 int a() => c; 1475 int a() => c;
1376 @protected 1476 @protected
1377 int get b => a(); 1477 int get b => a();
1378 @protected 1478 @protected
1379 int c = 42; 1479 int c = 42;
1380 } 1480 }
1381 1481
1382 /// OK: [A.a], [A.b], [A.c]. 1482 /// OK: [A.a], [A.b], [A.c].
1383 f() {} 1483 f() {}
1384 '''); 1484 ''');
1385 await assertNoErrors(source); 1485 await computeAnalysisResult(source);
1486 assertNoErrors(source);
1386 verify([source]); 1487 verify([source]);
1387 } 1488 }
1388 1489
1389 test_invalidUseOfProtectedMember_message() async { 1490 test_invalidUseOfProtectedMember_message() async {
1390 Source source = addNamedSource( 1491 Source source = addNamedSource(
1391 '/lib1.dart', 1492 '/lib1.dart',
1392 r''' 1493 r'''
1393 import 'package:meta/meta.dart'; 1494 import 'package:meta/meta.dart';
1394 class A { 1495 class A {
1395 @protected 1496 @protected
1396 void a(){ } 1497 void a(){ }
1397 } 1498 }
1398 '''); 1499 ''');
1399 Source source2 = addNamedSource( 1500 Source source2 = addNamedSource(
1400 '/lib2.dart', 1501 '/lib2.dart',
1401 r''' 1502 r'''
1402 import 'lib1.dart'; 1503 import 'lib1.dart';
1403 1504
1404 class B { 1505 class B {
1405 void b() => new A().a(); 1506 void b() => new A().a();
1406 } 1507 }
1407 '''); 1508 ''');
1408 List<AnalysisError> errors = analysisContext2.computeErrors(source2); 1509 await computeAnalysisResult(source);
1409 expect(errors, hasLength(1)); 1510 await computeAnalysisResult(source2);
1410 expect(errors[0].errorCode, HintCode.INVALID_USE_OF_PROTECTED_MEMBER); 1511 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1411 verify([source, source2]); 1512 verify([source, source2]);
1412 } 1513 }
1413 1514
1414 test_invalidUseOfProtectedMember_method_1() async { 1515 test_invalidUseOfProtectedMember_method_1() async {
1415 Source source = addNamedSource( 1516 Source source = addNamedSource(
1416 '/lib1.dart', 1517 '/lib1.dart',
1417 r''' 1518 r'''
1418 import 'package:meta/meta.dart'; 1519 import 'package:meta/meta.dart';
1419 class A { 1520 class A {
1420 @protected 1521 @protected
1421 void a(){ } 1522 void a(){ }
1422 } 1523 }
1423 '''); 1524 ''');
1424 Source source2 = addNamedSource( 1525 Source source2 = addNamedSource(
1425 '/lib2.dart', 1526 '/lib2.dart',
1426 r''' 1527 r'''
1427 import 'lib1.dart'; 1528 import 'lib1.dart';
1428 1529
1429 class B { 1530 class B {
1430 void b() => new A().a(); 1531 void b() => new A().a();
1431 } 1532 }
1432 '''); 1533 ''');
1433 1534
1434 await assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); 1535 await computeAnalysisResult(source);
1435 await assertNoErrors(source); 1536 await computeAnalysisResult(source2);
1537 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1538 assertNoErrors(source);
1436 verify([source, source2]); 1539 verify([source, source2]);
1437 } 1540 }
1438 1541
1439 test_invalidUseOfProtectedMember_method_OK() async { 1542 test_invalidUseOfProtectedMember_method_OK() async {
1440 // https://github.com/dart-lang/linter/issues/257 1543 // https://github.com/dart-lang/linter/issues/257
1441 Source source = addSource(r''' 1544 Source source = addSource(r'''
1442 import 'package:meta/meta.dart'; 1545 import 'package:meta/meta.dart';
1443 1546
1444 typedef void VoidCallback(); 1547 typedef void VoidCallback();
1445 1548
1446 class State<E> { 1549 class State<E> {
1447 @protected 1550 @protected
1448 void setState(VoidCallback fn) {} 1551 void setState(VoidCallback fn) {}
1449 } 1552 }
1450 1553
1451 class Button extends State<Object> { 1554 class Button extends State<Object> {
1452 void handleSomething() { 1555 void handleSomething() {
1453 setState(() {}); 1556 setState(() {});
1454 } 1557 }
1455 } 1558 }
1456 '''); 1559 ''');
1457 await assertNoErrors(source); 1560 await computeAnalysisResult(source);
1561 assertNoErrors(source);
1458 verify([source]); 1562 verify([source]);
1459 } 1563 }
1460 1564
1461 test_invalidUseOfProtectedMember_OK_1() async { 1565 test_invalidUseOfProtectedMember_OK_1() async {
1462 Source source = addSource(r''' 1566 Source source = addSource(r'''
1463 import 'package:meta/meta.dart'; 1567 import 'package:meta/meta.dart';
1464 class A { 1568 class A {
1465 @protected 1569 @protected
1466 void a(){ } 1570 void a(){ }
1467 } 1571 }
1468 class B extends A { 1572 class B extends A {
1469 void b() => a(); 1573 void b() => a();
1470 }'''); 1574 }''');
1471 await assertNoErrors(source); 1575 await computeAnalysisResult(source);
1576 assertNoErrors(source);
1472 verify([source]); 1577 verify([source]);
1473 } 1578 }
1474 1579
1475 test_invalidUseOfProtectedMember_OK_2() async { 1580 test_invalidUseOfProtectedMember_OK_2() async {
1476 Source source = addSource(r''' 1581 Source source = addSource(r'''
1477 import 'package:meta/meta.dart'; 1582 import 'package:meta/meta.dart';
1478 class A { 1583 class A {
1479 @protected 1584 @protected
1480 void a(){ } 1585 void a(){ }
1481 } 1586 }
1482 class B extends Object with A { 1587 class B extends Object with A {
1483 void b() => a(); 1588 void b() => a();
1484 }'''); 1589 }''');
1485 await assertNoErrors(source); 1590 await computeAnalysisResult(source);
1591 assertNoErrors(source);
1486 verify([source]); 1592 verify([source]);
1487 } 1593 }
1488 1594
1489 test_invalidUseOfProtectedMember_OK_3() async { 1595 test_invalidUseOfProtectedMember_OK_3() async {
1490 Source source = addSource(r''' 1596 Source source = addSource(r'''
1491 import 'package:meta/meta.dart'; 1597 import 'package:meta/meta.dart';
1492 class A { 1598 class A {
1493 @protected m1() {} 1599 @protected m1() {}
1494 } 1600 }
1495 class B extends A { 1601 class B extends A {
1496 static m2(A a) => a.m1(); 1602 static m2(A a) => a.m1();
1497 }'''); 1603 }''');
1498 await assertNoErrors(source); 1604 await computeAnalysisResult(source);
1605 assertNoErrors(source);
1499 verify([source]); 1606 verify([source]);
1500 } 1607 }
1501 1608
1502 test_invalidUseOfProtectedMember_OK_4() async { 1609 test_invalidUseOfProtectedMember_OK_4() async {
1503 Source source = addSource(r''' 1610 Source source = addSource(r'''
1504 import 'package:meta/meta.dart'; 1611 import 'package:meta/meta.dart';
1505 class A { 1612 class A {
1506 @protected 1613 @protected
1507 void a(){ } 1614 void a(){ }
1508 } 1615 }
1509 class B extends A { 1616 class B extends A {
1510 void a() => a(); 1617 void a() => a();
1511 } 1618 }
1512 main() { 1619 main() {
1513 new B().a(); 1620 new B().a();
1514 }'''); 1621 }''');
1515 await assertNoErrors(source); 1622 await computeAnalysisResult(source);
1623 assertNoErrors(source);
1516 verify([source]); 1624 verify([source]);
1517 } 1625 }
1518 1626
1519 test_invalidUseOfProtectedMember_OK_field() async { 1627 test_invalidUseOfProtectedMember_OK_field() async {
1520 Source source = addSource(r''' 1628 Source source = addSource(r'''
1521 import 'package:meta/meta.dart'; 1629 import 'package:meta/meta.dart';
1522 class A { 1630 class A {
1523 @protected 1631 @protected
1524 int a = 42; 1632 int a = 42;
1525 } 1633 }
1526 class B extends A { 1634 class B extends A {
1527 int b() => a; 1635 int b() => a;
1528 } 1636 }
1529 '''); 1637 ''');
1530 await assertNoErrors(source); 1638 await computeAnalysisResult(source);
1639 assertNoErrors(source);
1531 verify([source]); 1640 verify([source]);
1532 } 1641 }
1533 1642
1534 test_invalidUseOfProtectedMember_OK_getter() async { 1643 test_invalidUseOfProtectedMember_OK_getter() async {
1535 Source source = addSource(r''' 1644 Source source = addSource(r'''
1536 import 'package:meta/meta.dart'; 1645 import 'package:meta/meta.dart';
1537 class A { 1646 class A {
1538 @protected 1647 @protected
1539 int get a => 42; 1648 int get a => 42;
1540 } 1649 }
1541 class B extends A { 1650 class B extends A {
1542 int b() => a; 1651 int b() => a;
1543 } 1652 }
1544 '''); 1653 ''');
1545 await assertNoErrors(source); 1654 await computeAnalysisResult(source);
1655 assertNoErrors(source);
1546 verify([source]); 1656 verify([source]);
1547 } 1657 }
1548 1658
1549 test_invalidUseOfProtectedMember_OK_setter() async { 1659 test_invalidUseOfProtectedMember_OK_setter() async {
1550 Source source = addSource(r''' 1660 Source source = addSource(r'''
1551 import 'package:meta/meta.dart'; 1661 import 'package:meta/meta.dart';
1552 class A { 1662 class A {
1553 @protected 1663 @protected
1554 void set a(int i) { } 1664 void set a(int i) { }
1555 } 1665 }
1556 class B extends A { 1666 class B extends A {
1557 void b(int i) { 1667 void b(int i) {
1558 a = i; 1668 a = i;
1559 } 1669 }
1560 } 1670 }
1561 '''); 1671 ''');
1562 await assertNoErrors(source); 1672 await computeAnalysisResult(source);
1673 assertNoErrors(source);
1563 verify([source]); 1674 verify([source]);
1564 } 1675 }
1565 1676
1566 test_invalidUseOfProtectedMember_OK_setter_2() async { 1677 test_invalidUseOfProtectedMember_OK_setter_2() async {
1567 Source source = addSource(r''' 1678 Source source = addSource(r'''
1568 import 'package:meta/meta.dart'; 1679 import 'package:meta/meta.dart';
1569 class A { 1680 class A {
1570 int _a; 1681 int _a;
1571 @protected 1682 @protected
1572 void set a(int a) { _a = a; } 1683 void set a(int a) { _a = a; }
1573 A(int a) { 1684 A(int a) {
1574 this.a = a; 1685 this.a = a;
1575 } 1686 }
1576 } 1687 }
1577 '''); 1688 ''');
1578 await assertNoErrors(source); 1689 await computeAnalysisResult(source);
1690 assertNoErrors(source);
1579 verify([source]); 1691 verify([source]);
1580 } 1692 }
1581 1693
1582 test_invalidUseOfProtectedMember_setter() async { 1694 test_invalidUseOfProtectedMember_setter() async {
1583 Source source = addNamedSource( 1695 Source source = addNamedSource(
1584 '/lib1.dart', 1696 '/lib1.dart',
1585 r''' 1697 r'''
1586 import 'package:meta/meta.dart'; 1698 import 'package:meta/meta.dart';
1587 class A { 1699 class A {
1588 @protected 1700 @protected
1589 void set a(int i) { } 1701 void set a(int i) { }
1590 } 1702 }
1591 '''); 1703 ''');
1592 Source source2 = addNamedSource( 1704 Source source2 = addNamedSource(
1593 '/lib2.dart', 1705 '/lib2.dart',
1594 r''' 1706 r'''
1595 import 'lib1.dart'; 1707 import 'lib1.dart';
1596 1708
1597 class B{ 1709 class B{
1598 A a; 1710 A a;
1599 b(int i) { 1711 b(int i) {
1600 a.a = i; 1712 a.a = i;
1601 } 1713 }
1602 } 1714 }
1603 '''); 1715 ''');
1604 await assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); 1716 await computeAnalysisResult(source);
1605 await assertNoErrors(source); 1717 await computeAnalysisResult(source2);
1718 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]);
1719 assertNoErrors(source);
1606 verify([source, source2]); 1720 verify([source, source2]);
1607 } 1721 }
1608 1722
1609 test_invalidUseOfProtectedMember_setter_OK() async { 1723 test_invalidUseOfProtectedMember_setter_OK() async {
1610 Source source = addSource(r''' 1724 Source source = addSource(r'''
1611 import 'package:meta/meta.dart'; 1725 import 'package:meta/meta.dart';
1612 class A { 1726 class A {
1613 @protected 1727 @protected
1614 void set a(int i) { } 1728 void set a(int i) { }
1615 } 1729 }
1616 abstract class B implements A { 1730 abstract class B implements A {
1617 b(int i) { 1731 b(int i) {
1618 a = i; 1732 a = i;
1619 } 1733 }
1620 }'''); 1734 }''');
1621 await assertNoErrors(source); 1735 await computeAnalysisResult(source);
1736 assertNoErrors(source);
1622 verify([source]); 1737 verify([source]);
1623 } 1738 }
1624 1739
1625 test_invalidUseOfProtectedMember_topLevelVariable() async { 1740 test_invalidUseOfProtectedMember_topLevelVariable() async {
1626 Source source = addSource(r''' 1741 Source source = addSource(r'''
1627 import 'package:meta/meta.dart'; 1742 import 'package:meta/meta.dart';
1628 @protected 1743 @protected
1629 int x = 0; 1744 int x = 0;
1630 main() { 1745 main() {
1631 print(x); 1746 print(x);
1632 }'''); 1747 }''');
1633 // TODO(brianwilkerson) This should produce a hint because the annotation is 1748 // TODO(brianwilkerson) This should produce a hint because the annotation is
1634 // being applied to the wrong kind of declaration. 1749 // being applied to the wrong kind of declaration.
1635 await assertNoErrors(source); 1750 await computeAnalysisResult(source);
1751 assertNoErrors(source);
1636 verify([source]); 1752 verify([source]);
1637 } 1753 }
1638 1754
1639 test_isDouble() async { 1755 test_isDouble() async {
1640 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 1756 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
1641 options.dart2jsHint = true; 1757 options.dart2jsHint = true;
1642 resetWithOptions(options); 1758 resetWithOptions(options);
1643 Source source = addSource("var v = 1 is double;"); 1759 Source source = addSource("var v = 1 is double;");
1644 await assertErrors(source, [HintCode.IS_DOUBLE]); 1760 await computeAnalysisResult(source);
1761 assertErrors(source, [HintCode.IS_DOUBLE]);
1645 verify([source]); 1762 verify([source]);
1646 } 1763 }
1647 1764
1648 @failingTest 1765 @failingTest
1649 test_isInt() async { 1766 test_isInt() async {
1650 Source source = addSource("var v = 1 is int;"); 1767 Source source = addSource("var v = 1 is int;");
1651 await assertErrors(source, [HintCode.IS_INT]); 1768 await computeAnalysisResult(source);
1769 assertErrors(source, [HintCode.IS_INT]);
1652 verify([source]); 1770 verify([source]);
1653 } 1771 }
1654 1772
1655 test_isNotDouble() async { 1773 test_isNotDouble() async {
1656 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 1774 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
1657 options.dart2jsHint = true; 1775 options.dart2jsHint = true;
1658 resetWithOptions(options); 1776 resetWithOptions(options);
1659 Source source = addSource("var v = 1 is! double;"); 1777 Source source = addSource("var v = 1 is! double;");
1660 await assertErrors(source, [HintCode.IS_NOT_DOUBLE]); 1778 await computeAnalysisResult(source);
1779 assertErrors(source, [HintCode.IS_NOT_DOUBLE]);
1661 verify([source]); 1780 verify([source]);
1662 } 1781 }
1663 1782
1664 @failingTest 1783 @failingTest
1665 test_isNotInt() async { 1784 test_isNotInt() async {
1666 Source source = addSource("var v = 1 is! int;"); 1785 Source source = addSource("var v = 1 is! int;");
1667 await assertErrors(source, [HintCode.IS_NOT_INT]); 1786 await computeAnalysisResult(source);
1787 assertErrors(source, [HintCode.IS_NOT_INT]);
1668 verify([source]); 1788 verify([source]);
1669 } 1789 }
1670 1790
1671 test_js_lib_OK() async { 1791 test_js_lib_OK() async {
1672 Source source = addSource(r''' 1792 Source source = addSource(r'''
1673 @JS() 1793 @JS()
1674 library foo; 1794 library foo;
1675 1795
1676 import 'package:js/js.dart'; 1796 import 'package:js/js.dart';
1677 1797
1678 @JS() 1798 @JS()
1679 class A { } 1799 class A { }
1680 '''); 1800 ''');
1681 await assertNoErrors(source); 1801 await computeAnalysisResult(source);
1802 assertNoErrors(source);
1682 verify([source]); 1803 verify([source]);
1683 } 1804 }
1684 1805
1685 test_missingJsLibAnnotation_class() async { 1806 test_missingJsLibAnnotation_class() async {
1686 Source source = addSource(r''' 1807 Source source = addSource(r'''
1687 library foo; 1808 library foo;
1688 1809
1689 import 'package:js/js.dart'; 1810 import 'package:js/js.dart';
1690 1811
1691 @JS() 1812 @JS()
1692 class A { } 1813 class A { }
1693 '''); 1814 ''');
1694 await assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]); 1815 await computeAnalysisResult(source);
1816 assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]);
1695 verify([source]); 1817 verify([source]);
1696 } 1818 }
1697 1819
1698 test_missingJsLibAnnotation_externalField() async { 1820 test_missingJsLibAnnotation_externalField() async {
1699 // https://github.com/dart-lang/sdk/issues/26987 1821 // https://github.com/dart-lang/sdk/issues/26987
1700 Source source = addSource(r''' 1822 Source source = addSource(r'''
1701 import 'package:js/js.dart'; 1823 import 'package:js/js.dart';
1702 1824
1703 @JS() 1825 @JS()
1704 external dynamic exports; 1826 external dynamic exports;
1705 '''); 1827 ''');
1706 await assertErrors(source, 1828 await computeAnalysisResult(source);
1829 assertErrors(source,
1707 [ParserErrorCode.EXTERNAL_FIELD, HintCode.MISSING_JS_LIB_ANNOTATION]); 1830 [ParserErrorCode.EXTERNAL_FIELD, HintCode.MISSING_JS_LIB_ANNOTATION]);
1708 verify([source]); 1831 verify([source]);
1709 } 1832 }
1710 1833
1711 test_missingJsLibAnnotation_function() async { 1834 test_missingJsLibAnnotation_function() async {
1712 Source source = addSource(r''' 1835 Source source = addSource(r'''
1713 library foo; 1836 library foo;
1714 1837
1715 import 'package:js/js.dart'; 1838 import 'package:js/js.dart';
1716 1839
1717 @JS('acxZIndex') 1840 @JS('acxZIndex')
1718 set _currentZIndex(int value) { } 1841 set _currentZIndex(int value) { }
1719 '''); 1842 ''');
1720 await assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]); 1843 await computeAnalysisResult(source);
1844 assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]);
1721 verify([source]); 1845 verify([source]);
1722 } 1846 }
1723 1847
1724 test_missingJsLibAnnotation_method() async { 1848 test_missingJsLibAnnotation_method() async {
1725 Source source = addSource(r''' 1849 Source source = addSource(r'''
1726 library foo; 1850 library foo;
1727 1851
1728 import 'package:js/js.dart'; 1852 import 'package:js/js.dart';
1729 1853
1730 class A { 1854 class A {
1731 @JS() 1855 @JS()
1732 void a() { } 1856 void a() { }
1733 } 1857 }
1734 '''); 1858 ''');
1735 await assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]); 1859 await computeAnalysisResult(source);
1860 assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]);
1736 verify([source]); 1861 verify([source]);
1737 } 1862 }
1738 1863
1739 test_missingJsLibAnnotation_variable() async { 1864 test_missingJsLibAnnotation_variable() async {
1740 Source source = addSource(r''' 1865 Source source = addSource(r'''
1741 import 'package:js/js.dart'; 1866 import 'package:js/js.dart';
1742 1867
1743 @JS() 1868 @JS()
1744 dynamic variable; 1869 dynamic variable;
1745 '''); 1870 ''');
1746 await assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]); 1871 await computeAnalysisResult(source);
1872 assertErrors(source, [HintCode.MISSING_JS_LIB_ANNOTATION]);
1747 verify([source]); 1873 verify([source]);
1748 } 1874 }
1749 1875
1750 test_missingReturn_async() async { 1876 test_missingReturn_async() async {
1751 Source source = addSource(''' 1877 Source source = addSource('''
1752 import 'dart:async'; 1878 import 'dart:async';
1753 Future<int> f() async {} 1879 Future<int> f() async {}
1754 '''); 1880 ''');
1755 await assertErrors(source, [HintCode.MISSING_RETURN]); 1881 await computeAnalysisResult(source);
1882 assertErrors(source, [HintCode.MISSING_RETURN]);
1756 verify([source]); 1883 verify([source]);
1757 } 1884 }
1758 1885
1759 test_missingReturn_factory() async { 1886 test_missingReturn_factory() async {
1760 Source source = addSource(r''' 1887 Source source = addSource(r'''
1761 class A { 1888 class A {
1762 factory A() {} 1889 factory A() {}
1763 } 1890 }
1764 '''); 1891 ''');
1765 await assertErrors(source, [HintCode.MISSING_RETURN]); 1892 await computeAnalysisResult(source);
1893 assertErrors(source, [HintCode.MISSING_RETURN]);
1766 verify([source]); 1894 verify([source]);
1767 } 1895 }
1768 1896
1769 test_missingReturn_function() async { 1897 test_missingReturn_function() async {
1770 Source source = addSource("int f() {}"); 1898 Source source = addSource("int f() {}");
1771 await assertErrors(source, [HintCode.MISSING_RETURN]); 1899 await computeAnalysisResult(source);
1900 assertErrors(source, [HintCode.MISSING_RETURN]);
1772 verify([source]); 1901 verify([source]);
1773 } 1902 }
1774 1903
1775 test_missingReturn_method() async { 1904 test_missingReturn_method() async {
1776 Source source = addSource(r''' 1905 Source source = addSource(r'''
1777 class A { 1906 class A {
1778 int m() {} 1907 int m() {}
1779 }'''); 1908 }''');
1780 await assertErrors(source, [HintCode.MISSING_RETURN]); 1909 await computeAnalysisResult(source);
1910 assertErrors(source, [HintCode.MISSING_RETURN]);
1781 verify([source]); 1911 verify([source]);
1782 } 1912 }
1783 1913
1784 test_mustCallSuper() async { 1914 test_mustCallSuper() async {
1785 Source source = addSource(r''' 1915 Source source = addSource(r'''
1786 import 'package:meta/meta.dart'; 1916 import 'package:meta/meta.dart';
1787 class A { 1917 class A {
1788 @mustCallSuper 1918 @mustCallSuper
1789 void a() {} 1919 void a() {}
1790 } 1920 }
1791 class B extends A { 1921 class B extends A {
1792 @override 1922 @override
1793 void a() 1923 void a()
1794 {} 1924 {}
1795 } 1925 }
1796 '''); 1926 ''');
1797 await assertErrors(source, [HintCode.MUST_CALL_SUPER]); 1927 await computeAnalysisResult(source);
1928 assertErrors(source, [HintCode.MUST_CALL_SUPER]);
1798 verify([source]); 1929 verify([source]);
1799 } 1930 }
1800 1931
1801 test_mustCallSuper_fromInterface() async { 1932 test_mustCallSuper_fromInterface() async {
1802 Source source = addSource(r''' 1933 Source source = addSource(r'''
1803 import 'package:meta/meta.dart'; 1934 import 'package:meta/meta.dart';
1804 class A { 1935 class A {
1805 @mustCallSuper 1936 @mustCallSuper
1806 void a() {} 1937 void a() {}
1807 } 1938 }
1808 class C implements A { 1939 class C implements A {
1809 @override 1940 @override
1810 void a() {} 1941 void a() {}
1811 } 1942 }
1812 '''); 1943 ''');
1813 await assertErrors(source, []); 1944 await computeAnalysisResult(source);
1945 assertErrors(source, []);
1814 verify([source]); 1946 verify([source]);
1815 } 1947 }
1816 1948
1817 test_mustCallSuper_indirect() async { 1949 test_mustCallSuper_indirect() async {
1818 Source source = addSource(r''' 1950 Source source = addSource(r'''
1819 import 'package:meta/meta.dart'; 1951 import 'package:meta/meta.dart';
1820 class A { 1952 class A {
1821 @mustCallSuper 1953 @mustCallSuper
1822 void a() {} 1954 void a() {}
1823 } 1955 }
1824 class C extends A { 1956 class C extends A {
1825 @override 1957 @override
1826 void a() { 1958 void a() {
1827 super.a(); 1959 super.a();
1828 } 1960 }
1829 } 1961 }
1830 class D extends C { 1962 class D extends C {
1831 @override 1963 @override
1832 void a() {} 1964 void a() {}
1833 } 1965 }
1834 '''); 1966 ''');
1835 await assertErrors(source, [HintCode.MUST_CALL_SUPER]); 1967 await computeAnalysisResult(source);
1968 assertErrors(source, [HintCode.MUST_CALL_SUPER]);
1836 verify([source]); 1969 verify([source]);
1837 } 1970 }
1838 1971
1839 test_mustCallSuper_overridden() async { 1972 test_mustCallSuper_overridden() async {
1840 Source source = addSource(r''' 1973 Source source = addSource(r'''
1841 import 'package:meta/meta.dart'; 1974 import 'package:meta/meta.dart';
1842 class A { 1975 class A {
1843 @mustCallSuper 1976 @mustCallSuper
1844 void a() {} 1977 void a() {}
1845 } 1978 }
1846 class C extends A { 1979 class C extends A {
1847 @override 1980 @override
1848 void a() { 1981 void a() {
1849 super.a(); //OK 1982 super.a(); //OK
1850 } 1983 }
1851 } 1984 }
1852 '''); 1985 ''');
1853 await assertErrors(source, []); 1986 await computeAnalysisResult(source);
1987 assertErrors(source, []);
1854 verify([source]); 1988 verify([source]);
1855 } 1989 }
1856 1990
1857 test_nullAwareInCondition_assert() async { 1991 test_nullAwareInCondition_assert() async {
1858 Source source = addSource(r''' 1992 Source source = addSource(r'''
1859 m(x) { 1993 m(x) {
1860 assert (x?.a); 1994 assert (x?.a);
1861 } 1995 }
1862 '''); 1996 ''');
1863 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 1997 await computeAnalysisResult(source);
1998 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1864 verify([source]); 1999 verify([source]);
1865 } 2000 }
1866 2001
1867 test_nullAwareInCondition_conditionalExpression() async { 2002 test_nullAwareInCondition_conditionalExpression() async {
1868 Source source = addSource(r''' 2003 Source source = addSource(r'''
1869 m(x) { 2004 m(x) {
1870 return x?.a ? 0 : 1; 2005 return x?.a ? 0 : 1;
1871 } 2006 }
1872 '''); 2007 ''');
1873 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2008 await computeAnalysisResult(source);
2009 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1874 verify([source]); 2010 verify([source]);
1875 } 2011 }
1876 2012
1877 test_nullAwareInCondition_do() async { 2013 test_nullAwareInCondition_do() async {
1878 Source source = addSource(r''' 2014 Source source = addSource(r'''
1879 m(x) { 2015 m(x) {
1880 do {} while (x?.a); 2016 do {} while (x?.a);
1881 } 2017 }
1882 '''); 2018 ''');
1883 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2019 await computeAnalysisResult(source);
2020 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1884 verify([source]); 2021 verify([source]);
1885 } 2022 }
1886 2023
1887 test_nullAwareInCondition_for() async { 2024 test_nullAwareInCondition_for() async {
1888 Source source = addSource(r''' 2025 Source source = addSource(r'''
1889 m(x) { 2026 m(x) {
1890 for (var v = x; v?.a; v = v.next) {} 2027 for (var v = x; v?.a; v = v.next) {}
1891 } 2028 }
1892 '''); 2029 ''');
1893 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2030 await computeAnalysisResult(source);
2031 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1894 verify([source]); 2032 verify([source]);
1895 } 2033 }
1896 2034
1897 test_nullAwareInCondition_if() async { 2035 test_nullAwareInCondition_if() async {
1898 Source source = addSource(r''' 2036 Source source = addSource(r'''
1899 m(x) { 2037 m(x) {
1900 if (x?.a) {} 2038 if (x?.a) {}
1901 } 2039 }
1902 '''); 2040 ''');
1903 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2041 await computeAnalysisResult(source);
2042 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1904 verify([source]); 2043 verify([source]);
1905 } 2044 }
1906 2045
1907 test_nullAwareInCondition_if_conditionalAnd_first() async { 2046 test_nullAwareInCondition_if_conditionalAnd_first() async {
1908 Source source = addSource(r''' 2047 Source source = addSource(r'''
1909 m(x) { 2048 m(x) {
1910 if (x?.a && x.b) {} 2049 if (x?.a && x.b) {}
1911 } 2050 }
1912 '''); 2051 ''');
1913 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2052 await computeAnalysisResult(source);
2053 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1914 verify([source]); 2054 verify([source]);
1915 } 2055 }
1916 2056
1917 test_nullAwareInCondition_if_conditionalAnd_second() async { 2057 test_nullAwareInCondition_if_conditionalAnd_second() async {
1918 Source source = addSource(r''' 2058 Source source = addSource(r'''
1919 m(x) { 2059 m(x) {
1920 if (x.a && x?.b) {} 2060 if (x.a && x?.b) {}
1921 } 2061 }
1922 '''); 2062 ''');
1923 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2063 await computeAnalysisResult(source);
2064 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1924 verify([source]); 2065 verify([source]);
1925 } 2066 }
1926 2067
1927 test_nullAwareInCondition_if_conditionalAnd_third() async { 2068 test_nullAwareInCondition_if_conditionalAnd_third() async {
1928 Source source = addSource(r''' 2069 Source source = addSource(r'''
1929 m(x) { 2070 m(x) {
1930 if (x.a && x.b && x?.c) {} 2071 if (x.a && x.b && x?.c) {}
1931 } 2072 }
1932 '''); 2073 ''');
1933 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2074 await computeAnalysisResult(source);
2075 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1934 verify([source]); 2076 verify([source]);
1935 } 2077 }
1936 2078
1937 test_nullAwareInCondition_if_conditionalOr_first() async { 2079 test_nullAwareInCondition_if_conditionalOr_first() async {
1938 Source source = addSource(r''' 2080 Source source = addSource(r'''
1939 m(x) { 2081 m(x) {
1940 if (x?.a || x.b) {} 2082 if (x?.a || x.b) {}
1941 } 2083 }
1942 '''); 2084 ''');
1943 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2085 await computeAnalysisResult(source);
2086 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1944 verify([source]); 2087 verify([source]);
1945 } 2088 }
1946 2089
1947 test_nullAwareInCondition_if_conditionalOr_second() async { 2090 test_nullAwareInCondition_if_conditionalOr_second() async {
1948 Source source = addSource(r''' 2091 Source source = addSource(r'''
1949 m(x) { 2092 m(x) {
1950 if (x.a || x?.b) {} 2093 if (x.a || x?.b) {}
1951 } 2094 }
1952 '''); 2095 ''');
1953 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2096 await computeAnalysisResult(source);
2097 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1954 verify([source]); 2098 verify([source]);
1955 } 2099 }
1956 2100
1957 test_nullAwareInCondition_if_conditionalOr_third() async { 2101 test_nullAwareInCondition_if_conditionalOr_third() async {
1958 Source source = addSource(r''' 2102 Source source = addSource(r'''
1959 m(x) { 2103 m(x) {
1960 if (x.a || x.b || x?.c) {} 2104 if (x.a || x.b || x?.c) {}
1961 } 2105 }
1962 '''); 2106 ''');
1963 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2107 await computeAnalysisResult(source);
2108 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1964 verify([source]); 2109 verify([source]);
1965 } 2110 }
1966 2111
1967 test_nullAwareInCondition_if_not() async { 2112 test_nullAwareInCondition_if_not() async {
1968 Source source = addSource(r''' 2113 Source source = addSource(r'''
1969 m(x) { 2114 m(x) {
1970 if (!x?.a) {} 2115 if (!x?.a) {}
1971 } 2116 }
1972 '''); 2117 ''');
1973 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2118 await computeAnalysisResult(source);
2119 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1974 verify([source]); 2120 verify([source]);
1975 } 2121 }
1976 2122
1977 test_nullAwareInCondition_if_parenthesized() async { 2123 test_nullAwareInCondition_if_parenthesized() async {
1978 Source source = addSource(r''' 2124 Source source = addSource(r'''
1979 m(x) { 2125 m(x) {
1980 if ((x?.a)) {} 2126 if ((x?.a)) {}
1981 } 2127 }
1982 '''); 2128 ''');
1983 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2129 await computeAnalysisResult(source);
2130 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1984 verify([source]); 2131 verify([source]);
1985 } 2132 }
1986 2133
1987 test_nullAwareInCondition_while() async { 2134 test_nullAwareInCondition_while() async {
1988 Source source = addSource(r''' 2135 Source source = addSource(r'''
1989 m(x) { 2136 m(x) {
1990 while (x?.a) {} 2137 while (x?.a) {}
1991 } 2138 }
1992 '''); 2139 ''');
1993 await assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]); 2140 await computeAnalysisResult(source);
2141 assertErrors(source, [HintCode.NULL_AWARE_IN_CONDITION]);
1994 verify([source]); 2142 verify([source]);
1995 } 2143 }
1996 2144
1997 @failingTest 2145 @failingTest
1998 test_overrideEqualsButNotHashCode() async { 2146 test_overrideEqualsButNotHashCode() async {
1999 Source source = addSource(r''' 2147 Source source = addSource(r'''
2000 class A { 2148 class A {
2001 bool operator ==(x) {} 2149 bool operator ==(x) {}
2002 }'''); 2150 }''');
2003 await assertErrors(source, [HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE]); 2151 await computeAnalysisResult(source);
2152 assertErrors(source, [HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE]);
2004 verify([source]); 2153 verify([source]);
2005 } 2154 }
2006 2155
2007 test_overrideOnNonOverridingField_invalid() async { 2156 test_overrideOnNonOverridingField_invalid() async {
2008 Source source = addSource(r''' 2157 Source source = addSource(r'''
2009 class A { 2158 class A {
2010 } 2159 }
2011 class B extends A { 2160 class B extends A {
2012 @override 2161 @override
2013 final int m = 1; 2162 final int m = 1;
2014 }'''); 2163 }''');
2015 await assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD]); 2164 await computeAnalysisResult(source);
2165 assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD]);
2016 verify([source]); 2166 verify([source]);
2017 } 2167 }
2018 2168
2019 test_overrideOnNonOverridingGetter_invalid() async { 2169 test_overrideOnNonOverridingGetter_invalid() async {
2020 Source source = addSource(r''' 2170 Source source = addSource(r'''
2021 class A { 2171 class A {
2022 } 2172 }
2023 class B extends A { 2173 class B extends A {
2024 @override 2174 @override
2025 int get m => 1; 2175 int get m => 1;
2026 }'''); 2176 }''');
2027 await assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER]); 2177 await computeAnalysisResult(source);
2178 assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER]);
2028 verify([source]); 2179 verify([source]);
2029 } 2180 }
2030 2181
2031 test_overrideOnNonOverridingMethod_invalid() async { 2182 test_overrideOnNonOverridingMethod_invalid() async {
2032 Source source = addSource(r''' 2183 Source source = addSource(r'''
2033 class A { 2184 class A {
2034 } 2185 }
2035 class B extends A { 2186 class B extends A {
2036 @override 2187 @override
2037 int m() => 1; 2188 int m() => 1;
2038 }'''); 2189 }''');
2039 await assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD]); 2190 await computeAnalysisResult(source);
2191 assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD]);
2040 verify([source]); 2192 verify([source]);
2041 } 2193 }
2042 2194
2043 test_overrideOnNonOverridingSetter_invalid() async { 2195 test_overrideOnNonOverridingSetter_invalid() async {
2044 Source source = addSource(r''' 2196 Source source = addSource(r'''
2045 class A { 2197 class A {
2046 } 2198 }
2047 class B extends A { 2199 class B extends A {
2048 @override 2200 @override
2049 set m(int x) {} 2201 set m(int x) {}
2050 }'''); 2202 }''');
2051 await assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER]); 2203 await computeAnalysisResult(source);
2204 assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER]);
2052 verify([source]); 2205 verify([source]);
2053 } 2206 }
2054 2207
2055 test_required_constructor_param() async { 2208 test_required_constructor_param() async {
2056 Source source = addSource(r''' 2209 Source source = addSource(r'''
2057 import 'package:meta/meta.dart'; 2210 import 'package:meta/meta.dart';
2058 2211
2059 class C { 2212 class C {
2060 C({@Required('must specify an `a`') int a}) {} 2213 C({@Required('must specify an `a`') int a}) {}
2061 } 2214 }
2062 2215
2063 main() { 2216 main() {
2064 new C(); 2217 new C();
2065 } 2218 }
2066 '''); 2219 ''');
2067 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); 2220 await computeAnalysisResult(source);
2221 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]);
2068 verify([source]); 2222 verify([source]);
2069 } 2223 }
2070 2224
2071 test_required_constructor_param_no_reason() async { 2225 test_required_constructor_param_no_reason() async {
2072 Source source = addSource(r''' 2226 Source source = addSource(r'''
2073 import 'package:meta/meta.dart'; 2227 import 'package:meta/meta.dart';
2074 2228
2075 class C { 2229 class C {
2076 C({@required int a}) {} 2230 C({@required int a}) {}
2077 } 2231 }
2078 2232
2079 main() { 2233 main() {
2080 new C(); 2234 new C();
2081 } 2235 }
2082 '''); 2236 ''');
2083 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]); 2237 await computeAnalysisResult(source);
2238 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]);
2084 verify([source]); 2239 verify([source]);
2085 } 2240 }
2086 2241
2087 test_required_constructor_param_null_reason() async { 2242 test_required_constructor_param_null_reason() async {
2088 Source source = addSource(r''' 2243 Source source = addSource(r'''
2089 import 'package:meta/meta.dart'; 2244 import 'package:meta/meta.dart';
2090 2245
2091 class C { 2246 class C {
2092 C({@Required(null) int a}) {} 2247 C({@Required(null) int a}) {}
2093 } 2248 }
2094 2249
2095 main() { 2250 main() {
2096 new C(); 2251 new C();
2097 } 2252 }
2098 '''); 2253 ''');
2099 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]); 2254 await computeAnalysisResult(source);
2255 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]);
2100 verify([source]); 2256 verify([source]);
2101 } 2257 }
2102 2258
2103 test_required_constructor_param_OK() async { 2259 test_required_constructor_param_OK() async {
2104 Source source = addSource(r''' 2260 Source source = addSource(r'''
2105 import 'package:meta/meta.dart'; 2261 import 'package:meta/meta.dart';
2106 2262
2107 class C { 2263 class C {
2108 C({@required int a}) {} 2264 C({@required int a}) {}
2109 } 2265 }
2110 2266
2111 main() { 2267 main() {
2112 new C(a: 2); 2268 new C(a: 2);
2113 } 2269 }
2114 '''); 2270 ''');
2115 await assertNoErrors(source); 2271 await computeAnalysisResult(source);
2272 assertNoErrors(source);
2116 verify([source]); 2273 verify([source]);
2117 } 2274 }
2118 2275
2119 test_required_constructor_param_redirecting_cons_call() async { 2276 test_required_constructor_param_redirecting_cons_call() async {
2120 Source source = addSource(r''' 2277 Source source = addSource(r'''
2121 import 'package:meta/meta.dart'; 2278 import 'package:meta/meta.dart';
2122 2279
2123 class C { 2280 class C {
2124 C({@required int x}); 2281 C({@required int x});
2125 C.named() : this(); 2282 C.named() : this();
2126 } 2283 }
2127 '''); 2284 ''');
2128 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]); 2285 await computeAnalysisResult(source);
2286 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]);
2129 verify([source]); 2287 verify([source]);
2130 } 2288 }
2131 2289
2132 test_required_constructor_param_super_call() async { 2290 test_required_constructor_param_super_call() async {
2133 Source source = addSource(r''' 2291 Source source = addSource(r'''
2134 import 'package:meta/meta.dart'; 2292 import 'package:meta/meta.dart';
2135 2293
2136 class C { 2294 class C {
2137 C({@Required('must specify an `a`') int a}) {} 2295 C({@Required('must specify an `a`') int a}) {}
2138 } 2296 }
2139 2297
2140 class D extends C { 2298 class D extends C {
2141 D() : super(); 2299 D() : super();
2142 } 2300 }
2143 '''); 2301 ''');
2144 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); 2302 await computeAnalysisResult(source);
2303 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]);
2145 verify([source]); 2304 verify([source]);
2146 } 2305 }
2147 2306
2148 test_required_function_param() async { 2307 test_required_function_param() async {
2149 Source source = addSource(r''' 2308 Source source = addSource(r'''
2150 import 'package:meta/meta.dart'; 2309 import 'package:meta/meta.dart';
2151 2310
2152 void f({@Required('must specify an `a`') int a}) {} 2311 void f({@Required('must specify an `a`') int a}) {}
2153 2312
2154 main() { 2313 main() {
2155 f(); 2314 f();
2156 } 2315 }
2157 '''); 2316 ''');
2158 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); 2317 await computeAnalysisResult(source);
2318 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]);
2159 verify([source]); 2319 verify([source]);
2160 } 2320 }
2161 2321
2162 test_required_method_param() async { 2322 test_required_method_param() async {
2163 Source source = addSource(r''' 2323 Source source = addSource(r'''
2164 import 'package:meta/meta.dart'; 2324 import 'package:meta/meta.dart';
2165 class A { 2325 class A {
2166 void m({@Required('must specify an `a`') int a}) {} 2326 void m({@Required('must specify an `a`') int a}) {}
2167 } 2327 }
2168 f() { 2328 f() {
2169 new A().m(); 2329 new A().m();
2170 } 2330 }
2171 '''); 2331 ''');
2172 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); 2332 await computeAnalysisResult(source);
2333 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]);
2173 verify([source]); 2334 verify([source]);
2174 } 2335 }
2175 2336
2176 test_required_method_param_in_other_lib() async { 2337 test_required_method_param_in_other_lib() async {
2177 addNamedSource( 2338 addNamedSource(
2178 '/a_lib.dart', 2339 '/a_lib.dart',
2179 r''' 2340 r'''
2180 library a_lib; 2341 library a_lib;
2181 import 'package:meta/meta.dart'; 2342 import 'package:meta/meta.dart';
2182 class A { 2343 class A {
2183 void m({@Required('must specify an `a`') int a}) {} 2344 void m({@Required('must specify an `a`') int a}) {}
2184 } 2345 }
2185 '''); 2346 ''');
2186 2347
2187 Source source = addSource(r''' 2348 Source source = addSource(r'''
2188 import "a_lib.dart"; 2349 import "a_lib.dart";
2189 f() { 2350 f() {
2190 new A().m(); 2351 new A().m();
2191 } 2352 }
2192 '''); 2353 ''');
2193 2354
2194 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); 2355 await computeAnalysisResult(source);
2356 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]);
2195 verify([source]); 2357 verify([source]);
2196 } 2358 }
2197 2359
2198 test_required_typedef_function_param() async { 2360 test_required_typedef_function_param() async {
2199 Source source = addSource(r''' 2361 Source source = addSource(r'''
2200 import 'package:meta/meta.dart'; 2362 import 'package:meta/meta.dart';
2201 2363
2202 String test(C c) => c.m()(); 2364 String test(C c) => c.m()();
2203 2365
2204 typedef String F({@required String x}); 2366 typedef String F({@required String x});
2205 2367
2206 class C { 2368 class C {
2207 F m() => ({@required String x}) => null; 2369 F m() => ({@required String x}) => null;
2208 } 2370 }
2209 '''); 2371 ''');
2210 await assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]); 2372 await computeAnalysisResult(source);
2373 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM]);
2211 verify([source]); 2374 verify([source]);
2212 } 2375 }
2213 2376
2214 test_typeCheck_type_is_Null() async { 2377 test_typeCheck_type_is_Null() async {
2215 Source source = addSource(r''' 2378 Source source = addSource(r'''
2216 m(i) { 2379 m(i) {
2217 bool b = i is Null; 2380 bool b = i is Null;
2218 }'''); 2381 }''');
2219 await assertErrors(source, [HintCode.TYPE_CHECK_IS_NULL]); 2382 await computeAnalysisResult(source);
2383 assertErrors(source, [HintCode.TYPE_CHECK_IS_NULL]);
2220 verify([source]); 2384 verify([source]);
2221 } 2385 }
2222 2386
2223 test_typeCheck_type_not_Null() async { 2387 test_typeCheck_type_not_Null() async {
2224 Source source = addSource(r''' 2388 Source source = addSource(r'''
2225 m(i) { 2389 m(i) {
2226 bool b = i is! Null; 2390 bool b = i is! Null;
2227 }'''); 2391 }''');
2228 await assertErrors(source, [HintCode.TYPE_CHECK_IS_NOT_NULL]); 2392 await computeAnalysisResult(source);
2393 assertErrors(source, [HintCode.TYPE_CHECK_IS_NOT_NULL]);
2229 verify([source]); 2394 verify([source]);
2230 } 2395 }
2231 2396
2232 test_undefinedGetter() async { 2397 test_undefinedGetter() async {
2233 Source source = addSource(r''' 2398 Source source = addSource(r'''
2234 class A {} 2399 class A {}
2235 f(var a) { 2400 f(var a) {
2236 if(a is A) { 2401 if(a is A) {
2237 return a.m; 2402 return a.m;
2238 } 2403 }
2239 }'''); 2404 }''');
2240 await assertErrors(source, [HintCode.UNDEFINED_GETTER]); 2405 await computeAnalysisResult(source);
2406 assertErrors(source, [HintCode.UNDEFINED_GETTER]);
2241 } 2407 }
2242 2408
2243 test_undefinedGetter_message() async { 2409 test_undefinedGetter_message() async {
2244 // The implementation of HintCode.UNDEFINED_SETTER assumes that 2410 // The implementation of HintCode.UNDEFINED_SETTER assumes that
2245 // UNDEFINED_SETTER in StaticTypeWarningCode and StaticWarningCode are the 2411 // UNDEFINED_SETTER in StaticTypeWarningCode and StaticWarningCode are the
2246 // same, this verifies that assumption. 2412 // same, this verifies that assumption.
2247 expect(StaticWarningCode.UNDEFINED_GETTER.message, 2413 expect(StaticWarningCode.UNDEFINED_GETTER.message,
2248 StaticTypeWarningCode.UNDEFINED_GETTER.message); 2414 StaticTypeWarningCode.UNDEFINED_GETTER.message);
2249 } 2415 }
2250 2416
2251 test_undefinedIdentifier_exportHide() async { 2417 test_undefinedIdentifier_exportHide() async {
2252 Source source = addSource(r''' 2418 Source source = addSource(r'''
2253 library L; 2419 library L;
2254 export 'lib1.dart' hide a;'''); 2420 export 'lib1.dart' hide a;''');
2255 addNamedSource("/lib1.dart", "library lib1;"); 2421 addNamedSource("/lib1.dart", "library lib1;");
2256 await assertErrors(source, [HintCode.UNDEFINED_HIDDEN_NAME]); 2422 await computeAnalysisResult(source);
2423 assertErrors(source, [HintCode.UNDEFINED_HIDDEN_NAME]);
2257 verify([source]); 2424 verify([source]);
2258 } 2425 }
2259 2426
2260 test_undefinedIdentifier_exportShow() async { 2427 test_undefinedIdentifier_exportShow() async {
2261 Source source = addSource(r''' 2428 Source source = addSource(r'''
2262 library L; 2429 library L;
2263 export 'lib1.dart' show a;'''); 2430 export 'lib1.dart' show a;''');
2264 addNamedSource("/lib1.dart", "library lib1;"); 2431 addNamedSource("/lib1.dart", "library lib1;");
2265 await assertErrors(source, [HintCode.UNDEFINED_SHOWN_NAME]); 2432 await computeAnalysisResult(source);
2433 assertErrors(source, [HintCode.UNDEFINED_SHOWN_NAME]);
2266 verify([source]); 2434 verify([source]);
2267 } 2435 }
2268 2436
2269 test_undefinedIdentifier_importHide() async { 2437 test_undefinedIdentifier_importHide() async {
2270 Source source = addSource(r''' 2438 Source source = addSource(r'''
2271 library L; 2439 library L;
2272 import 'lib1.dart' hide a;'''); 2440 import 'lib1.dart' hide a;''');
2273 addNamedSource("/lib1.dart", "library lib1;"); 2441 addNamedSource("/lib1.dart", "library lib1;");
2274 await assertErrors( 2442 await computeAnalysisResult(source);
2443 assertErrors(
2275 source, [HintCode.UNUSED_IMPORT, HintCode.UNDEFINED_HIDDEN_NAME]); 2444 source, [HintCode.UNUSED_IMPORT, HintCode.UNDEFINED_HIDDEN_NAME]);
2276 verify([source]); 2445 verify([source]);
2277 } 2446 }
2278 2447
2279 test_undefinedIdentifier_importShow() async { 2448 test_undefinedIdentifier_importShow() async {
2280 Source source = addSource(r''' 2449 Source source = addSource(r'''
2281 library L; 2450 library L;
2282 import 'lib1.dart' show a;'''); 2451 import 'lib1.dart' show a;''');
2283 addNamedSource("/lib1.dart", "library lib1;"); 2452 addNamedSource("/lib1.dart", "library lib1;");
2284 await assertErrors( 2453 await computeAnalysisResult(source);
2454 assertErrors(
2285 source, [HintCode.UNUSED_IMPORT, HintCode.UNDEFINED_SHOWN_NAME]); 2455 source, [HintCode.UNUSED_IMPORT, HintCode.UNDEFINED_SHOWN_NAME]);
2286 verify([source]); 2456 verify([source]);
2287 } 2457 }
2288 2458
2289 test_undefinedMethod() async { 2459 test_undefinedMethod() async {
2290 Source source = addSource(r''' 2460 Source source = addSource(r'''
2291 f() { 2461 f() {
2292 var a = 'str'; 2462 var a = 'str';
2293 a.notAMethodOnString(); 2463 a.notAMethodOnString();
2294 }'''); 2464 }''');
2295 await assertErrors(source, [HintCode.UNDEFINED_METHOD]); 2465 await computeAnalysisResult(source);
2466 assertErrors(source, [HintCode.UNDEFINED_METHOD]);
2296 } 2467 }
2297 2468
2298 test_undefinedMethod_assignmentExpression() async { 2469 test_undefinedMethod_assignmentExpression() async {
2299 Source source = addSource(r''' 2470 Source source = addSource(r'''
2300 class A {} 2471 class A {}
2301 class B { 2472 class B {
2302 f(var a, var a2) { 2473 f(var a, var a2) {
2303 a = new A(); 2474 a = new A();
2304 a2 = new A(); 2475 a2 = new A();
2305 a += a2; 2476 a += a2;
2306 } 2477 }
2307 }'''); 2478 }''');
2308 await assertErrors(source, [HintCode.UNDEFINED_METHOD]); 2479 await computeAnalysisResult(source);
2480 assertErrors(source, [HintCode.UNDEFINED_METHOD]);
2309 } 2481 }
2310 2482
2311 test_undefinedOperator_binaryExpression() async { 2483 test_undefinedOperator_binaryExpression() async {
2312 Source source = addSource(r''' 2484 Source source = addSource(r'''
2313 class A {} 2485 class A {}
2314 f(var a) { 2486 f(var a) {
2315 if(a is A) { 2487 if(a is A) {
2316 a + 1; 2488 a + 1;
2317 } 2489 }
2318 }'''); 2490 }''');
2319 await assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); 2491 await computeAnalysisResult(source);
2492 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
2320 } 2493 }
2321 2494
2322 test_undefinedOperator_indexBoth() async { 2495 test_undefinedOperator_indexBoth() async {
2323 Source source = addSource(r''' 2496 Source source = addSource(r'''
2324 class A {} 2497 class A {}
2325 f(var a) { 2498 f(var a) {
2326 if(a is A) { 2499 if(a is A) {
2327 a[0]++; 2500 a[0]++;
2328 } 2501 }
2329 }'''); 2502 }''');
2330 await assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); 2503 await computeAnalysisResult(source);
2504 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
2331 } 2505 }
2332 2506
2333 test_undefinedOperator_indexGetter() async { 2507 test_undefinedOperator_indexGetter() async {
2334 Source source = addSource(r''' 2508 Source source = addSource(r'''
2335 class A {} 2509 class A {}
2336 f(var a) { 2510 f(var a) {
2337 if(a is A) { 2511 if(a is A) {
2338 a[0]; 2512 a[0];
2339 } 2513 }
2340 }'''); 2514 }''');
2341 await assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); 2515 await computeAnalysisResult(source);
2516 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
2342 } 2517 }
2343 2518
2344 test_undefinedOperator_indexSetter() async { 2519 test_undefinedOperator_indexSetter() async {
2345 Source source = addSource(r''' 2520 Source source = addSource(r'''
2346 class A {} 2521 class A {}
2347 f(var a) { 2522 f(var a) {
2348 if(a is A) { 2523 if(a is A) {
2349 a[0] = 1; 2524 a[0] = 1;
2350 } 2525 }
2351 }'''); 2526 }''');
2352 await assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); 2527 await computeAnalysisResult(source);
2528 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
2353 } 2529 }
2354 2530
2355 test_undefinedOperator_postfixExpression() async { 2531 test_undefinedOperator_postfixExpression() async {
2356 Source source = addSource(r''' 2532 Source source = addSource(r'''
2357 class A {} 2533 class A {}
2358 f(var a) { 2534 f(var a) {
2359 if(a is A) { 2535 if(a is A) {
2360 a++; 2536 a++;
2361 } 2537 }
2362 }'''); 2538 }''');
2363 await assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); 2539 await computeAnalysisResult(source);
2540 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
2364 } 2541 }
2365 2542
2366 test_undefinedOperator_prefixExpression() async { 2543 test_undefinedOperator_prefixExpression() async {
2367 Source source = addSource(r''' 2544 Source source = addSource(r'''
2368 class A {} 2545 class A {}
2369 f(var a) { 2546 f(var a) {
2370 if(a is A) { 2547 if(a is A) {
2371 ++a; 2548 ++a;
2372 } 2549 }
2373 }'''); 2550 }''');
2374 await assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); 2551 await computeAnalysisResult(source);
2552 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
2375 } 2553 }
2376 2554
2377 test_undefinedSetter() async { 2555 test_undefinedSetter() async {
2378 Source source = addSource(r''' 2556 Source source = addSource(r'''
2379 class A {} 2557 class A {}
2380 f(var a) { 2558 f(var a) {
2381 if(a is A) { 2559 if(a is A) {
2382 a.m = 0; 2560 a.m = 0;
2383 } 2561 }
2384 }'''); 2562 }''');
2385 await assertErrors(source, [HintCode.UNDEFINED_SETTER]); 2563 await computeAnalysisResult(source);
2564 assertErrors(source, [HintCode.UNDEFINED_SETTER]);
2386 } 2565 }
2387 2566
2388 test_undefinedSetter_message() async { 2567 test_undefinedSetter_message() async {
2389 // The implementation of HintCode.UNDEFINED_SETTER assumes that 2568 // The implementation of HintCode.UNDEFINED_SETTER assumes that
2390 // UNDEFINED_SETTER in StaticTypeWarningCode and StaticWarningCode are the 2569 // UNDEFINED_SETTER in StaticTypeWarningCode and StaticWarningCode are the
2391 // same, this verifies that assumption. 2570 // same, this verifies that assumption.
2392 expect(StaticWarningCode.UNDEFINED_SETTER.message, 2571 expect(StaticWarningCode.UNDEFINED_SETTER.message,
2393 StaticTypeWarningCode.UNDEFINED_SETTER.message); 2572 StaticTypeWarningCode.UNDEFINED_SETTER.message);
2394 } 2573 }
2395 2574
2396 test_unnecessaryCast_type_supertype() async { 2575 test_unnecessaryCast_type_supertype() async {
2397 Source source = addSource(r''' 2576 Source source = addSource(r'''
2398 m(int i) { 2577 m(int i) {
2399 var b = i as Object; 2578 var b = i as Object;
2400 }'''); 2579 }''');
2401 await assertErrors(source, [HintCode.UNNECESSARY_CAST]); 2580 await computeAnalysisResult(source);
2581 assertErrors(source, [HintCode.UNNECESSARY_CAST]);
2402 verify([source]); 2582 verify([source]);
2403 } 2583 }
2404 2584
2405 test_unnecessaryCast_type_type() async { 2585 test_unnecessaryCast_type_type() async {
2406 Source source = addSource(r''' 2586 Source source = addSource(r'''
2407 m(num i) { 2587 m(num i) {
2408 var b = i as num; 2588 var b = i as num;
2409 }'''); 2589 }''');
2410 await assertErrors(source, [HintCode.UNNECESSARY_CAST]); 2590 await computeAnalysisResult(source);
2591 assertErrors(source, [HintCode.UNNECESSARY_CAST]);
2411 verify([source]); 2592 verify([source]);
2412 } 2593 }
2413 2594
2414 test_unnecessaryNoSuchMethod_blockBody() async { 2595 test_unnecessaryNoSuchMethod_blockBody() async {
2415 Source source = addSource(r''' 2596 Source source = addSource(r'''
2416 class A { 2597 class A {
2417 noSuchMethod(x) => super.noSuchMethod(x); 2598 noSuchMethod(x) => super.noSuchMethod(x);
2418 } 2599 }
2419 class B extends A { 2600 class B extends A {
2420 mmm(); 2601 mmm();
2421 noSuchMethod(y) { 2602 noSuchMethod(y) {
2422 return super.noSuchMethod(y); 2603 return super.noSuchMethod(y);
2423 } 2604 }
2424 }'''); 2605 }''');
2425 await assertErrors(source, [HintCode.UNNECESSARY_NO_SUCH_METHOD]); 2606 await computeAnalysisResult(source);
2607 assertErrors(source, [HintCode.UNNECESSARY_NO_SUCH_METHOD]);
2426 verify([source]); 2608 verify([source]);
2427 } 2609 }
2428 2610
2429 test_unnecessaryNoSuchMethod_expressionBody() async { 2611 test_unnecessaryNoSuchMethod_expressionBody() async {
2430 Source source = addSource(r''' 2612 Source source = addSource(r'''
2431 class A { 2613 class A {
2432 noSuchMethod(x) => super.noSuchMethod(x); 2614 noSuchMethod(x) => super.noSuchMethod(x);
2433 } 2615 }
2434 class B extends A { 2616 class B extends A {
2435 mmm(); 2617 mmm();
2436 noSuchMethod(y) => super.noSuchMethod(y); 2618 noSuchMethod(y) => super.noSuchMethod(y);
2437 }'''); 2619 }''');
2438 await assertErrors(source, [HintCode.UNNECESSARY_NO_SUCH_METHOD]); 2620 await computeAnalysisResult(source);
2621 assertErrors(source, [HintCode.UNNECESSARY_NO_SUCH_METHOD]);
2439 verify([source]); 2622 verify([source]);
2440 } 2623 }
2441 2624
2442 test_unnecessaryTypeCheck_null_is_Null() async { 2625 test_unnecessaryTypeCheck_null_is_Null() async {
2443 Source source = addSource("bool b = null is Null;"); 2626 Source source = addSource("bool b = null is Null;");
2444 await assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]); 2627 await computeAnalysisResult(source);
2628 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
2445 verify([source]); 2629 verify([source]);
2446 } 2630 }
2447 2631
2448 test_unnecessaryTypeCheck_null_not_Null() async { 2632 test_unnecessaryTypeCheck_null_not_Null() async {
2449 Source source = addSource("bool b = null is! Null;"); 2633 Source source = addSource("bool b = null is! Null;");
2450 await assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); 2634 await computeAnalysisResult(source);
2635 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
2451 verify([source]); 2636 verify([source]);
2452 } 2637 }
2453 2638
2454 test_unnecessaryTypeCheck_type_is_dynamic() async { 2639 test_unnecessaryTypeCheck_type_is_dynamic() async {
2455 Source source = addSource(r''' 2640 Source source = addSource(r'''
2456 m(i) { 2641 m(i) {
2457 bool b = i is dynamic; 2642 bool b = i is dynamic;
2458 }'''); 2643 }''');
2459 await assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]); 2644 await computeAnalysisResult(source);
2645 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
2460 verify([source]); 2646 verify([source]);
2461 } 2647 }
2462 2648
2463 test_unnecessaryTypeCheck_type_is_object() async { 2649 test_unnecessaryTypeCheck_type_is_object() async {
2464 Source source = addSource(r''' 2650 Source source = addSource(r'''
2465 m(i) { 2651 m(i) {
2466 bool b = i is Object; 2652 bool b = i is Object;
2467 }'''); 2653 }''');
2468 await assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]); 2654 await computeAnalysisResult(source);
2655 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
2469 verify([source]); 2656 verify([source]);
2470 } 2657 }
2471 2658
2472 test_unnecessaryTypeCheck_type_not_dynamic() async { 2659 test_unnecessaryTypeCheck_type_not_dynamic() async {
2473 Source source = addSource(r''' 2660 Source source = addSource(r'''
2474 m(i) { 2661 m(i) {
2475 bool b = i is! dynamic; 2662 bool b = i is! dynamic;
2476 }'''); 2663 }''');
2477 await assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); 2664 await computeAnalysisResult(source);
2665 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
2478 verify([source]); 2666 verify([source]);
2479 } 2667 }
2480 2668
2481 test_unnecessaryTypeCheck_type_not_object() async { 2669 test_unnecessaryTypeCheck_type_not_object() async {
2482 Source source = addSource(r''' 2670 Source source = addSource(r'''
2483 m(i) { 2671 m(i) {
2484 bool b = i is! Object; 2672 bool b = i is! Object;
2485 }'''); 2673 }''');
2486 await assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); 2674 await computeAnalysisResult(source);
2675 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
2487 verify([source]); 2676 verify([source]);
2488 } 2677 }
2489 2678
2490 test_unusedElement_class_isUsed_extends() async { 2679 test_unusedElement_class_isUsed_extends() async {
2491 enableUnusedElement = true; 2680 enableUnusedElement = true;
2492 Source source = addSource(r''' 2681 Source source = addSource(r'''
2493 class _A {} 2682 class _A {}
2494 class B extends _A {} 2683 class B extends _A {}
2495 '''); 2684 ''');
2496 await assertNoErrors(source); 2685 await computeAnalysisResult(source);
2686 assertNoErrors(source);
2497 verify([source]); 2687 verify([source]);
2498 } 2688 }
2499 2689
2500 test_unusedElement_class_isUsed_fieldDeclaration() async { 2690 test_unusedElement_class_isUsed_fieldDeclaration() async {
2501 enableUnusedElement = true; 2691 enableUnusedElement = true;
2502 var src = r''' 2692 var src = r'''
2503 class Foo { 2693 class Foo {
2504 _Bar x; 2694 _Bar x;
2505 } 2695 }
2506 2696
2507 class _Bar { 2697 class _Bar {
2508 } 2698 }
2509 '''; 2699 ''';
2510 Source source = addSource(src); 2700 Source source = addSource(src);
2511 await assertNoErrors(source); 2701 await computeAnalysisResult(source);
2702 assertNoErrors(source);
2512 verify([source]); 2703 verify([source]);
2513 } 2704 }
2514 2705
2515 test_unusedElement_class_isUsed_implements() async { 2706 test_unusedElement_class_isUsed_implements() async {
2516 enableUnusedElement = true; 2707 enableUnusedElement = true;
2517 Source source = addSource(r''' 2708 Source source = addSource(r'''
2518 class _A {} 2709 class _A {}
2519 class B implements _A {} 2710 class B implements _A {}
2520 '''); 2711 ''');
2521 await assertNoErrors(source); 2712 await computeAnalysisResult(source);
2713 assertNoErrors(source);
2522 verify([source]); 2714 verify([source]);
2523 } 2715 }
2524 2716
2525 test_unusedElement_class_isUsed_instanceCreation() async { 2717 test_unusedElement_class_isUsed_instanceCreation() async {
2526 enableUnusedElement = true; 2718 enableUnusedElement = true;
2527 Source source = addSource(r''' 2719 Source source = addSource(r'''
2528 class _A {} 2720 class _A {}
2529 main() { 2721 main() {
2530 new _A(); 2722 new _A();
2531 }'''); 2723 }''');
2532 await assertNoErrors(source); 2724 await computeAnalysisResult(source);
2725 assertNoErrors(source);
2533 verify([source]); 2726 verify([source]);
2534 } 2727 }
2535 2728
2536 test_unusedElement_class_isUsed_staticFieldAccess() async { 2729 test_unusedElement_class_isUsed_staticFieldAccess() async {
2537 enableUnusedElement = true; 2730 enableUnusedElement = true;
2538 Source source = addSource(r''' 2731 Source source = addSource(r'''
2539 class _A { 2732 class _A {
2540 static const F = 42; 2733 static const F = 42;
2541 } 2734 }
2542 main() { 2735 main() {
2543 _A.F; 2736 _A.F;
2544 }'''); 2737 }''');
2545 await assertNoErrors(source); 2738 await computeAnalysisResult(source);
2739 assertNoErrors(source);
2546 verify([source]); 2740 verify([source]);
2547 } 2741 }
2548 2742
2549 test_unusedElement_class_isUsed_staticMethodInvocation() async { 2743 test_unusedElement_class_isUsed_staticMethodInvocation() async {
2550 enableUnusedElement = true; 2744 enableUnusedElement = true;
2551 Source source = addSource(r''' 2745 Source source = addSource(r'''
2552 class _A { 2746 class _A {
2553 static m() {} 2747 static m() {}
2554 } 2748 }
2555 main() { 2749 main() {
2556 _A.m(); 2750 _A.m();
2557 }'''); 2751 }''');
2558 await assertNoErrors(source); 2752 await computeAnalysisResult(source);
2753 assertNoErrors(source);
2559 verify([source]); 2754 verify([source]);
2560 } 2755 }
2561 2756
2562 test_unusedElement_class_isUsed_typeArgument() async { 2757 test_unusedElement_class_isUsed_typeArgument() async {
2563 enableUnusedElement = true; 2758 enableUnusedElement = true;
2564 Source source = addSource(r''' 2759 Source source = addSource(r'''
2565 class _A {} 2760 class _A {}
2566 main() { 2761 main() {
2567 var v = new List<_A>(); 2762 var v = new List<_A>();
2568 print(v); 2763 print(v);
2569 }'''); 2764 }''');
2570 await assertNoErrors(source); 2765 await computeAnalysisResult(source);
2766 assertNoErrors(source);
2571 verify([source]); 2767 verify([source]);
2572 } 2768 }
2573 2769
2574 test_unusedElement_class_notUsed_inClassMember() async { 2770 test_unusedElement_class_notUsed_inClassMember() async {
2575 enableUnusedElement = true; 2771 enableUnusedElement = true;
2576 Source source = addSource(r''' 2772 Source source = addSource(r'''
2577 class _A { 2773 class _A {
2578 static staticMethod() { 2774 static staticMethod() {
2579 new _A(); 2775 new _A();
2580 } 2776 }
2581 instanceMethod() { 2777 instanceMethod() {
2582 new _A(); 2778 new _A();
2583 } 2779 }
2584 } 2780 }
2585 '''); 2781 ''');
2586 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2782 await computeAnalysisResult(source);
2783 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2587 verify([source]); 2784 verify([source]);
2588 } 2785 }
2589 2786
2590 test_unusedElement_class_notUsed_inConstructorName() async { 2787 test_unusedElement_class_notUsed_inConstructorName() async {
2591 enableUnusedElement = true; 2788 enableUnusedElement = true;
2592 Source source = addSource(r''' 2789 Source source = addSource(r'''
2593 class _A { 2790 class _A {
2594 _A() {} 2791 _A() {}
2595 _A.named() {} 2792 _A.named() {}
2596 } 2793 }
2597 '''); 2794 ''');
2598 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2795 await computeAnalysisResult(source);
2796 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2599 verify([source]); 2797 verify([source]);
2600 } 2798 }
2601 2799
2602 test_unusedElement_class_notUsed_isExpression() async { 2800 test_unusedElement_class_notUsed_isExpression() async {
2603 enableUnusedElement = true; 2801 enableUnusedElement = true;
2604 Source source = addSource(r''' 2802 Source source = addSource(r'''
2605 class _A {} 2803 class _A {}
2606 main(p) { 2804 main(p) {
2607 if (p is _A) { 2805 if (p is _A) {
2608 } 2806 }
2609 } 2807 }
2610 '''); 2808 ''');
2611 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2809 await computeAnalysisResult(source);
2810 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2612 verify([source]); 2811 verify([source]);
2613 } 2812 }
2614 2813
2615 test_unusedElement_class_notUsed_noReference() async { 2814 test_unusedElement_class_notUsed_noReference() async {
2616 enableUnusedElement = true; 2815 enableUnusedElement = true;
2617 Source source = addSource(r''' 2816 Source source = addSource(r'''
2618 class _A {} 2817 class _A {}
2619 main() { 2818 main() {
2620 }'''); 2819 }''');
2621 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2820 await computeAnalysisResult(source);
2821 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2622 verify([source]); 2822 verify([source]);
2623 } 2823 }
2624 2824
2625 test_unusedElement_class_notUsed_variableDeclaration() async { 2825 test_unusedElement_class_notUsed_variableDeclaration() async {
2626 enableUnusedElement = true; 2826 enableUnusedElement = true;
2627 Source source = addSource(r''' 2827 Source source = addSource(r'''
2628 class _A {} 2828 class _A {}
2629 main() { 2829 main() {
2630 _A v; 2830 _A v;
2631 print(v); 2831 print(v);
2632 } 2832 }
2633 print(x) {} 2833 print(x) {}
2634 '''); 2834 ''');
2635 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2835 await computeAnalysisResult(source);
2836 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2636 verify([source]); 2837 verify([source]);
2637 } 2838 }
2638 2839
2639 test_unusedElement_enum_isUsed_fieldReference() async { 2840 test_unusedElement_enum_isUsed_fieldReference() async {
2640 enableUnusedElement = true; 2841 enableUnusedElement = true;
2641 Source source = addSource(r''' 2842 Source source = addSource(r'''
2642 enum _MyEnum {A, B, C} 2843 enum _MyEnum {A, B, C}
2643 main() { 2844 main() {
2644 print(_MyEnum.B); 2845 print(_MyEnum.B);
2645 }'''); 2846 }''');
2646 await assertNoErrors(source); 2847 await computeAnalysisResult(source);
2848 assertNoErrors(source);
2647 verify([source]); 2849 verify([source]);
2648 } 2850 }
2649 2851
2650 test_unusedElement_enum_notUsed_noReference() async { 2852 test_unusedElement_enum_notUsed_noReference() async {
2651 enableUnusedElement = true; 2853 enableUnusedElement = true;
2652 Source source = addSource(r''' 2854 Source source = addSource(r'''
2653 enum _MyEnum {A, B, C} 2855 enum _MyEnum {A, B, C}
2654 main() { 2856 main() {
2655 }'''); 2857 }''');
2656 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2858 await computeAnalysisResult(source);
2859 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2657 verify([source]); 2860 verify([source]);
2658 } 2861 }
2659 2862
2660 test_unusedElement_functionLocal_isUsed_closure() async { 2863 test_unusedElement_functionLocal_isUsed_closure() async {
2661 enableUnusedElement = true; 2864 enableUnusedElement = true;
2662 Source source = addSource(r''' 2865 Source source = addSource(r'''
2663 main() { 2866 main() {
2664 print(() {}); 2867 print(() {});
2665 } 2868 }
2666 print(x) {} 2869 print(x) {}
2667 '''); 2870 ''');
2668 await assertNoErrors(source); 2871 await computeAnalysisResult(source);
2872 assertNoErrors(source);
2669 verify([source]); 2873 verify([source]);
2670 } 2874 }
2671 2875
2672 test_unusedElement_functionLocal_isUsed_invocation() async { 2876 test_unusedElement_functionLocal_isUsed_invocation() async {
2673 enableUnusedElement = true; 2877 enableUnusedElement = true;
2674 Source source = addSource(r''' 2878 Source source = addSource(r'''
2675 main() { 2879 main() {
2676 f() {} 2880 f() {}
2677 f(); 2881 f();
2678 }'''); 2882 }''');
2679 await assertNoErrors(source); 2883 await computeAnalysisResult(source);
2884 assertNoErrors(source);
2680 verify([source]); 2885 verify([source]);
2681 } 2886 }
2682 2887
2683 test_unusedElement_functionLocal_isUsed_reference() async { 2888 test_unusedElement_functionLocal_isUsed_reference() async {
2684 enableUnusedElement = true; 2889 enableUnusedElement = true;
2685 Source source = addSource(r''' 2890 Source source = addSource(r'''
2686 main() { 2891 main() {
2687 f() {} 2892 f() {}
2688 print(f); 2893 print(f);
2689 } 2894 }
2690 print(x) {} 2895 print(x) {}
2691 '''); 2896 ''');
2692 await assertNoErrors(source); 2897 await computeAnalysisResult(source);
2898 assertNoErrors(source);
2693 verify([source]); 2899 verify([source]);
2694 } 2900 }
2695 2901
2696 test_unusedElement_functionLocal_notUsed_noReference() async { 2902 test_unusedElement_functionLocal_notUsed_noReference() async {
2697 enableUnusedElement = true; 2903 enableUnusedElement = true;
2698 Source source = addSource(r''' 2904 Source source = addSource(r'''
2699 main() { 2905 main() {
2700 f() {} 2906 f() {}
2701 }'''); 2907 }''');
2702 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2908 await computeAnalysisResult(source);
2909 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2703 verify([source]); 2910 verify([source]);
2704 } 2911 }
2705 2912
2706 test_unusedElement_functionLocal_notUsed_referenceFromItself() async { 2913 test_unusedElement_functionLocal_notUsed_referenceFromItself() async {
2707 enableUnusedElement = true; 2914 enableUnusedElement = true;
2708 Source source = addSource(r''' 2915 Source source = addSource(r'''
2709 main() { 2916 main() {
2710 _f(int p) { 2917 _f(int p) {
2711 _f(p - 1); 2918 _f(p - 1);
2712 } 2919 }
2713 }'''); 2920 }''');
2714 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2921 await computeAnalysisResult(source);
2922 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2715 verify([source]); 2923 verify([source]);
2716 } 2924 }
2717 2925
2718 test_unusedElement_functionTop_isUsed_invocation() async { 2926 test_unusedElement_functionTop_isUsed_invocation() async {
2719 enableUnusedElement = true; 2927 enableUnusedElement = true;
2720 Source source = addSource(r''' 2928 Source source = addSource(r'''
2721 _f() {} 2929 _f() {}
2722 main() { 2930 main() {
2723 _f(); 2931 _f();
2724 }'''); 2932 }''');
2725 await assertNoErrors(source); 2933 await computeAnalysisResult(source);
2934 assertNoErrors(source);
2726 verify([source]); 2935 verify([source]);
2727 } 2936 }
2728 2937
2729 test_unusedElement_functionTop_isUsed_reference() async { 2938 test_unusedElement_functionTop_isUsed_reference() async {
2730 enableUnusedElement = true; 2939 enableUnusedElement = true;
2731 Source source = addSource(r''' 2940 Source source = addSource(r'''
2732 _f() {} 2941 _f() {}
2733 main() { 2942 main() {
2734 print(_f); 2943 print(_f);
2735 } 2944 }
2736 print(x) {} 2945 print(x) {}
2737 '''); 2946 ''');
2738 await assertNoErrors(source); 2947 await computeAnalysisResult(source);
2948 assertNoErrors(source);
2739 verify([source]); 2949 verify([source]);
2740 } 2950 }
2741 2951
2742 test_unusedElement_functionTop_notUsed_noReference() async { 2952 test_unusedElement_functionTop_notUsed_noReference() async {
2743 enableUnusedElement = true; 2953 enableUnusedElement = true;
2744 Source source = addSource(r''' 2954 Source source = addSource(r'''
2745 _f() {} 2955 _f() {}
2746 main() { 2956 main() {
2747 }'''); 2957 }''');
2748 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2958 await computeAnalysisResult(source);
2959 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2749 verify([source]); 2960 verify([source]);
2750 } 2961 }
2751 2962
2752 test_unusedElement_functionTop_notUsed_referenceFromItself() async { 2963 test_unusedElement_functionTop_notUsed_referenceFromItself() async {
2753 enableUnusedElement = true; 2964 enableUnusedElement = true;
2754 Source source = addSource(r''' 2965 Source source = addSource(r'''
2755 _f(int p) { 2966 _f(int p) {
2756 _f(p - 1); 2967 _f(p - 1);
2757 } 2968 }
2758 main() { 2969 main() {
2759 }'''); 2970 }''');
2760 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 2971 await computeAnalysisResult(source);
2972 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2761 verify([source]); 2973 verify([source]);
2762 } 2974 }
2763 2975
2764 test_unusedElement_functionTypeAlias_isUsed_isExpression() async { 2976 test_unusedElement_functionTypeAlias_isUsed_isExpression() async {
2765 enableUnusedElement = true; 2977 enableUnusedElement = true;
2766 Source source = addSource(r''' 2978 Source source = addSource(r'''
2767 typedef _F(a, b); 2979 typedef _F(a, b);
2768 main(f) { 2980 main(f) {
2769 if (f is _F) { 2981 if (f is _F) {
2770 print('F'); 2982 print('F');
2771 } 2983 }
2772 }'''); 2984 }''');
2773 await assertNoErrors(source); 2985 await computeAnalysisResult(source);
2986 assertNoErrors(source);
2774 verify([source]); 2987 verify([source]);
2775 } 2988 }
2776 2989
2777 test_unusedElement_functionTypeAlias_isUsed_reference() async { 2990 test_unusedElement_functionTypeAlias_isUsed_reference() async {
2778 enableUnusedElement = true; 2991 enableUnusedElement = true;
2779 Source source = addSource(r''' 2992 Source source = addSource(r'''
2780 typedef _F(a, b); 2993 typedef _F(a, b);
2781 main(_F f) { 2994 main(_F f) {
2782 }'''); 2995 }''');
2783 await assertNoErrors(source); 2996 await computeAnalysisResult(source);
2997 assertNoErrors(source);
2784 verify([source]); 2998 verify([source]);
2785 } 2999 }
2786 3000
2787 test_unusedElement_functionTypeAlias_isUsed_typeArgument() async { 3001 test_unusedElement_functionTypeAlias_isUsed_typeArgument() async {
2788 enableUnusedElement = true; 3002 enableUnusedElement = true;
2789 Source source = addSource(r''' 3003 Source source = addSource(r'''
2790 typedef _F(a, b); 3004 typedef _F(a, b);
2791 main() { 3005 main() {
2792 var v = new List<_F>(); 3006 var v = new List<_F>();
2793 print(v); 3007 print(v);
2794 }'''); 3008 }''');
2795 await assertNoErrors(source); 3009 await computeAnalysisResult(source);
3010 assertNoErrors(source);
2796 verify([source]); 3011 verify([source]);
2797 } 3012 }
2798 3013
2799 test_unusedElement_functionTypeAlias_isUsed_variableDeclaration() async { 3014 test_unusedElement_functionTypeAlias_isUsed_variableDeclaration() async {
2800 enableUnusedElement = true; 3015 enableUnusedElement = true;
2801 Source source = addSource(r''' 3016 Source source = addSource(r'''
2802 typedef _F(a, b); 3017 typedef _F(a, b);
2803 class A { 3018 class A {
2804 _F f; 3019 _F f;
2805 }'''); 3020 }''');
2806 await assertNoErrors(source); 3021 await computeAnalysisResult(source);
3022 assertNoErrors(source);
2807 verify([source]); 3023 verify([source]);
2808 } 3024 }
2809 3025
2810 test_unusedElement_functionTypeAlias_notUsed_noReference() async { 3026 test_unusedElement_functionTypeAlias_notUsed_noReference() async {
2811 enableUnusedElement = true; 3027 enableUnusedElement = true;
2812 Source source = addSource(r''' 3028 Source source = addSource(r'''
2813 typedef _F(a, b); 3029 typedef _F(a, b);
2814 main() { 3030 main() {
2815 }'''); 3031 }''');
2816 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3032 await computeAnalysisResult(source);
3033 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2817 verify([source]); 3034 verify([source]);
2818 } 3035 }
2819 3036
2820 test_unusedElement_getter_isUsed_invocation_implicitThis() async { 3037 test_unusedElement_getter_isUsed_invocation_implicitThis() async {
2821 enableUnusedElement = true; 3038 enableUnusedElement = true;
2822 Source source = addSource(r''' 3039 Source source = addSource(r'''
2823 class A { 3040 class A {
2824 get _g => null; 3041 get _g => null;
2825 useGetter() { 3042 useGetter() {
2826 var v = _g; 3043 var v = _g;
2827 } 3044 }
2828 }'''); 3045 }''');
2829 await assertNoErrors(source); 3046 await computeAnalysisResult(source);
3047 assertNoErrors(source);
2830 verify([source]); 3048 verify([source]);
2831 } 3049 }
2832 3050
2833 test_unusedElement_getter_isUsed_invocation_PrefixedIdentifier() async { 3051 test_unusedElement_getter_isUsed_invocation_PrefixedIdentifier() async {
2834 enableUnusedElement = true; 3052 enableUnusedElement = true;
2835 Source source = addSource(r''' 3053 Source source = addSource(r'''
2836 class A { 3054 class A {
2837 get _g => null; 3055 get _g => null;
2838 } 3056 }
2839 main(A a) { 3057 main(A a) {
2840 var v = a._g; 3058 var v = a._g;
2841 } 3059 }
2842 '''); 3060 ''');
2843 await assertNoErrors(source); 3061 await computeAnalysisResult(source);
3062 assertNoErrors(source);
2844 verify([source]); 3063 verify([source]);
2845 } 3064 }
2846 3065
2847 test_unusedElement_getter_isUsed_invocation_PropertyAccess() async { 3066 test_unusedElement_getter_isUsed_invocation_PropertyAccess() async {
2848 enableUnusedElement = true; 3067 enableUnusedElement = true;
2849 Source source = addSource(r''' 3068 Source source = addSource(r'''
2850 class A { 3069 class A {
2851 get _g => null; 3070 get _g => null;
2852 } 3071 }
2853 main() { 3072 main() {
2854 var v = new A()._g; 3073 var v = new A()._g;
2855 } 3074 }
2856 '''); 3075 ''');
2857 await assertNoErrors(source); 3076 await computeAnalysisResult(source);
3077 assertNoErrors(source);
2858 verify([source]); 3078 verify([source]);
2859 } 3079 }
2860 3080
2861 test_unusedElement_getter_notUsed_noReference() async { 3081 test_unusedElement_getter_notUsed_noReference() async {
2862 enableUnusedElement = true; 3082 enableUnusedElement = true;
2863 Source source = addSource(r''' 3083 Source source = addSource(r'''
2864 class A { 3084 class A {
2865 get _g => null; 3085 get _g => null;
2866 }'''); 3086 }''');
2867 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3087 await computeAnalysisResult(source);
3088 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2868 verify([source]); 3089 verify([source]);
2869 } 3090 }
2870 3091
2871 test_unusedElement_getter_notUsed_referenceFromItself() async { 3092 test_unusedElement_getter_notUsed_referenceFromItself() async {
2872 enableUnusedElement = true; 3093 enableUnusedElement = true;
2873 Source source = addSource(r''' 3094 Source source = addSource(r'''
2874 class A { 3095 class A {
2875 get _g { 3096 get _g {
2876 return _g; 3097 return _g;
2877 } 3098 }
2878 }'''); 3099 }''');
2879 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3100 await computeAnalysisResult(source);
3101 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
2880 verify([source]); 3102 verify([source]);
2881 } 3103 }
2882 3104
2883 test_unusedElement_method_isUsed_hasReference_implicitThis() async { 3105 test_unusedElement_method_isUsed_hasReference_implicitThis() async {
2884 enableUnusedElement = true; 3106 enableUnusedElement = true;
2885 Source source = addSource(r''' 3107 Source source = addSource(r'''
2886 class A { 3108 class A {
2887 _m() {} 3109 _m() {}
2888 useMethod() { 3110 useMethod() {
2889 print(_m); 3111 print(_m);
2890 } 3112 }
2891 } 3113 }
2892 print(x) {} 3114 print(x) {}
2893 '''); 3115 ''');
2894 await assertNoErrors(source); 3116 await computeAnalysisResult(source);
3117 assertNoErrors(source);
2895 verify([source]); 3118 verify([source]);
2896 } 3119 }
2897 3120
2898 test_unusedElement_method_isUsed_hasReference_implicitThis_subclass() async { 3121 test_unusedElement_method_isUsed_hasReference_implicitThis_subclass() async {
2899 enableUnusedElement = true; 3122 enableUnusedElement = true;
2900 Source source = addSource(r''' 3123 Source source = addSource(r'''
2901 class A { 3124 class A {
2902 _m() {} 3125 _m() {}
2903 useMethod() { 3126 useMethod() {
2904 print(_m); 3127 print(_m);
2905 } 3128 }
2906 } 3129 }
2907 class B extends A { 3130 class B extends A {
2908 _m() {} 3131 _m() {}
2909 } 3132 }
2910 print(x) {} 3133 print(x) {}
2911 '''); 3134 ''');
2912 await assertNoErrors(source); 3135 await computeAnalysisResult(source);
3136 assertNoErrors(source);
2913 verify([source]); 3137 verify([source]);
2914 } 3138 }
2915 3139
2916 test_unusedElement_method_isUsed_hasReference_PrefixedIdentifier() async { 3140 test_unusedElement_method_isUsed_hasReference_PrefixedIdentifier() async {
2917 enableUnusedElement = true; 3141 enableUnusedElement = true;
2918 Source source = addSource(r''' 3142 Source source = addSource(r'''
2919 class A { 3143 class A {
2920 _m() {} 3144 _m() {}
2921 } 3145 }
2922 main(A a) { 3146 main(A a) {
2923 a._m; 3147 a._m;
2924 }'''); 3148 }''');
2925 await assertNoErrors(source); 3149 await computeAnalysisResult(source);
3150 assertNoErrors(source);
2926 verify([source]); 3151 verify([source]);
2927 } 3152 }
2928 3153
2929 test_unusedElement_method_isUsed_hasReference_PropertyAccess() async { 3154 test_unusedElement_method_isUsed_hasReference_PropertyAccess() async {
2930 enableUnusedElement = true; 3155 enableUnusedElement = true;
2931 Source source = addSource(r''' 3156 Source source = addSource(r'''
2932 class A { 3157 class A {
2933 _m() {} 3158 _m() {}
2934 } 3159 }
2935 main() { 3160 main() {
2936 new A()._m; 3161 new A()._m;
2937 }'''); 3162 }''');
2938 await assertNoErrors(source); 3163 await computeAnalysisResult(source);
3164 assertNoErrors(source);
2939 verify([source]); 3165 verify([source]);
2940 } 3166 }
2941 3167
2942 test_unusedElement_method_isUsed_invocation_implicitThis() async { 3168 test_unusedElement_method_isUsed_invocation_implicitThis() async {
2943 enableUnusedElement = true; 3169 enableUnusedElement = true;
2944 Source source = addSource(r''' 3170 Source source = addSource(r'''
2945 class A { 3171 class A {
2946 _m() {} 3172 _m() {}
2947 useMethod() { 3173 useMethod() {
2948 _m(); 3174 _m();
2949 } 3175 }
2950 }'''); 3176 }''');
2951 await assertNoErrors(source); 3177 await computeAnalysisResult(source);
3178 assertNoErrors(source);
2952 verify([source]); 3179 verify([source]);
2953 } 3180 }
2954 3181
2955 test_unusedElement_method_isUsed_invocation_implicitThis_subclass() async { 3182 test_unusedElement_method_isUsed_invocation_implicitThis_subclass() async {
2956 enableUnusedElement = true; 3183 enableUnusedElement = true;
2957 Source source = addSource(r''' 3184 Source source = addSource(r'''
2958 class A { 3185 class A {
2959 _m() {} 3186 _m() {}
2960 useMethod() { 3187 useMethod() {
2961 _m(); 3188 _m();
2962 } 3189 }
2963 } 3190 }
2964 class B extends A { 3191 class B extends A {
2965 _m() {} 3192 _m() {}
2966 }'''); 3193 }''');
2967 await assertNoErrors(source); 3194 await computeAnalysisResult(source);
3195 assertNoErrors(source);
2968 verify([source]); 3196 verify([source]);
2969 } 3197 }
2970 3198
2971 test_unusedElement_method_isUsed_invocation_MemberElement() async { 3199 test_unusedElement_method_isUsed_invocation_MemberElement() async {
2972 enableUnusedElement = true; 3200 enableUnusedElement = true;
2973 Source source = addSource(r''' 3201 Source source = addSource(r'''
2974 class A<T> { 3202 class A<T> {
2975 _m(T t) {} 3203 _m(T t) {}
2976 } 3204 }
2977 main(A<int> a) { 3205 main(A<int> a) {
2978 a._m(0); 3206 a._m(0);
2979 }'''); 3207 }''');
2980 await assertNoErrors(source); 3208 await computeAnalysisResult(source);
3209 assertNoErrors(source);
2981 verify([source]); 3210 verify([source]);
2982 } 3211 }
2983 3212
2984 test_unusedElement_method_isUsed_invocation_propagated() async { 3213 test_unusedElement_method_isUsed_invocation_propagated() async {
2985 enableUnusedElement = true; 3214 enableUnusedElement = true;
2986 Source source = addSource(r''' 3215 Source source = addSource(r'''
2987 class A { 3216 class A {
2988 _m() {} 3217 _m() {}
2989 } 3218 }
2990 main() { 3219 main() {
2991 var a = new A(); 3220 var a = new A();
2992 a._m(); 3221 a._m();
2993 }'''); 3222 }''');
2994 await assertNoErrors(source); 3223 await computeAnalysisResult(source);
3224 assertNoErrors(source);
2995 verify([source]); 3225 verify([source]);
2996 } 3226 }
2997 3227
2998 test_unusedElement_method_isUsed_invocation_static() async { 3228 test_unusedElement_method_isUsed_invocation_static() async {
2999 enableUnusedElement = true; 3229 enableUnusedElement = true;
3000 Source source = addSource(r''' 3230 Source source = addSource(r'''
3001 class A { 3231 class A {
3002 _m() {} 3232 _m() {}
3003 } 3233 }
3004 main() { 3234 main() {
3005 A a = new A(); 3235 A a = new A();
3006 a._m(); 3236 a._m();
3007 }'''); 3237 }''');
3008 await assertNoErrors(source); 3238 await computeAnalysisResult(source);
3239 assertNoErrors(source);
3009 verify([source]); 3240 verify([source]);
3010 } 3241 }
3011 3242
3012 test_unusedElement_method_isUsed_invocation_subclass() async { 3243 test_unusedElement_method_isUsed_invocation_subclass() async {
3013 enableUnusedElement = true; 3244 enableUnusedElement = true;
3014 Source source = addSource(r''' 3245 Source source = addSource(r'''
3015 class A { 3246 class A {
3016 _m() {} 3247 _m() {}
3017 } 3248 }
3018 class B extends A { 3249 class B extends A {
3019 _m() {} 3250 _m() {}
3020 } 3251 }
3021 main(A a) { 3252 main(A a) {
3022 a._m(); 3253 a._m();
3023 }'''); 3254 }''');
3024 await assertNoErrors(source); 3255 await computeAnalysisResult(source);
3256 assertNoErrors(source);
3025 verify([source]); 3257 verify([source]);
3026 } 3258 }
3027 3259
3028 test_unusedElement_method_isUsed_notPrivate() async { 3260 test_unusedElement_method_isUsed_notPrivate() async {
3029 enableUnusedElement = true; 3261 enableUnusedElement = true;
3030 Source source = addSource(r''' 3262 Source source = addSource(r'''
3031 class A { 3263 class A {
3032 m() {} 3264 m() {}
3033 } 3265 }
3034 main() { 3266 main() {
3035 }'''); 3267 }''');
3036 await assertNoErrors(source); 3268 await computeAnalysisResult(source);
3269 assertNoErrors(source);
3037 verify([source]); 3270 verify([source]);
3038 } 3271 }
3039 3272
3040 test_unusedElement_method_isUsed_staticInvocation() async { 3273 test_unusedElement_method_isUsed_staticInvocation() async {
3041 enableUnusedElement = true; 3274 enableUnusedElement = true;
3042 Source source = addSource(r''' 3275 Source source = addSource(r'''
3043 class A { 3276 class A {
3044 static _m() {} 3277 static _m() {}
3045 } 3278 }
3046 main() { 3279 main() {
3047 A._m(); 3280 A._m();
3048 }'''); 3281 }''');
3049 await assertNoErrors(source); 3282 await computeAnalysisResult(source);
3283 assertNoErrors(source);
3050 verify([source]); 3284 verify([source]);
3051 } 3285 }
3052 3286
3053 test_unusedElement_method_notUsed_noReference() async { 3287 test_unusedElement_method_notUsed_noReference() async {
3054 enableUnusedElement = true; 3288 enableUnusedElement = true;
3055 Source source = addSource(r''' 3289 Source source = addSource(r'''
3056 class A { 3290 class A {
3057 static _m() {} 3291 static _m() {}
3058 }'''); 3292 }''');
3059 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3293 await computeAnalysisResult(source);
3294 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
3060 verify([source]); 3295 verify([source]);
3061 } 3296 }
3062 3297
3063 test_unusedElement_method_notUsed_referenceFromItself() async { 3298 test_unusedElement_method_notUsed_referenceFromItself() async {
3064 enableUnusedElement = true; 3299 enableUnusedElement = true;
3065 Source source = addSource(r''' 3300 Source source = addSource(r'''
3066 class A { 3301 class A {
3067 static _m(int p) { 3302 static _m(int p) {
3068 _m(p - 1); 3303 _m(p - 1);
3069 } 3304 }
3070 }'''); 3305 }''');
3071 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3306 await computeAnalysisResult(source);
3307 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
3072 verify([source]); 3308 verify([source]);
3073 } 3309 }
3074 3310
3075 test_unusedElement_setter_isUsed_invocation_implicitThis() async { 3311 test_unusedElement_setter_isUsed_invocation_implicitThis() async {
3076 enableUnusedElement = true; 3312 enableUnusedElement = true;
3077 Source source = addSource(r''' 3313 Source source = addSource(r'''
3078 class A { 3314 class A {
3079 set _s(x) {} 3315 set _s(x) {}
3080 useSetter() { 3316 useSetter() {
3081 _s = 42; 3317 _s = 42;
3082 } 3318 }
3083 }'''); 3319 }''');
3084 await assertNoErrors(source); 3320 await computeAnalysisResult(source);
3321 assertNoErrors(source);
3085 verify([source]); 3322 verify([source]);
3086 } 3323 }
3087 3324
3088 test_unusedElement_setter_isUsed_invocation_PrefixedIdentifier() async { 3325 test_unusedElement_setter_isUsed_invocation_PrefixedIdentifier() async {
3089 enableUnusedElement = true; 3326 enableUnusedElement = true;
3090 Source source = addSource(r''' 3327 Source source = addSource(r'''
3091 class A { 3328 class A {
3092 set _s(x) {} 3329 set _s(x) {}
3093 } 3330 }
3094 main(A a) { 3331 main(A a) {
3095 a._s = 42; 3332 a._s = 42;
3096 } 3333 }
3097 '''); 3334 ''');
3098 await assertNoErrors(source); 3335 await computeAnalysisResult(source);
3336 assertNoErrors(source);
3099 verify([source]); 3337 verify([source]);
3100 } 3338 }
3101 3339
3102 test_unusedElement_setter_isUsed_invocation_PropertyAccess() async { 3340 test_unusedElement_setter_isUsed_invocation_PropertyAccess() async {
3103 enableUnusedElement = true; 3341 enableUnusedElement = true;
3104 Source source = addSource(r''' 3342 Source source = addSource(r'''
3105 class A { 3343 class A {
3106 set _s(x) {} 3344 set _s(x) {}
3107 } 3345 }
3108 main() { 3346 main() {
3109 new A()._s = 42; 3347 new A()._s = 42;
3110 } 3348 }
3111 '''); 3349 ''');
3112 await assertNoErrors(source); 3350 await computeAnalysisResult(source);
3351 assertNoErrors(source);
3113 verify([source]); 3352 verify([source]);
3114 } 3353 }
3115 3354
3116 test_unusedElement_setter_notUsed_noReference() async { 3355 test_unusedElement_setter_notUsed_noReference() async {
3117 enableUnusedElement = true; 3356 enableUnusedElement = true;
3118 Source source = addSource(r''' 3357 Source source = addSource(r'''
3119 class A { 3358 class A {
3120 set _s(x) {} 3359 set _s(x) {}
3121 }'''); 3360 }''');
3122 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3361 await computeAnalysisResult(source);
3362 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
3123 verify([source]); 3363 verify([source]);
3124 } 3364 }
3125 3365
3126 test_unusedElement_setter_notUsed_referenceFromItself() async { 3366 test_unusedElement_setter_notUsed_referenceFromItself() async {
3127 enableUnusedElement = true; 3367 enableUnusedElement = true;
3128 Source source = addSource(r''' 3368 Source source = addSource(r'''
3129 class A { 3369 class A {
3130 set _s(int x) { 3370 set _s(int x) {
3131 if (x > 5) { 3371 if (x > 5) {
3132 _s = x - 1; 3372 _s = x - 1;
3133 } 3373 }
3134 } 3374 }
3135 }'''); 3375 }''');
3136 await assertErrors(source, [HintCode.UNUSED_ELEMENT]); 3376 await computeAnalysisResult(source);
3377 assertErrors(source, [HintCode.UNUSED_ELEMENT]);
3137 verify([source]); 3378 verify([source]);
3138 } 3379 }
3139 3380
3140 test_unusedField_isUsed_argument() async { 3381 test_unusedField_isUsed_argument() async {
3141 enableUnusedElement = true; 3382 enableUnusedElement = true;
3142 Source source = addSource(r''' 3383 Source source = addSource(r'''
3143 class A { 3384 class A {
3144 int _f = 0; 3385 int _f = 0;
3145 main() { 3386 main() {
3146 print(++_f); 3387 print(++_f);
3147 } 3388 }
3148 } 3389 }
3149 print(x) {}'''); 3390 print(x) {}''');
3150 await assertErrors(source); 3391 await computeAnalysisResult(source);
3392 assertErrors(source);
3151 verify([source]); 3393 verify([source]);
3152 } 3394 }
3153 3395
3154 test_unusedField_isUsed_reference_implicitThis() async { 3396 test_unusedField_isUsed_reference_implicitThis() async {
3155 enableUnusedElement = true; 3397 enableUnusedElement = true;
3156 Source source = addSource(r''' 3398 Source source = addSource(r'''
3157 class A { 3399 class A {
3158 int _f; 3400 int _f;
3159 main() { 3401 main() {
3160 print(_f); 3402 print(_f);
3161 } 3403 }
3162 } 3404 }
3163 print(x) {}'''); 3405 print(x) {}''');
3164 await assertErrors(source); 3406 await computeAnalysisResult(source);
3407 assertErrors(source);
3165 verify([source]); 3408 verify([source]);
3166 } 3409 }
3167 3410
3168 test_unusedField_isUsed_reference_implicitThis_expressionFunctionBody() async { 3411 test_unusedField_isUsed_reference_implicitThis_expressionFunctionBody() async {
3169 enableUnusedElement = true; 3412 enableUnusedElement = true;
3170 Source source = addSource(r''' 3413 Source source = addSource(r'''
3171 class A { 3414 class A {
3172 int _f; 3415 int _f;
3173 m() => _f; 3416 m() => _f;
3174 }'''); 3417 }''');
3175 await assertErrors(source); 3418 await computeAnalysisResult(source);
3419 assertErrors(source);
3176 verify([source]); 3420 verify([source]);
3177 } 3421 }
3178 3422
3179 test_unusedField_isUsed_reference_implicitThis_subclass() async { 3423 test_unusedField_isUsed_reference_implicitThis_subclass() async {
3180 enableUnusedElement = true; 3424 enableUnusedElement = true;
3181 Source source = addSource(r''' 3425 Source source = addSource(r'''
3182 class A { 3426 class A {
3183 int _f; 3427 int _f;
3184 main() { 3428 main() {
3185 print(_f); 3429 print(_f);
3186 } 3430 }
3187 } 3431 }
3188 class B extends A { 3432 class B extends A {
3189 int _f; 3433 int _f;
3190 } 3434 }
3191 print(x) {}'''); 3435 print(x) {}''');
3192 await assertErrors(source); 3436 await computeAnalysisResult(source);
3437 assertErrors(source);
3193 verify([source]); 3438 verify([source]);
3194 } 3439 }
3195 3440
3196 test_unusedField_isUsed_reference_qualified_propagatedElement() async { 3441 test_unusedField_isUsed_reference_qualified_propagatedElement() async {
3197 enableUnusedElement = true; 3442 enableUnusedElement = true;
3198 Source source = addSource(r''' 3443 Source source = addSource(r'''
3199 class A { 3444 class A {
3200 int _f; 3445 int _f;
3201 } 3446 }
3202 main() { 3447 main() {
3203 var a = new A(); 3448 var a = new A();
3204 print(a._f); 3449 print(a._f);
3205 } 3450 }
3206 print(x) {}'''); 3451 print(x) {}''');
3207 await assertErrors(source); 3452 await computeAnalysisResult(source);
3453 assertErrors(source);
3208 verify([source]); 3454 verify([source]);
3209 } 3455 }
3210 3456
3211 test_unusedField_isUsed_reference_qualified_staticElement() async { 3457 test_unusedField_isUsed_reference_qualified_staticElement() async {
3212 enableUnusedElement = true; 3458 enableUnusedElement = true;
3213 Source source = addSource(r''' 3459 Source source = addSource(r'''
3214 class A { 3460 class A {
3215 int _f; 3461 int _f;
3216 } 3462 }
3217 main() { 3463 main() {
3218 A a = new A(); 3464 A a = new A();
3219 print(a._f); 3465 print(a._f);
3220 } 3466 }
3221 print(x) {}'''); 3467 print(x) {}''');
3222 await assertErrors(source); 3468 await computeAnalysisResult(source);
3469 assertErrors(source);
3223 verify([source]); 3470 verify([source]);
3224 } 3471 }
3225 3472
3226 test_unusedField_isUsed_reference_qualified_unresolved() async { 3473 test_unusedField_isUsed_reference_qualified_unresolved() async {
3227 enableUnusedElement = true; 3474 enableUnusedElement = true;
3228 Source source = addSource(r''' 3475 Source source = addSource(r'''
3229 class A { 3476 class A {
3230 int _f; 3477 int _f;
3231 } 3478 }
3232 main(a) { 3479 main(a) {
3233 print(a._f); 3480 print(a._f);
3234 } 3481 }
3235 print(x) {}'''); 3482 print(x) {}''');
3236 await assertErrors(source); 3483 await computeAnalysisResult(source);
3484 assertErrors(source);
3237 verify([source]); 3485 verify([source]);
3238 } 3486 }
3239 3487
3240 test_unusedField_notUsed_compoundAssign() async { 3488 test_unusedField_notUsed_compoundAssign() async {
3241 enableUnusedElement = true; 3489 enableUnusedElement = true;
3242 Source source = addSource(r''' 3490 Source source = addSource(r'''
3243 class A { 3491 class A {
3244 int _f; 3492 int _f;
3245 main() { 3493 main() {
3246 _f += 2; 3494 _f += 2;
3247 } 3495 }
3248 }'''); 3496 }''');
3249 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3497 await computeAnalysisResult(source);
3498 assertErrors(source, [HintCode.UNUSED_FIELD]);
3250 verify([source]); 3499 verify([source]);
3251 } 3500 }
3252 3501
3253 test_unusedField_notUsed_constructorFieldInitializers() async { 3502 test_unusedField_notUsed_constructorFieldInitializers() async {
3254 enableUnusedElement = true; 3503 enableUnusedElement = true;
3255 Source source = addSource(r''' 3504 Source source = addSource(r'''
3256 class A { 3505 class A {
3257 int _f; 3506 int _f;
3258 A() : _f = 0; 3507 A() : _f = 0;
3259 }'''); 3508 }''');
3260 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3509 await computeAnalysisResult(source);
3510 assertErrors(source, [HintCode.UNUSED_FIELD]);
3261 verify([source]); 3511 verify([source]);
3262 } 3512 }
3263 3513
3264 test_unusedField_notUsed_fieldFormalParameter() async { 3514 test_unusedField_notUsed_fieldFormalParameter() async {
3265 enableUnusedElement = true; 3515 enableUnusedElement = true;
3266 Source source = addSource(r''' 3516 Source source = addSource(r'''
3267 class A { 3517 class A {
3268 int _f; 3518 int _f;
3269 A(this._f); 3519 A(this._f);
3270 }'''); 3520 }''');
3271 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3521 await computeAnalysisResult(source);
3522 assertErrors(source, [HintCode.UNUSED_FIELD]);
3272 verify([source]); 3523 verify([source]);
3273 } 3524 }
3274 3525
3275 test_unusedField_notUsed_noReference() async { 3526 test_unusedField_notUsed_noReference() async {
3276 enableUnusedElement = true; 3527 enableUnusedElement = true;
3277 Source source = addSource(r''' 3528 Source source = addSource(r'''
3278 class A { 3529 class A {
3279 int _f; 3530 int _f;
3280 } 3531 }
3281 '''); 3532 ''');
3282 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3533 await computeAnalysisResult(source);
3534 assertErrors(source, [HintCode.UNUSED_FIELD]);
3283 verify([source]); 3535 verify([source]);
3284 } 3536 }
3285 3537
3286 test_unusedField_notUsed_postfixExpr() async { 3538 test_unusedField_notUsed_postfixExpr() async {
3287 enableUnusedElement = true; 3539 enableUnusedElement = true;
3288 Source source = addSource(r''' 3540 Source source = addSource(r'''
3289 class A { 3541 class A {
3290 int _f = 0; 3542 int _f = 0;
3291 main() { 3543 main() {
3292 _f++; 3544 _f++;
3293 } 3545 }
3294 }'''); 3546 }''');
3295 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3547 await computeAnalysisResult(source);
3548 assertErrors(source, [HintCode.UNUSED_FIELD]);
3296 verify([source]); 3549 verify([source]);
3297 } 3550 }
3298 3551
3299 test_unusedField_notUsed_prefixExpr() async { 3552 test_unusedField_notUsed_prefixExpr() async {
3300 enableUnusedElement = true; 3553 enableUnusedElement = true;
3301 Source source = addSource(r''' 3554 Source source = addSource(r'''
3302 class A { 3555 class A {
3303 int _f = 0; 3556 int _f = 0;
3304 main() { 3557 main() {
3305 ++_f; 3558 ++_f;
3306 } 3559 }
3307 }'''); 3560 }''');
3308 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3561 await computeAnalysisResult(source);
3562 assertErrors(source, [HintCode.UNUSED_FIELD]);
3309 verify([source]); 3563 verify([source]);
3310 } 3564 }
3311 3565
3312 test_unusedField_notUsed_simpleAssignment() async { 3566 test_unusedField_notUsed_simpleAssignment() async {
3313 enableUnusedElement = true; 3567 enableUnusedElement = true;
3314 Source source = addSource(r''' 3568 Source source = addSource(r'''
3315 class A { 3569 class A {
3316 int _f; 3570 int _f;
3317 m() { 3571 m() {
3318 _f = 1; 3572 _f = 1;
3319 } 3573 }
3320 } 3574 }
3321 main(A a) { 3575 main(A a) {
3322 a._f = 2; 3576 a._f = 2;
3323 } 3577 }
3324 '''); 3578 ''');
3325 await assertErrors(source, [HintCode.UNUSED_FIELD]); 3579 await computeAnalysisResult(source);
3580 assertErrors(source, [HintCode.UNUSED_FIELD]);
3326 verify([source]); 3581 verify([source]);
3327 } 3582 }
3328 3583
3329 test_unusedImport() async { 3584 test_unusedImport() async {
3330 Source source = addSource(r''' 3585 Source source = addSource(r'''
3331 library L; 3586 library L;
3332 import 'lib1.dart';'''); 3587 import 'lib1.dart';''');
3333 Source source2 = addNamedSource("/lib1.dart", "library lib1;"); 3588 Source source2 = addNamedSource("/lib1.dart", "library lib1;");
3334 await assertErrors(source, [HintCode.UNUSED_IMPORT]); 3589 await computeAnalysisResult(source);
3335 await assertNoErrors(source2); 3590 await computeAnalysisResult(source2);
3591 assertErrors(source, [HintCode.UNUSED_IMPORT]);
3592 assertNoErrors(source2);
3336 verify([source, source2]); 3593 verify([source, source2]);
3337 } 3594 }
3338 3595
3339 test_unusedImport_as() async { 3596 test_unusedImport_as() async {
3340 Source source = addSource(r''' 3597 Source source = addSource(r'''
3341 library L; 3598 library L;
3342 import 'lib1.dart'; 3599 import 'lib1.dart';
3343 import 'lib1.dart' as one; 3600 import 'lib1.dart' as one;
3344 one.A a;'''); 3601 one.A a;''');
3345 Source source2 = addNamedSource( 3602 Source source2 = addNamedSource(
3346 "/lib1.dart", 3603 "/lib1.dart",
3347 r''' 3604 r'''
3348 library lib1; 3605 library lib1;
3349 class A {}'''); 3606 class A {}''');
3350 await assertErrors(source, [HintCode.UNUSED_IMPORT]); 3607 await computeAnalysisResult(source);
3351 await assertNoErrors(source2); 3608 await computeAnalysisResult(source2);
3609 assertErrors(source, [HintCode.UNUSED_IMPORT]);
3610 assertNoErrors(source2);
3352 verify([source, source2]); 3611 verify([source, source2]);
3353 } 3612 }
3354 3613
3355 @failingTest 3614 @failingTest
3356 test_unusedImport_as_equalPrefixes() async { 3615 test_unusedImport_as_equalPrefixes() async {
3357 // See todo at ImportsVerifier.prefixElementMap. 3616 // See todo at ImportsVerifier.prefixElementMap.
3358 Source source = addSource(r''' 3617 Source source = addSource(r'''
3359 library L; 3618 library L;
3360 import 'lib1.dart' as one; 3619 import 'lib1.dart' as one;
3361 import 'lib2.dart' as one; 3620 import 'lib2.dart' as one;
3362 one.A a;'''); 3621 one.A a;''');
3363 Source source2 = addNamedSource( 3622 Source source2 = addNamedSource(
3364 "/lib1.dart", 3623 "/lib1.dart",
3365 r''' 3624 r'''
3366 library lib1; 3625 library lib1;
3367 class A {}'''); 3626 class A {}''');
3368 Source source3 = addNamedSource( 3627 Source source3 = addNamedSource(
3369 "/lib2.dart", 3628 "/lib2.dart",
3370 r''' 3629 r'''
3371 library lib2; 3630 library lib2;
3372 class B {}'''); 3631 class B {}''');
3373 await assertErrors(source, [HintCode.UNUSED_IMPORT]); 3632 await computeAnalysisResult(source);
3374 await assertNoErrors(source2); 3633 await computeAnalysisResult(source2);
3375 await assertNoErrors(source3); 3634 await computeAnalysisResult(source3);
3635 assertErrors(source, [HintCode.UNUSED_IMPORT]);
3636 assertNoErrors(source2);
3637 assertNoErrors(source3);
3376 verify([source, source2, source3]); 3638 verify([source, source2, source3]);
3377 } 3639 }
3378 3640
3379 test_unusedImport_hide() async { 3641 test_unusedImport_hide() async {
3380 Source source = addSource(r''' 3642 Source source = addSource(r'''
3381 library L; 3643 library L;
3382 import 'lib1.dart'; 3644 import 'lib1.dart';
3383 import 'lib1.dart' hide A; 3645 import 'lib1.dart' hide A;
3384 A a;'''); 3646 A a;''');
3385 Source source2 = addNamedSource( 3647 Source source2 = addNamedSource(
3386 "/lib1.dart", 3648 "/lib1.dart",
3387 r''' 3649 r'''
3388 library lib1; 3650 library lib1;
3389 class A {}'''); 3651 class A {}''');
3390 await assertErrors(source, [HintCode.UNUSED_IMPORT]); 3652 await computeAnalysisResult(source);
3391 await assertNoErrors(source2); 3653 await computeAnalysisResult(source2);
3654 assertErrors(source, [HintCode.UNUSED_IMPORT]);
3655 assertNoErrors(source2);
3392 verify([source, source2]); 3656 verify([source, source2]);
3393 } 3657 }
3394 3658
3395 test_unusedImport_inComment_libraryDirective() async { 3659 test_unusedImport_inComment_libraryDirective() async {
3396 Source source = addSource(r''' 3660 Source source = addSource(r'''
3397 /// Use [Future] class. 3661 /// Use [Future] class.
3398 library L; 3662 library L;
3399 import 'dart:async'; 3663 import 'dart:async';
3400 '''); 3664 ''');
3401 await assertNoErrors(source); 3665 await computeAnalysisResult(source);
3666 assertNoErrors(source);
3402 } 3667 }
3403 3668
3404 test_unusedImport_show() async { 3669 test_unusedImport_show() async {
3405 Source source = addSource(r''' 3670 Source source = addSource(r'''
3406 library L; 3671 library L;
3407 import 'lib1.dart' show A; 3672 import 'lib1.dart' show A;
3408 import 'lib1.dart' show B; 3673 import 'lib1.dart' show B;
3409 A a;'''); 3674 A a;''');
3410 Source source2 = addNamedSource( 3675 Source source2 = addNamedSource(
3411 "/lib1.dart", 3676 "/lib1.dart",
3412 r''' 3677 r'''
3413 library lib1; 3678 library lib1;
3414 class A {} 3679 class A {}
3415 class B {}'''); 3680 class B {}''');
3416 await assertErrors(source, [HintCode.UNUSED_IMPORT]); 3681 await computeAnalysisResult(source);
3417 await assertNoErrors(source2); 3682 await computeAnalysisResult(source2);
3683 assertErrors(source, [HintCode.UNUSED_IMPORT]);
3684 assertNoErrors(source2);
3418 verify([source, source2]); 3685 verify([source, source2]);
3419 } 3686 }
3420 3687
3421 test_unusedLocalVariable_inCatch_exception() async { 3688 test_unusedLocalVariable_inCatch_exception() async {
3422 enableUnusedLocalVariable = true; 3689 enableUnusedLocalVariable = true;
3423 Source source = addSource(r''' 3690 Source source = addSource(r'''
3424 main() { 3691 main() {
3425 try { 3692 try {
3426 } on String catch (exception) { 3693 } on String catch (exception) {
3427 } 3694 }
3428 }'''); 3695 }''');
3429 await assertErrors(source, [HintCode.UNUSED_CATCH_CLAUSE]); 3696 await computeAnalysisResult(source);
3697 assertErrors(source, [HintCode.UNUSED_CATCH_CLAUSE]);
3430 verify([source]); 3698 verify([source]);
3431 } 3699 }
3432 3700
3433 test_unusedLocalVariable_inCatch_exception_hasStack() async { 3701 test_unusedLocalVariable_inCatch_exception_hasStack() async {
3434 enableUnusedLocalVariable = true; 3702 enableUnusedLocalVariable = true;
3435 Source source = addSource(r''' 3703 Source source = addSource(r'''
3436 main() { 3704 main() {
3437 try { 3705 try {
3438 } catch (exception, stack) { 3706 } catch (exception, stack) {
3439 print(stack); 3707 print(stack);
3440 } 3708 }
3441 }'''); 3709 }''');
3442 await assertNoErrors(source); 3710 await computeAnalysisResult(source);
3711 assertNoErrors(source);
3443 verify([source]); 3712 verify([source]);
3444 } 3713 }
3445 3714
3446 test_unusedLocalVariable_inCatch_exception_noOnClause() async { 3715 test_unusedLocalVariable_inCatch_exception_noOnClause() async {
3447 enableUnusedLocalVariable = true; 3716 enableUnusedLocalVariable = true;
3448 Source source = addSource(r''' 3717 Source source = addSource(r'''
3449 main() { 3718 main() {
3450 try { 3719 try {
3451 } catch (exception) { 3720 } catch (exception) {
3452 } 3721 }
3453 }'''); 3722 }''');
3454 await assertNoErrors(source); 3723 await computeAnalysisResult(source);
3724 assertNoErrors(source);
3455 verify([source]); 3725 verify([source]);
3456 } 3726 }
3457 3727
3458 test_unusedLocalVariable_inCatch_stackTrace() async { 3728 test_unusedLocalVariable_inCatch_stackTrace() async {
3459 enableUnusedLocalVariable = true; 3729 enableUnusedLocalVariable = true;
3460 Source source = addSource(r''' 3730 Source source = addSource(r'''
3461 main() { 3731 main() {
3462 try { 3732 try {
3463 } catch (exception, stackTrace) { 3733 } catch (exception, stackTrace) {
3464 } 3734 }
3465 }'''); 3735 }''');
3466 await assertErrors(source, [HintCode.UNUSED_CATCH_STACK]); 3736 await computeAnalysisResult(source);
3737 assertErrors(source, [HintCode.UNUSED_CATCH_STACK]);
3467 verify([source]); 3738 verify([source]);
3468 } 3739 }
3469 3740
3470 test_unusedLocalVariable_inCatch_stackTrace_used() async { 3741 test_unusedLocalVariable_inCatch_stackTrace_used() async {
3471 enableUnusedLocalVariable = true; 3742 enableUnusedLocalVariable = true;
3472 Source source = addSource(r''' 3743 Source source = addSource(r'''
3473 main() { 3744 main() {
3474 try { 3745 try {
3475 } catch (exception, stackTrace) { 3746 } catch (exception, stackTrace) {
3476 print('exception at $stackTrace'); 3747 print('exception at $stackTrace');
3477 } 3748 }
3478 } 3749 }
3479 print(x) {}'''); 3750 print(x) {}''');
3480 await assertErrors(source); 3751 await computeAnalysisResult(source);
3752 assertErrors(source);
3481 verify([source]); 3753 verify([source]);
3482 } 3754 }
3483 3755
3484 test_unusedLocalVariable_inFor_underscore_ignored() async { 3756 test_unusedLocalVariable_inFor_underscore_ignored() async {
3485 enableUnusedLocalVariable = true; 3757 enableUnusedLocalVariable = true;
3486 Source source = addSource(r''' 3758 Source source = addSource(r'''
3487 main() { 3759 main() {
3488 for (var _ in [1,2,3]) { 3760 for (var _ in [1,2,3]) {
3489 for (var __ in [4,5,6]) { 3761 for (var __ in [4,5,6]) {
3490 // do something 3762 // do something
3491 } 3763 }
3492 } 3764 }
3493 }'''); 3765 }''');
3494 await assertErrors(source); 3766 await computeAnalysisResult(source);
3767 assertErrors(source);
3495 verify([source]); 3768 verify([source]);
3496 } 3769 }
3497 3770
3498 test_unusedLocalVariable_inFunction() async { 3771 test_unusedLocalVariable_inFunction() async {
3499 enableUnusedLocalVariable = true; 3772 enableUnusedLocalVariable = true;
3500 Source source = addSource(r''' 3773 Source source = addSource(r'''
3501 main() { 3774 main() {
3502 var v = 1; 3775 var v = 1;
3503 v = 2; 3776 v = 2;
3504 }'''); 3777 }''');
3505 await assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]); 3778 await computeAnalysisResult(source);
3779 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]);
3506 verify([source]); 3780 verify([source]);
3507 } 3781 }
3508 3782
3509 test_unusedLocalVariable_inMethod() async { 3783 test_unusedLocalVariable_inMethod() async {
3510 enableUnusedLocalVariable = true; 3784 enableUnusedLocalVariable = true;
3511 Source source = addSource(r''' 3785 Source source = addSource(r'''
3512 class A { 3786 class A {
3513 foo() { 3787 foo() {
3514 var v = 1; 3788 var v = 1;
3515 v = 2; 3789 v = 2;
3516 } 3790 }
3517 }'''); 3791 }''');
3518 await assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]); 3792 await computeAnalysisResult(source);
3793 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]);
3519 verify([source]); 3794 verify([source]);
3520 } 3795 }
3521 3796
3522 test_unusedLocalVariable_isInvoked() async { 3797 test_unusedLocalVariable_isInvoked() async {
3523 enableUnusedLocalVariable = true; 3798 enableUnusedLocalVariable = true;
3524 Source source = addSource(r''' 3799 Source source = addSource(r'''
3525 typedef Foo(); 3800 typedef Foo();
3526 main() { 3801 main() {
3527 Foo foo; 3802 Foo foo;
3528 foo(); 3803 foo();
3529 }'''); 3804 }''');
3530 await assertErrors(source); 3805 await computeAnalysisResult(source);
3806 assertErrors(source);
3531 verify([source]); 3807 verify([source]);
3532 } 3808 }
3533 3809
3534 test_unusedLocalVariable_isRead_notUsed_compoundAssign() async { 3810 test_unusedLocalVariable_isRead_notUsed_compoundAssign() async {
3535 enableUnusedLocalVariable = true; 3811 enableUnusedLocalVariable = true;
3536 Source source = addSource(r''' 3812 Source source = addSource(r'''
3537 main() { 3813 main() {
3538 var v = 1; 3814 var v = 1;
3539 v += 2; 3815 v += 2;
3540 }'''); 3816 }''');
3541 await assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]); 3817 await computeAnalysisResult(source);
3818 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]);
3542 verify([source]); 3819 verify([source]);
3543 } 3820 }
3544 3821
3545 test_unusedLocalVariable_isRead_notUsed_postfixExpr() async { 3822 test_unusedLocalVariable_isRead_notUsed_postfixExpr() async {
3546 enableUnusedLocalVariable = true; 3823 enableUnusedLocalVariable = true;
3547 Source source = addSource(r''' 3824 Source source = addSource(r'''
3548 main() { 3825 main() {
3549 var v = 1; 3826 var v = 1;
3550 v++; 3827 v++;
3551 }'''); 3828 }''');
3552 await assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]); 3829 await computeAnalysisResult(source);
3830 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]);
3553 verify([source]); 3831 verify([source]);
3554 } 3832 }
3555 3833
3556 test_unusedLocalVariable_isRead_notUsed_prefixExpr() async { 3834 test_unusedLocalVariable_isRead_notUsed_prefixExpr() async {
3557 enableUnusedLocalVariable = true; 3835 enableUnusedLocalVariable = true;
3558 Source source = addSource(r''' 3836 Source source = addSource(r'''
3559 main() { 3837 main() {
3560 var v = 1; 3838 var v = 1;
3561 ++v; 3839 ++v;
3562 }'''); 3840 }''');
3563 await assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]); 3841 await computeAnalysisResult(source);
3842 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]);
3564 verify([source]); 3843 verify([source]);
3565 } 3844 }
3566 3845
3567 test_unusedLocalVariable_isRead_usedArgument() async { 3846 test_unusedLocalVariable_isRead_usedArgument() async {
3568 enableUnusedLocalVariable = true; 3847 enableUnusedLocalVariable = true;
3569 Source source = addSource(r''' 3848 Source source = addSource(r'''
3570 main() { 3849 main() {
3571 var v = 1; 3850 var v = 1;
3572 print(++v); 3851 print(++v);
3573 } 3852 }
3574 print(x) {}'''); 3853 print(x) {}''');
3575 await assertErrors(source); 3854 await computeAnalysisResult(source);
3855 assertErrors(source);
3576 verify([source]); 3856 verify([source]);
3577 } 3857 }
3578 3858
3579 test_unusedLocalVariable_isRead_usedInvocationTarget() async { 3859 test_unusedLocalVariable_isRead_usedInvocationTarget() async {
3580 enableUnusedLocalVariable = true; 3860 enableUnusedLocalVariable = true;
3581 Source source = addSource(r''' 3861 Source source = addSource(r'''
3582 class A { 3862 class A {
3583 foo() {} 3863 foo() {}
3584 } 3864 }
3585 main() { 3865 main() {
3586 var a = new A(); 3866 var a = new A();
3587 a.foo(); 3867 a.foo();
3588 } 3868 }
3589 '''); 3869 ''');
3590 await assertErrors(source); 3870 await computeAnalysisResult(source);
3871 assertErrors(source);
3591 verify([source]); 3872 verify([source]);
3592 } 3873 }
3593 3874
3594 test_unusedShownName() async { 3875 test_unusedShownName() async {
3595 Source source = addSource(r''' 3876 Source source = addSource(r'''
3596 library L; 3877 library L;
3597 import 'lib1.dart' show A, B; 3878 import 'lib1.dart' show A, B;
3598 A a;'''); 3879 A a;''');
3599 Source source2 = addNamedSource( 3880 Source source2 = addNamedSource(
3600 "/lib1.dart", 3881 "/lib1.dart",
3601 r''' 3882 r'''
3602 library lib1; 3883 library lib1;
3603 class A {} 3884 class A {}
3604 class B {}'''); 3885 class B {}''');
3605 await assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); 3886 await computeAnalysisResult(source);
3606 await assertNoErrors(source2); 3887 await computeAnalysisResult(source2);
3888 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
3889 assertNoErrors(source2);
3607 verify([source, source2]); 3890 verify([source, source2]);
3608 } 3891 }
3609 3892
3610 test_unusedShownName_as() async { 3893 test_unusedShownName_as() async {
3611 Source source = addSource(r''' 3894 Source source = addSource(r'''
3612 library L; 3895 library L;
3613 import 'lib1.dart' as p show A, B; 3896 import 'lib1.dart' as p show A, B;
3614 p.A a;'''); 3897 p.A a;''');
3615 Source source2 = addNamedSource( 3898 Source source2 = addNamedSource(
3616 "/lib1.dart", 3899 "/lib1.dart",
3617 r''' 3900 r'''
3618 library lib1; 3901 library lib1;
3619 class A {} 3902 class A {}
3620 class B {}'''); 3903 class B {}''');
3621 await assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); 3904 await computeAnalysisResult(source);
3622 await assertNoErrors(source2); 3905 await computeAnalysisResult(source2);
3906 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
3907 assertNoErrors(source2);
3623 verify([source, source2]); 3908 verify([source, source2]);
3624 } 3909 }
3625 3910
3626 test_unusedShownName_duplicates() async { 3911 test_unusedShownName_duplicates() async {
3627 Source source = addSource(r''' 3912 Source source = addSource(r'''
3628 library L; 3913 library L;
3629 import 'lib1.dart' show A, B; 3914 import 'lib1.dart' show A, B;
3630 import 'lib1.dart' show C, D; 3915 import 'lib1.dart' show C, D;
3631 A a; 3916 A a;
3632 C c;'''); 3917 C c;''');
3633 Source source2 = addNamedSource( 3918 Source source2 = addNamedSource(
3634 "/lib1.dart", 3919 "/lib1.dart",
3635 r''' 3920 r'''
3636 library lib1; 3921 library lib1;
3637 class A {} 3922 class A {}
3638 class B {} 3923 class B {}
3639 class C {} 3924 class C {}
3640 class D {}'''); 3925 class D {}''');
3641 await assertErrors( 3926 await computeAnalysisResult(source);
3927 await computeAnalysisResult(source2);
3928 assertErrors(
3642 source, [HintCode.UNUSED_SHOWN_NAME, HintCode.UNUSED_SHOWN_NAME]); 3929 source, [HintCode.UNUSED_SHOWN_NAME, HintCode.UNUSED_SHOWN_NAME]);
3643 await assertNoErrors(source2); 3930 assertNoErrors(source2);
3644 verify([source, source2]); 3931 verify([source, source2]);
3645 } 3932 }
3646 3933
3647 test_unusedShownName_topLevelVariable() async { 3934 test_unusedShownName_topLevelVariable() async {
3648 Source source = addSource(r''' 3935 Source source = addSource(r'''
3649 library L; 3936 library L;
3650 import 'lib1.dart' show var1, var2; 3937 import 'lib1.dart' show var1, var2;
3651 import 'lib1.dart' show var3, var4; 3938 import 'lib1.dart' show var3, var4;
3652 int a = var1; 3939 int a = var1;
3653 int b = var2; 3940 int b = var2;
3654 int c = var3;'''); 3941 int c = var3;''');
3655 Source source2 = addNamedSource( 3942 Source source2 = addNamedSource(
3656 "/lib1.dart", 3943 "/lib1.dart",
3657 r''' 3944 r'''
3658 library lib1; 3945 library lib1;
3659 const int var1 = 1; 3946 const int var1 = 1;
3660 const int var2 = 2; 3947 const int var2 = 2;
3661 const int var3 = 3; 3948 const int var3 = 3;
3662 const int var4 = 4;'''); 3949 const int var4 = 4;''');
3663 await assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); 3950 await computeAnalysisResult(source);
3664 await assertNoErrors(source2); 3951 await computeAnalysisResult(source2);
3952 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
3953 assertNoErrors(source2);
3665 verify([source, source2]); 3954 verify([source, source2]);
3666 } 3955 }
3667 3956
3668 test_useOfVoidResult_assignmentExpression_function() async { 3957 test_useOfVoidResult_assignmentExpression_function() async {
3669 Source source = addSource(r''' 3958 Source source = addSource(r'''
3670 void f() {} 3959 void f() {}
3671 class A { 3960 class A {
3672 n() { 3961 n() {
3673 var a; 3962 var a;
3674 a = f(); 3963 a = f();
3675 } 3964 }
3676 }'''); 3965 }''');
3677 await assertErrors(source, [HintCode.USE_OF_VOID_RESULT]); 3966 await computeAnalysisResult(source);
3967 assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
3678 verify([source]); 3968 verify([source]);
3679 } 3969 }
3680 3970
3681 test_useOfVoidResult_assignmentExpression_method() async { 3971 test_useOfVoidResult_assignmentExpression_method() async {
3682 Source source = addSource(r''' 3972 Source source = addSource(r'''
3683 class A { 3973 class A {
3684 void m() {} 3974 void m() {}
3685 n() { 3975 n() {
3686 var a; 3976 var a;
3687 a = m(); 3977 a = m();
3688 } 3978 }
3689 }'''); 3979 }''');
3690 await assertErrors(source, [HintCode.USE_OF_VOID_RESULT]); 3980 await computeAnalysisResult(source);
3981 assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
3691 verify([source]); 3982 verify([source]);
3692 } 3983 }
3693 3984
3694 test_useOfVoidResult_inForLoop() async { 3985 test_useOfVoidResult_inForLoop() async {
3695 Source source = addSource(r''' 3986 Source source = addSource(r'''
3696 class A { 3987 class A {
3697 void m() {} 3988 void m() {}
3698 n() { 3989 n() {
3699 for(var a = m();;) {} 3990 for(var a = m();;) {}
3700 } 3991 }
3701 }'''); 3992 }''');
3702 await assertErrors(source, [HintCode.USE_OF_VOID_RESULT]); 3993 await computeAnalysisResult(source);
3994 assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
3703 verify([source]); 3995 verify([source]);
3704 } 3996 }
3705 3997
3706 test_useOfVoidResult_variableDeclaration_function() async { 3998 test_useOfVoidResult_variableDeclaration_function() async {
3707 Source source = addSource(r''' 3999 Source source = addSource(r'''
3708 void f() {} 4000 void f() {}
3709 class A { 4001 class A {
3710 n() { 4002 n() {
3711 var a = f(); 4003 var a = f();
3712 } 4004 }
3713 }'''); 4005 }''');
3714 await assertErrors(source, [HintCode.USE_OF_VOID_RESULT]); 4006 await computeAnalysisResult(source);
4007 assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
3715 verify([source]); 4008 verify([source]);
3716 } 4009 }
3717 4010
3718 test_useOfVoidResult_variableDeclaration_method() async { 4011 test_useOfVoidResult_variableDeclaration_method() async {
3719 Source source = addSource(r''' 4012 Source source = addSource(r'''
3720 class A { 4013 class A {
3721 void m() {} 4014 void m() {}
3722 n() { 4015 n() {
3723 var a = m(); 4016 var a = m();
3724 } 4017 }
3725 }'''); 4018 }''');
3726 await assertErrors(source, [HintCode.USE_OF_VOID_RESULT]); 4019 await computeAnalysisResult(source);
4020 assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
3727 verify([source]); 4021 verify([source]);
3728 } 4022 }
3729 4023
3730 test_useOfVoidResult_variableDeclaration_method2() async { 4024 test_useOfVoidResult_variableDeclaration_method2() async {
3731 Source source = addSource(r''' 4025 Source source = addSource(r'''
3732 class A { 4026 class A {
3733 void m() {} 4027 void m() {}
3734 n() { 4028 n() {
3735 var a = m(), b = m(); 4029 var a = m(), b = m();
3736 } 4030 }
3737 }'''); 4031 }''');
3738 await assertErrors( 4032 await computeAnalysisResult(source);
4033 assertErrors(
3739 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]); 4034 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]);
3740 verify([source]); 4035 verify([source]);
3741 } 4036 }
3742 } 4037 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/error_suppression_test.dart ('k') | pkg/analyzer/test/generated/non_error_resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698