| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library engine.resolver_test; | 5 library engine.resolver_test; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/src/generated/ast.dart'; | 9 import 'package:analyzer/src/generated/ast.dart'; |
| 10 import 'package:analyzer/src/generated/element.dart'; | 10 import 'package:analyzer/src/generated/element.dart'; |
| (...skipping 3243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3254 void test_unnecessaryTypeCheck_type_not_object() { | 3254 void test_unnecessaryTypeCheck_type_not_object() { |
| 3255 Source source = addSource(r''' | 3255 Source source = addSource(r''' |
| 3256 m(i) { | 3256 m(i) { |
| 3257 bool b = i is! Object; | 3257 bool b = i is! Object; |
| 3258 }'''); | 3258 }'''); |
| 3259 resolve(source); | 3259 resolve(source); |
| 3260 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); | 3260 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); |
| 3261 verify([source]); | 3261 verify([source]); |
| 3262 } | 3262 } |
| 3263 | 3263 |
| 3264 void test_unusedElement_class_inClassMember() { | |
| 3265 enableUnusedElement = true; | |
| 3266 Source source = addSource(r''' | |
| 3267 class _A { | |
| 3268 static staticMethod() { | |
| 3269 new _A(); | |
| 3270 } | |
| 3271 instanceMethod() { | |
| 3272 new _A(); | |
| 3273 } | |
| 3274 } | |
| 3275 '''); | |
| 3276 resolve(source); | |
| 3277 assertErrors(source, [HintCode.UNUSED_ELEMENT]); | |
| 3278 verify([source]); | |
| 3279 } | |
| 3280 | |
| 3281 void test_unusedElement_class_inConstructorName() { | |
| 3282 enableUnusedElement = true; | |
| 3283 Source source = addSource(r''' | |
| 3284 class _A { | |
| 3285 _A() {} | |
| 3286 _A.named() {} | |
| 3287 } | |
| 3288 '''); | |
| 3289 resolve(source); | |
| 3290 assertErrors(source, [HintCode.UNUSED_ELEMENT]); | |
| 3291 verify([source]); | |
| 3292 } | |
| 3293 | |
| 3294 void test_unusedElement_class_isExpression() { | |
| 3295 enableUnusedElement = true; | |
| 3296 Source source = addSource(r''' | |
| 3297 class _A {} | |
| 3298 main(p) { | |
| 3299 if (p is _A) { | |
| 3300 } | |
| 3301 } | |
| 3302 '''); | |
| 3303 resolve(source); | |
| 3304 assertErrors(source, [HintCode.UNUSED_ELEMENT]); | |
| 3305 verify([source]); | |
| 3306 } | |
| 3307 | |
| 3308 void test_unusedElement_class_isUsed_extends() { | 3264 void test_unusedElement_class_isUsed_extends() { |
| 3309 enableUnusedElement = true; | 3265 enableUnusedElement = true; |
| 3310 Source source = addSource(r''' | 3266 Source source = addSource(r''' |
| 3311 class _A {} | 3267 class _A {} |
| 3312 class B extends _A {} | 3268 class B extends _A {} |
| 3313 '''); | 3269 '''); |
| 3314 resolve(source); | 3270 resolve(source); |
| 3315 assertNoErrors(source); | 3271 assertNoErrors(source); |
| 3316 verify([source]); | 3272 verify([source]); |
| 3317 } | 3273 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3360 static m() {} | 3316 static m() {} |
| 3361 } | 3317 } |
| 3362 main() { | 3318 main() { |
| 3363 _A.m(); | 3319 _A.m(); |
| 3364 }'''); | 3320 }'''); |
| 3365 resolve(source); | 3321 resolve(source); |
| 3366 assertNoErrors(source); | 3322 assertNoErrors(source); |
| 3367 verify([source]); | 3323 verify([source]); |
| 3368 } | 3324 } |
| 3369 | 3325 |
| 3370 void test_unusedElement_class_noReference() { | 3326 void test_unusedElement_class_notUsed_inClassMember() { |
| 3327 enableUnusedElement = true; |
| 3328 Source source = addSource(r''' |
| 3329 class _A { |
| 3330 static staticMethod() { |
| 3331 new _A(); |
| 3332 } |
| 3333 instanceMethod() { |
| 3334 new _A(); |
| 3335 } |
| 3336 } |
| 3337 '''); |
| 3338 resolve(source); |
| 3339 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3340 verify([source]); |
| 3341 } |
| 3342 |
| 3343 void test_unusedElement_class_notUsed_inConstructorName() { |
| 3344 enableUnusedElement = true; |
| 3345 Source source = addSource(r''' |
| 3346 class _A { |
| 3347 _A() {} |
| 3348 _A.named() {} |
| 3349 } |
| 3350 '''); |
| 3351 resolve(source); |
| 3352 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3353 verify([source]); |
| 3354 } |
| 3355 |
| 3356 void test_unusedElement_class_notUsed_isExpression() { |
| 3371 enableUnusedElement = true; | 3357 enableUnusedElement = true; |
| 3372 Source source = addSource(r''' | 3358 Source source = addSource(r''' |
| 3373 class _A {} | 3359 class _A {} |
| 3360 main(p) { |
| 3361 if (p is _A) { |
| 3362 } |
| 3363 } |
| 3364 '''); |
| 3365 resolve(source); |
| 3366 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3367 verify([source]); |
| 3368 } |
| 3369 |
| 3370 void test_unusedElement_class_notUsed_noReference() { |
| 3371 enableUnusedElement = true; |
| 3372 Source source = addSource(r''' |
| 3373 class _A {} |
| 3374 main() { | 3374 main() { |
| 3375 }'''); | 3375 }'''); |
| 3376 resolve(source); | 3376 resolve(source); |
| 3377 assertErrors(source, [HintCode.UNUSED_ELEMENT]); | 3377 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3378 verify([source]); | 3378 verify([source]); |
| 3379 } | 3379 } |
| 3380 | 3380 |
| 3381 void test_unusedElement_class_variableDeclaration() { | 3381 void test_unusedElement_class_notUsed_variableDeclaration() { |
| 3382 enableUnusedElement = true; | 3382 enableUnusedElement = true; |
| 3383 Source source = addSource(r''' | 3383 Source source = addSource(r''' |
| 3384 class _A {} | 3384 class _A {} |
| 3385 main() { | 3385 main() { |
| 3386 _A v; | 3386 _A v; |
| 3387 print(v); | 3387 print(v); |
| 3388 } | 3388 } |
| 3389 print(x) {} | 3389 print(x) {} |
| 3390 '''); | 3390 '''); |
| 3391 resolve(source); | 3391 resolve(source); |
| 3392 assertErrors(source, [HintCode.UNUSED_ELEMENT]); | 3392 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3393 verify([source]); | 3393 verify([source]); |
| 3394 } | 3394 } |
| 3395 | 3395 |
| 3396 void test_unusedElement_enum_isUsed_fieldReference() { |
| 3397 enableUnusedElement = true; |
| 3398 Source source = addSource(r''' |
| 3399 enum _MyEnum {A, B, C} |
| 3400 main() { |
| 3401 print(_MyEnum.B); |
| 3402 }'''); |
| 3403 resolve(source); |
| 3404 assertNoErrors(source); |
| 3405 verify([source]); |
| 3406 } |
| 3407 |
| 3408 void test_unusedElement_enum_notUsed_noReference() { |
| 3409 enableUnusedElement = true; |
| 3410 Source source = addSource(r''' |
| 3411 enum _MyEnum {A, B, C} |
| 3412 main() { |
| 3413 }'''); |
| 3414 resolve(source); |
| 3415 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3416 verify([source]); |
| 3417 } |
| 3418 |
| 3396 void test_unusedElement_functionLocal_isUsed_closure() { | 3419 void test_unusedElement_functionLocal_isUsed_closure() { |
| 3397 enableUnusedElement = true; | 3420 enableUnusedElement = true; |
| 3398 Source source = addSource(r''' | 3421 Source source = addSource(r''' |
| 3399 main() { | 3422 main() { |
| 3400 print(() {}); | 3423 print(() {}); |
| 3401 } | 3424 } |
| 3402 print(x) {} | 3425 print(x) {} |
| 3403 '''); | 3426 '''); |
| 3404 resolve(source); | 3427 resolve(source); |
| 3405 assertNoErrors(source); | 3428 assertNoErrors(source); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3499 _f(int p) { | 3522 _f(int p) { |
| 3500 _f(p - 1); | 3523 _f(p - 1); |
| 3501 } | 3524 } |
| 3502 main() { | 3525 main() { |
| 3503 }'''); | 3526 }'''); |
| 3504 resolve(source); | 3527 resolve(source); |
| 3505 assertErrors(source, [HintCode.UNUSED_ELEMENT]); | 3528 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3506 verify([source]); | 3529 verify([source]); |
| 3507 } | 3530 } |
| 3508 | 3531 |
| 3532 void test_unusedElement_functionTypeAlias_isUsed_reference() { |
| 3533 enableUnusedElement = true; |
| 3534 Source source = addSource(r''' |
| 3535 typedef _F(a, b); |
| 3536 main(_F f) { |
| 3537 }'''); |
| 3538 resolve(source); |
| 3539 assertNoErrors(source); |
| 3540 verify([source]); |
| 3541 } |
| 3542 |
| 3543 void test_unusedElement_functionTypeAlias_isUsed_variableDeclaration() { |
| 3544 enableUnusedElement = true; |
| 3545 Source source = addSource(r''' |
| 3546 typedef _F(a, b); |
| 3547 class A { |
| 3548 _F f; |
| 3549 }'''); |
| 3550 resolve(source); |
| 3551 assertNoErrors(source); |
| 3552 verify([source]); |
| 3553 } |
| 3554 |
| 3555 void test_unusedElement_functionTypeAlias_notUsed_noReference() { |
| 3556 enableUnusedElement = true; |
| 3557 Source source = addSource(r''' |
| 3558 typedef _F(a, b); |
| 3559 main() { |
| 3560 }'''); |
| 3561 resolve(source); |
| 3562 assertErrors(source, [HintCode.UNUSED_ELEMENT]); |
| 3563 verify([source]); |
| 3564 } |
| 3565 |
| 3509 void test_unusedElement_getter_isUsed_invocation_implicitThis() { | 3566 void test_unusedElement_getter_isUsed_invocation_implicitThis() { |
| 3510 enableUnusedElement = true; | 3567 enableUnusedElement = true; |
| 3511 Source source = addSource(r''' | 3568 Source source = addSource(r''' |
| 3512 class A { | 3569 class A { |
| 3513 get _g => null; | 3570 get _g => null; |
| 3514 useGetter() { | 3571 useGetter() { |
| 3515 var v = _g; | 3572 var v = _g; |
| 3516 } | 3573 } |
| 3517 }'''); | 3574 }'''); |
| 3518 resolve(source); | 3575 resolve(source); |
| (...skipping 10128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13647 // check propagated type | 13704 // check propagated type |
| 13648 FunctionType propagatedType = node.propagatedType as FunctionType; | 13705 FunctionType propagatedType = node.propagatedType as FunctionType; |
| 13649 expect(propagatedType.returnType, test.typeProvider.stringType); | 13706 expect(propagatedType.returnType, test.typeProvider.stringType); |
| 13650 } on AnalysisException catch (e, stackTrace) { | 13707 } on AnalysisException catch (e, stackTrace) { |
| 13651 thrownException[0] = new CaughtException(e, stackTrace); | 13708 thrownException[0] = new CaughtException(e, stackTrace); |
| 13652 } | 13709 } |
| 13653 } | 13710 } |
| 13654 return null; | 13711 return null; |
| 13655 } | 13712 } |
| 13656 } | 13713 } |
| OLD | NEW |