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

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

Issue 1066083002: Report unused function type aliases. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library 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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698