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

Side by Side Diff: pkg/analyzer/test/src/task/strong_mode_test.dart

Issue 1311433005: Integrate recent parameter override logic (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 test.src.task.strong_mode_test; 5 library test.src.task.strong_mode_test;
6 6
7 import 'package:analyzer/src/generated/ast.dart'; 7 import 'package:analyzer/src/generated/ast.dart';
8 import 'package:analyzer/src/generated/element.dart'; 8 import 'package:analyzer/src/generated/element.dart';
9 import 'package:analyzer/src/generated/source.dart'; 9 import 'package:analyzer/src/generated/source.dart';
10 import 'package:analyzer/src/task/strong_mode.dart'; 10 import 'package:analyzer/src/task/strong_mode.dart';
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 void test_inferCompilationUnit_invalid_inheritanceCycle() { 438 void test_inferCompilationUnit_invalid_inheritanceCycle() {
439 InstanceMemberInferrer inferrer = createInferrer; 439 InstanceMemberInferrer inferrer = createInferrer;
440 CompilationUnitElement unit = resolve(''' 440 CompilationUnitElement unit = resolve('''
441 class A extends C {} 441 class A extends C {}
442 class B extends A {} 442 class B extends A {}
443 class C extends B {} 443 class C extends B {}
444 '''); 444 ''');
445 inferrer.inferCompilationUnit(unit); 445 inferrer.inferCompilationUnit(unit);
446 } 446 }
447 447
448 void test_inferCompilationUnit_method_multiple_different() { 448 void test_inferCompilationUnit_method_parameter_multiple_different() {
449 InstanceMemberInferrer inferrer = createInferrer; 449 InstanceMemberInferrer inferrer = createInferrer;
450 String methodName = 'm'; 450 String methodName = 'm';
451 CompilationUnitElement unit = resolve(''' 451 CompilationUnitElement unit = resolve('''
452 class A {
453 $methodName(int p) => 0;
454 }
455 class B {
456 $methodName(double p) => 0;
457 }
458 class C implements A, B {
459 $methodName(p) => 0;
460 }
461 ''');
462 ClassElement classC = unit.getType('C');
463 MethodElement methodC = classC.getMethod(methodName);
464 ParameterElement parameterC = methodC.parameters[0];
465 expect(parameterC.type.isDynamic, isTrue);
466
467 inferrer.inferCompilationUnit(unit);
468
469 expect(parameterC.type.isDynamic, isTrue);
470 }
471
472 void test_inferCompilationUnit_method_parameter_multiple_named_different() {
473 InstanceMemberInferrer inferrer = createInferrer;
474 String methodName = 'm';
475 CompilationUnitElement unit = resolve('''
476 class A {
477 $methodName({int p}) => 0;
478 }
479 class B {
480 $methodName({int q}) => 0;
481 }
482 class C implements A, B {
483 $methodName({p}) => 0;
484 }
485 ''');
486 ClassElement classC = unit.getType('C');
487 MethodElement methodC = classC.getMethod(methodName);
488 ParameterElement parameterC = methodC.parameters[0];
489 expect(parameterC.type.isDynamic, isTrue);
490
491 inferrer.inferCompilationUnit(unit);
492
493 expect(parameterC.type.isDynamic, isTrue);
494 }
495
496 void test_inferCompilationUnit_method_parameter_multiple_named_same() {
497 InstanceMemberInferrer inferrer = createInferrer;
498 String methodName = 'm';
499 CompilationUnitElement unit = resolve('''
500 class A {
501 $methodName({int p}) => 0;
502 }
503 class B {
504 $methodName({int p}) => 0;
505 }
506 class C implements A, B {
507 $methodName({p}) => 0;
508 }
509 ''');
510 ClassElement classA = unit.getType('A');
511 MethodElement methodA = classA.getMethod(methodName);
512 ParameterElement parameterA = methodA.parameters[0];
513 DartType expectedType = parameterA.type;
514 ClassElement classC = unit.getType('C');
515 MethodElement methodC = classC.getMethod(methodName);
516 ParameterElement parameterC = methodC.parameters[0];
517 expect(parameterC.type.isDynamic, isTrue);
518
519 inferrer.inferCompilationUnit(unit);
520
521 expect(parameterC.type, expectedType);
522 }
523
524 void test_inferCompilationUnit_method_parameter_multiple_namedAndRequired() {
525 InstanceMemberInferrer inferrer = createInferrer;
526 String methodName = 'm';
527 CompilationUnitElement unit = resolve('''
528 class A {
529 $methodName({int p}) => 0;
530 }
531 class B {
532 $methodName(int p) => 0;
533 }
534 class C implements A, B {
535 $methodName(p) => 0;
536 }
537 ''');
538 ClassElement classC = unit.getType('C');
539 MethodElement methodC = classC.getMethod(methodName);
540 ParameterElement parameterC = methodC.parameters[0];
541 expect(parameterC.type.isDynamic, isTrue);
542
543 inferrer.inferCompilationUnit(unit);
544
545 expect(parameterC.type.isDynamic, isTrue);
546 }
547
548 void test_inferCompilationUnit_method_parameter_multiple_optionalAndRequired() {
549 InstanceMemberInferrer inferrer = createInferrer;
550 String methodName = 'm';
551 CompilationUnitElement unit = resolve('''
552 class A {
553 $methodName(int p) => 0;
554 }
555 class B {
556 $methodName([int p]) => 0;
557 }
558 class C implements A, B {
559 $methodName(p) => 0;
560 }
561 ''');
562 ClassElement classA = unit.getType('A');
563 MethodElement methodA = classA.getMethod(methodName);
564 ParameterElement parameterA = methodA.parameters[0];
565 DartType expectedType = parameterA.type;
566 ClassElement classC = unit.getType('C');
567 MethodElement methodC = classC.getMethod(methodName);
568 ParameterElement parameterC = methodC.parameters[0];
569 expect(parameterC.type.isDynamic, isTrue);
570
571 inferrer.inferCompilationUnit(unit);
572
573 expect(parameterC.type, expectedType);
574 }
575
576 void test_inferCompilationUnit_method_return_multiple_different() {
577 InstanceMemberInferrer inferrer = createInferrer;
578 String methodName = 'm';
579 CompilationUnitElement unit = resolve('''
452 class A { 580 class A {
453 int $methodName() => 0; 581 int $methodName() => 0;
454 } 582 }
455 class B { 583 class B {
456 double $methodName() => 0.0; 584 double $methodName() => 0.0;
457 } 585 }
458 class C implements A, B { 586 class C implements A, B {
459 $methodName() => 0; 587 $methodName() => 0;
460 } 588 }
461 '''); 589 ''');
462 ClassElement classC = unit.getType('C'); 590 ClassElement classC = unit.getType('C');
463 MethodElement methodC = classC.getMethod(methodName); 591 MethodElement methodC = classC.getMethod(methodName);
464 expect(methodC.returnType.isDynamic, isTrue); 592 expect(methodC.returnType.isDynamic, isTrue);
465 593
466 inferrer.inferCompilationUnit(unit); 594 inferrer.inferCompilationUnit(unit);
467 595
468 expect(methodC.returnType.isDynamic, isTrue); 596 expect(methodC.returnType.isDynamic, isTrue);
469 } 597 }
470 598
471 void test_inferCompilationUnit_method_multiple_dynamic() { 599 void test_inferCompilationUnit_method_return_multiple_dynamic() {
472 InstanceMemberInferrer inferrer = createInferrer; 600 InstanceMemberInferrer inferrer = createInferrer;
473 String methodName = 'm'; 601 String methodName = 'm';
474 CompilationUnitElement unit = resolve(''' 602 CompilationUnitElement unit = resolve('''
475 class A { 603 class A {
476 int $methodName() => 0; 604 int $methodName() => 0;
477 } 605 }
478 class B { 606 class B {
479 $methodName() => 0; 607 $methodName() => 0;
480 } 608 }
481 class C implements A, B { 609 class C implements A, B {
482 $methodName() => 0; 610 $methodName() => 0;
483 } 611 }
484 '''); 612 ''');
485 ClassElement classC = unit.getType('C'); 613 ClassElement classC = unit.getType('C');
486 MethodElement methodC = classC.getMethod(methodName); 614 MethodElement methodC = classC.getMethod(methodName);
487 expect(methodC.returnType.isDynamic, isTrue); 615 expect(methodC.returnType.isDynamic, isTrue);
488 616
489 inferrer.inferCompilationUnit(unit); 617 inferrer.inferCompilationUnit(unit);
490 618
491 expect(methodC.returnType.isDynamic, isTrue); 619 expect(methodC.returnType.isDynamic, isTrue);
492 } 620 }
493 621
494 void test_inferCompilationUnit_method_multiple_same_nonVoid() { 622 void test_inferCompilationUnit_method_return_multiple_same_nonVoid() {
495 InstanceMemberInferrer inferrer = createInferrer; 623 InstanceMemberInferrer inferrer = createInferrer;
496 String methodName = 'm'; 624 String methodName = 'm';
497 CompilationUnitElement unit = resolve(''' 625 CompilationUnitElement unit = resolve('''
498 class A { 626 class A {
499 int $methodName() => 0; 627 int $methodName() => 0;
500 } 628 }
501 class B { 629 class B {
502 int $methodName() => 0.0; 630 int $methodName() => 0.0;
503 } 631 }
504 class C implements A, B { 632 class C implements A, B {
505 $methodName() => 0; 633 $methodName() => 0;
506 } 634 }
507 '''); 635 ''');
508 ClassElement classA = unit.getType('A'); 636 ClassElement classA = unit.getType('A');
509 MethodElement methodA = classA.getMethod(methodName); 637 MethodElement methodA = classA.getMethod(methodName);
510 DartType expectedType = methodA.returnType; 638 DartType expectedType = methodA.returnType;
511 ClassElement classC = unit.getType('C'); 639 ClassElement classC = unit.getType('C');
512 MethodElement methodC = classC.getMethod(methodName); 640 MethodElement methodC = classC.getMethod(methodName);
513 expect(methodC.returnType.isDynamic, isTrue); 641 expect(methodC.returnType.isDynamic, isTrue);
514 642
515 inferrer.inferCompilationUnit(unit); 643 inferrer.inferCompilationUnit(unit);
516 644
517 expect(methodC.returnType, expectedType); 645 expect(methodC.returnType, expectedType);
518 } 646 }
519 647
520 void test_inferCompilationUnit_method_multiple_same_void() { 648 void test_inferCompilationUnit_method_return_multiple_same_void() {
521 InstanceMemberInferrer inferrer = createInferrer; 649 InstanceMemberInferrer inferrer = createInferrer;
522 String methodName = 'm'; 650 String methodName = 'm';
523 CompilationUnitElement unit = resolve(''' 651 CompilationUnitElement unit = resolve('''
524 class A { 652 class A {
525 void $methodName() {}; 653 void $methodName() {};
526 } 654 }
527 class B { 655 class B {
528 void $methodName() {}; 656 void $methodName() {};
529 } 657 }
530 class C implements A, B { 658 class C implements A, B {
531 $methodName() {}; 659 $methodName() {};
532 } 660 }
533 '''); 661 ''');
534 ClassElement classA = unit.getType('A'); 662 ClassElement classA = unit.getType('A');
535 MethodElement methodA = classA.getMethod(methodName); 663 MethodElement methodA = classA.getMethod(methodName);
536 DartType expectedType = methodA.returnType; 664 DartType expectedType = methodA.returnType;
537 ClassElement classC = unit.getType('C'); 665 ClassElement classC = unit.getType('C');
538 MethodElement methodC = classC.getMethod(methodName); 666 MethodElement methodC = classC.getMethod(methodName);
539 expect(methodC.returnType.isDynamic, isTrue); 667 expect(methodC.returnType.isDynamic, isTrue);
540 668
541 inferrer.inferCompilationUnit(unit); 669 inferrer.inferCompilationUnit(unit);
542 670
543 expect(methodC.returnType, expectedType); 671 expect(methodC.returnType, expectedType);
544 } 672 }
545 673
546 void test_inferCompilationUnit_method_multiple_void() { 674 void test_inferCompilationUnit_method_return_multiple_void() {
547 InstanceMemberInferrer inferrer = createInferrer; 675 InstanceMemberInferrer inferrer = createInferrer;
548 String methodName = 'm'; 676 String methodName = 'm';
549 CompilationUnitElement unit = resolve(''' 677 CompilationUnitElement unit = resolve('''
550 class A { 678 class A {
551 int $methodName() => 0; 679 int $methodName() => 0;
552 } 680 }
553 class B { 681 class B {
554 void $methodName() => 0; 682 void $methodName() => 0;
555 } 683 }
556 class C implements A, B { 684 class C implements A, B {
557 $methodName() => 0; 685 $methodName() => 0;
558 } 686 }
559 '''); 687 ''');
560 ClassElement classC = unit.getType('C'); 688 ClassElement classC = unit.getType('C');
561 MethodElement methodC = classC.getMethod(methodName); 689 MethodElement methodC = classC.getMethod(methodName);
562 expect(methodC.returnType.isDynamic, isTrue); 690 expect(methodC.returnType.isDynamic, isTrue);
563 691
564 inferrer.inferCompilationUnit(unit); 692 inferrer.inferCompilationUnit(unit);
565 693
566 expect(methodC.returnType.isDynamic, isTrue); 694 expect(methodC.returnType.isDynamic, isTrue);
567 } 695 }
568 696
569 void test_inferCompilationUnit_method_single() { 697 void test_inferCompilationUnit_method_return_single() {
570 InstanceMemberInferrer inferrer = createInferrer; 698 InstanceMemberInferrer inferrer = createInferrer;
571 String methodName = 'm'; 699 String methodName = 'm';
572 CompilationUnitElement unit = resolve(''' 700 CompilationUnitElement unit = resolve('''
573 class A { 701 class A {
574 int $methodName() => 0; 702 int $methodName() => 0;
575 } 703 }
576 class B extends A { 704 class B extends A {
577 $methodName() => 0; 705 $methodName() => 0;
578 } 706 }
579 '''); 707 ''');
580 ClassElement classA = unit.getType('A'); 708 ClassElement classA = unit.getType('A');
581 MethodElement methodA = classA.getMethod(methodName); 709 MethodElement methodA = classA.getMethod(methodName);
582 ClassElement classB = unit.getType('B'); 710 ClassElement classB = unit.getType('B');
583 MethodElement methodB = classB.getMethod(methodName); 711 MethodElement methodB = classB.getMethod(methodName);
584 expect(methodB.returnType.isDynamic, isTrue); 712 expect(methodB.returnType.isDynamic, isTrue);
585 713
586 inferrer.inferCompilationUnit(unit); 714 inferrer.inferCompilationUnit(unit);
587 715
588 expect(methodB.returnType, methodA.returnType); 716 expect(methodB.returnType, methodA.returnType);
589 } 717 }
590 } 718 }
OLDNEW
« pkg/analyzer/lib/src/task/strong_mode.dart ('K') | « pkg/analyzer/lib/src/task/strong_mode.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698