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

Side by Side Diff: pkg/analyzer/test/src/summary/top_level_inference_test.dart

Issue 2975253002: Format analyzer, analysis_server, analyzer_plugin, front_end and kernel with the latest dartfmt. (Closed)
Patch Set: Created 3 years, 5 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:analyzer/dart/element/element.dart'; 7 import 'package:analyzer/dart/element/element.dart';
8 import 'package:analyzer/src/dart/analysis/driver.dart'; 8 import 'package:analyzer/src/dart/analysis/driver.dart';
9 import 'package:test_reflective_loader/test_reflective_loader.dart'; 9 import 'package:test_reflective_loader/test_reflective_loader.dart';
10 10
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 var library = await _encodeDecodeLibrary(r''' 381 var library = await _encodeDecodeLibrary(r'''
382 var vPlusIntInt = 1 + 2; 382 var vPlusIntInt = 1 + 2;
383 var vPlusIntDouble = 1 + 2.0; 383 var vPlusIntDouble = 1 + 2.0;
384 var vPlusDoubleInt = 1.0 + 2; 384 var vPlusDoubleInt = 1.0 + 2;
385 var vPlusDoubleDouble = 1.0 + 2.0; 385 var vPlusDoubleDouble = 1.0 + 2.0;
386 var vMinusIntInt = 1 - 2; 386 var vMinusIntInt = 1 - 2;
387 var vMinusIntDouble = 1 - 2.0; 387 var vMinusIntDouble = 1 - 2.0;
388 var vMinusDoubleInt = 1.0 - 2; 388 var vMinusDoubleInt = 1.0 - 2;
389 var vMinusDoubleDouble = 1.0 - 2.0; 389 var vMinusDoubleDouble = 1.0 - 2.0;
390 '''); 390 ''');
391 checkElementText( 391 checkElementText(library, r'''
392 library,
393 r'''
394 int vPlusIntInt; 392 int vPlusIntInt;
395 double vPlusIntDouble; 393 double vPlusIntDouble;
396 double vPlusDoubleInt; 394 double vPlusDoubleInt;
397 double vPlusDoubleDouble; 395 double vPlusDoubleDouble;
398 int vMinusIntInt; 396 int vMinusIntInt;
399 double vMinusIntDouble; 397 double vMinusIntDouble;
400 double vMinusDoubleInt; 398 double vMinusDoubleInt;
401 double vMinusDoubleDouble; 399 double vMinusDoubleDouble;
402 '''); 400 ''');
403 } 401 }
404 402
405 test_initializer_as() async { 403 test_initializer_as() async {
406 var library = await _encodeDecodeLibrary(r''' 404 var library = await _encodeDecodeLibrary(r'''
407 var V = 1 as num; 405 var V = 1 as num;
408 '''); 406 ''');
409 checkElementText( 407 checkElementText(library, r'''
410 library,
411 r'''
412 num V; 408 num V;
413 '''); 409 ''');
414 } 410 }
415 411
416 test_initializer_await() async { 412 test_initializer_await() async {
417 var library = await _encodeDecodeLibrary(r''' 413 var library = await _encodeDecodeLibrary(r'''
418 import 'dart:async'; 414 import 'dart:async';
419 int fValue() => 42; 415 int fValue() => 42;
420 Future<int> fFuture() async => 42; 416 Future<int> fFuture() async => 42;
421 var uValue = () async => await fValue(); 417 var uValue = () async => await fValue();
422 var uFuture = () async => await fFuture(); 418 var uFuture = () async => await fFuture();
423 '''); 419 ''');
424 checkElementText( 420 checkElementText(library, r'''
425 library,
426 r'''
427 import 'dart:async'; 421 import 'dart:async';
428 () → Future<int> uValue; 422 () → Future<int> uValue;
429 () → Future<int> uFuture; 423 () → Future<int> uFuture;
430 int fValue() {} 424 int fValue() {}
431 Future<int> fFuture() async {} 425 Future<int> fFuture() async {}
432 '''); 426 ''');
433 } 427 }
434 428
435 test_initializer_bitwise() async { 429 test_initializer_bitwise() async {
436 var library = await _encodeDecodeLibrary(r''' 430 var library = await _encodeDecodeLibrary(r'''
437 var vBitXor = 1 ^ 2; 431 var vBitXor = 1 ^ 2;
438 var vBitAnd = 1 & 2; 432 var vBitAnd = 1 & 2;
439 var vBitOr = 1 | 2; 433 var vBitOr = 1 | 2;
440 var vBitShiftLeft = 1 << 2; 434 var vBitShiftLeft = 1 << 2;
441 var vBitShiftRight = 1 >> 2; 435 var vBitShiftRight = 1 >> 2;
442 '''); 436 ''');
443 checkElementText( 437 checkElementText(library, r'''
444 library,
445 r'''
446 int vBitXor; 438 int vBitXor;
447 int vBitAnd; 439 int vBitAnd;
448 int vBitOr; 440 int vBitOr;
449 int vBitShiftLeft; 441 int vBitShiftLeft;
450 int vBitShiftRight; 442 int vBitShiftRight;
451 '''); 443 ''');
452 } 444 }
453 445
454 test_initializer_cascade() async { 446 test_initializer_cascade() async {
455 var library = await _encodeDecodeLibrary(r''' 447 var library = await _encodeDecodeLibrary(r'''
456 class A { 448 class A {
457 int a; 449 int a;
458 void m() {} 450 void m() {}
459 } 451 }
460 var vSetField = new A()..a = 1; 452 var vSetField = new A()..a = 1;
461 var vInvokeMethod = new A()..m(); 453 var vInvokeMethod = new A()..m();
462 var vBoth = new A()..a = 1..m(); 454 var vBoth = new A()..a = 1..m();
463 '''); 455 ''');
464 checkElementText( 456 checkElementText(library, r'''
465 library,
466 r'''
467 class A { 457 class A {
468 int a; 458 int a;
469 void m() {} 459 void m() {}
470 } 460 }
471 A vSetField; 461 A vSetField;
472 A vInvokeMethod; 462 A vInvokeMethod;
473 A vBoth; 463 A vBoth;
474 '''); 464 ''');
475 } 465 }
476 466
477 test_initializer_conditional() async { 467 test_initializer_conditional() async {
478 var library = await _encodeDecodeLibrary(r''' 468 var library = await _encodeDecodeLibrary(r'''
479 var V = true ? 1 : 2.3; 469 var V = true ? 1 : 2.3;
480 '''); 470 ''');
481 checkElementText( 471 checkElementText(library, r'''
482 library,
483 r'''
484 num V; 472 num V;
485 '''); 473 ''');
486 } 474 }
487 475
488 test_initializer_equality() async { 476 test_initializer_equality() async {
489 var library = await _encodeDecodeLibrary(r''' 477 var library = await _encodeDecodeLibrary(r'''
490 var vEq = 1 == 2; 478 var vEq = 1 == 2;
491 var vNotEq = 1 != 2; 479 var vNotEq = 1 != 2;
492 '''); 480 ''');
493 checkElementText( 481 checkElementText(library, r'''
494 library,
495 r'''
496 bool vEq; 482 bool vEq;
497 bool vNotEq; 483 bool vNotEq;
498 '''); 484 ''');
499 } 485 }
500 486
501 test_initializer_error_assign() async { 487 test_initializer_error_assign() async {
502 var library = await _encodeDecodeLibrary(r''' 488 var library = await _encodeDecodeLibrary(r'''
503 var a = 1; 489 var a = 1;
504 var t1 = (a = 2); 490 var t1 = (a = 2);
505 var t2 = (a += 2); 491 var t2 = (a += 2);
506 '''); 492 ''');
507 checkElementText( 493 checkElementText(library, r'''
508 library,
509 r'''
510 int a; 494 int a;
511 dynamic t1/*error: assignment*/; 495 dynamic t1/*error: assignment*/;
512 dynamic t2/*error: assignment*/; 496 dynamic t2/*error: assignment*/;
513 '''); 497 ''');
514 } 498 }
515 499
516 test_initializer_error_assign_prefixed() async { 500 test_initializer_error_assign_prefixed() async {
517 var library = await _encodeDecodeLibrary(r''' 501 var library = await _encodeDecodeLibrary(r'''
518 class A { 502 class A {
519 int f; 503 int f;
520 } 504 }
521 var a = new A(); 505 var a = new A();
522 var t1 = (a.f = 1); 506 var t1 = (a.f = 1);
523 var t2 = (a.f += 2); 507 var t2 = (a.f += 2);
524 '''); 508 ''');
525 checkElementText( 509 checkElementText(library, r'''
526 library,
527 r'''
528 class A { 510 class A {
529 int f; 511 int f;
530 } 512 }
531 A a; 513 A a;
532 dynamic t1/*error: assignment*/; 514 dynamic t1/*error: assignment*/;
533 dynamic t2/*error: assignment*/; 515 dynamic t2/*error: assignment*/;
534 '''); 516 ''');
535 } 517 }
536 518
537 test_initializer_error_assign_prefixed_viaInterface() async { 519 test_initializer_error_assign_prefixed_viaInterface() async {
538 var library = await _encodeDecodeLibrary(r''' 520 var library = await _encodeDecodeLibrary(r'''
539 class I { 521 class I {
540 int f; 522 int f;
541 } 523 }
542 abstract class C implements I {} 524 abstract class C implements I {}
543 C c; 525 C c;
544 var t1 = (c.f = 1); 526 var t1 = (c.f = 1);
545 var t2 = (c.f += 2); 527 var t2 = (c.f += 2);
546 '''); 528 ''');
547 checkElementText( 529 checkElementText(library, r'''
548 library,
549 r'''
550 class I { 530 class I {
551 int f; 531 int f;
552 } 532 }
553 abstract class C implements I { 533 abstract class C implements I {
554 } 534 }
555 C c; 535 C c;
556 dynamic t1/*error: assignment*/; 536 dynamic t1/*error: assignment*/;
557 dynamic t2/*error: assignment*/; 537 dynamic t2/*error: assignment*/;
558 '''); 538 ''');
559 } 539 }
560 540
561 test_initializer_error_assign_viaInterface() async { 541 test_initializer_error_assign_viaInterface() async {
562 var library = await _encodeDecodeLibrary(r''' 542 var library = await _encodeDecodeLibrary(r'''
563 class I { 543 class I {
564 int f; 544 int f;
565 } 545 }
566 abstract class C implements I {} 546 abstract class C implements I {}
567 C getC() => null; 547 C getC() => null;
568 var t1 = (getC().f = 1); 548 var t1 = (getC().f = 1);
569 var t2 = (getC().f += 2); 549 var t2 = (getC().f += 2);
570 '''); 550 ''');
571 checkElementText( 551 checkElementText(library, r'''
572 library,
573 r'''
574 class I { 552 class I {
575 int f; 553 int f;
576 } 554 }
577 abstract class C implements I { 555 abstract class C implements I {
578 } 556 }
579 dynamic t1/*error: assignment*/; 557 dynamic t1/*error: assignment*/;
580 dynamic t2/*error: assignment*/; 558 dynamic t2/*error: assignment*/;
581 C getC() {} 559 C getC() {}
582 '''); 560 ''');
583 } 561 }
(...skipping 28 matching lines...) Expand all
612 var t12 = new B().a.f; 590 var t12 = new B().a.f;
613 var t13 = new C().b.a.f; 591 var t13 = new C().b.a.f;
614 var t21 = newA().f; 592 var t21 = newA().f;
615 var t22 = newB().a.f; 593 var t22 = newB().a.f;
616 var t23 = newC().b.a.f; 594 var t23 = newC().b.a.f;
617 } 595 }
618 A newA() => new A(); 596 A newA() => new A();
619 B newB() => new B(); 597 B newB() => new B();
620 C newC() => new C(); 598 C newC() => new C();
621 '''); 599 ''');
622 checkElementText( 600 checkElementText(library, r'''
623 library,
624 r'''
625 class A { 601 class A {
626 int f; 602 int f;
627 } 603 }
628 class B { 604 class B {
629 A a; 605 A a;
630 } 606 }
631 class C { 607 class C {
632 B b; 608 B b;
633 } 609 }
634 class X { 610 class X {
(...skipping 17 matching lines...) Expand all
652 } 628 }
653 629
654 test_initializer_error_extractProperty() async { 630 test_initializer_error_extractProperty() async {
655 var library = await _encodeDecodeLibrary(r''' 631 var library = await _encodeDecodeLibrary(r'''
656 class C { 632 class C {
657 bool b; 633 bool b;
658 } 634 }
659 C f() => null; 635 C f() => null;
660 var x = f().b; 636 var x = f().b;
661 '''); 637 ''');
662 checkElementText( 638 checkElementText(library, r'''
663 library,
664 r'''
665 class C { 639 class C {
666 bool b; 640 bool b;
667 } 641 }
668 dynamic x/*error: instanceGetter*/; 642 dynamic x/*error: instanceGetter*/;
669 C f() {} 643 C f() {}
670 '''); 644 ''');
671 } 645 }
672 646
673 test_initializer_error_extractProperty_inOtherLibraryCycle() async { 647 test_initializer_error_extractProperty_inOtherLibraryCycle() async {
674 addFile( 648 addFile('/a.dart', r'''
675 '/a.dart',
676 r'''
677 import 'b.dart'; 649 import 'b.dart';
678 var x = new C().f; 650 var x = new C().f;
679 '''); 651 ''');
680 addFile( 652 addFile('/b.dart', r'''
681 '/b.dart',
682 r'''
683 class C { 653 class C {
684 var f = 0; 654 var f = 0;
685 } 655 }
686 '''); 656 ''');
687 var library = await _encodeDecodeLibrary(r''' 657 var library = await _encodeDecodeLibrary(r'''
688 import 'a.dart'; 658 import 'a.dart';
689 var t1 = x; 659 var t1 = x;
690 '''); 660 ''');
691 checkElementText( 661 checkElementText(library, r'''
692 library,
693 r'''
694 import 'a.dart'; 662 import 'a.dart';
695 dynamic t1; 663 dynamic t1;
696 '''); 664 ''');
697 } 665 }
698 666
699 test_initializer_error_extractProperty_inStaticField() async { 667 test_initializer_error_extractProperty_inStaticField() async {
700 var library = await _encodeDecodeLibrary(r''' 668 var library = await _encodeDecodeLibrary(r'''
701 class A { 669 class A {
702 int f; 670 int f;
703 } 671 }
704 class B { 672 class B {
705 static var t = new A().f; 673 static var t = new A().f;
706 } 674 }
707 '''); 675 ''');
708 checkElementText( 676 checkElementText(library, r'''
709 library,
710 r'''
711 class A { 677 class A {
712 int f; 678 int f;
713 } 679 }
714 class B { 680 class B {
715 static dynamic t/*error: instanceGetter*/; 681 static dynamic t/*error: instanceGetter*/;
716 } 682 }
717 '''); 683 ''');
718 } 684 }
719 685
720 test_initializer_error_extractProperty_prefixedIdentifier() async { 686 test_initializer_error_extractProperty_prefixedIdentifier() async {
721 var library = await _encodeDecodeLibrary(r''' 687 var library = await _encodeDecodeLibrary(r'''
722 class C { 688 class C {
723 bool b; 689 bool b;
724 } 690 }
725 C c; 691 C c;
726 var x = c.b; 692 var x = c.b;
727 '''); 693 ''');
728 checkElementText( 694 checkElementText(library, r'''
729 library,
730 r'''
731 class C { 695 class C {
732 bool b; 696 bool b;
733 } 697 }
734 C c; 698 C c;
735 dynamic x/*error: instanceGetter*/; 699 dynamic x/*error: instanceGetter*/;
736 '''); 700 ''');
737 } 701 }
738 702
739 test_initializer_error_extractProperty_prefixedIdentifier_viaInterface() async { 703 test_initializer_error_extractProperty_prefixedIdentifier_viaInterface() async {
740 var library = await _encodeDecodeLibrary(r''' 704 var library = await _encodeDecodeLibrary(r'''
741 class I { 705 class I {
742 bool b; 706 bool b;
743 } 707 }
744 abstract class C implements I {} 708 abstract class C implements I {}
745 C c; 709 C c;
746 var x = c.b; 710 var x = c.b;
747 '''); 711 ''');
748 checkElementText( 712 checkElementText(library, r'''
749 library,
750 r'''
751 class I { 713 class I {
752 bool b; 714 bool b;
753 } 715 }
754 abstract class C implements I { 716 abstract class C implements I {
755 } 717 }
756 C c; 718 C c;
757 dynamic x/*error: instanceGetter*/; 719 dynamic x/*error: instanceGetter*/;
758 '''); 720 ''');
759 } 721 }
760 722
761 test_initializer_error_extractProperty_viaInterface() async { 723 test_initializer_error_extractProperty_viaInterface() async {
762 var library = await _encodeDecodeLibrary(r''' 724 var library = await _encodeDecodeLibrary(r'''
763 class I { 725 class I {
764 bool b; 726 bool b;
765 } 727 }
766 abstract class C implements I {} 728 abstract class C implements I {}
767 C f() => null; 729 C f() => null;
768 var x = f().b; 730 var x = f().b;
769 '''); 731 ''');
770 checkElementText( 732 checkElementText(library, r'''
771 library,
772 r'''
773 class I { 733 class I {
774 bool b; 734 bool b;
775 } 735 }
776 abstract class C implements I { 736 abstract class C implements I {
777 } 737 }
778 dynamic x/*error: instanceGetter*/; 738 dynamic x/*error: instanceGetter*/;
779 C f() {} 739 C f() {}
780 '''); 740 ''');
781 } 741 }
782 742
783 test_initializer_error_instanceGetterOfObject() async { 743 test_initializer_error_instanceGetterOfObject() async {
784 var library = await _encodeDecodeLibrary(r''' 744 var library = await _encodeDecodeLibrary(r'''
785 dynamic f() => null; 745 dynamic f() => null;
786 var s = f().toString(); 746 var s = f().toString();
787 var h = f().hashCode; 747 var h = f().hashCode;
788 '''); 748 ''');
789 checkElementText( 749 checkElementText(library, r'''
790 library,
791 r'''
792 String s; 750 String s;
793 dynamic h/*error: instanceGetter*/; 751 dynamic h/*error: instanceGetter*/;
794 dynamic f() {} 752 dynamic f() {}
795 '''); 753 ''');
796 } 754 }
797 755
798 test_initializer_error_instanceGetterOfObject_prefixed() async { 756 test_initializer_error_instanceGetterOfObject_prefixed() async {
799 var library = await _encodeDecodeLibrary(r''' 757 var library = await _encodeDecodeLibrary(r'''
800 dynamic d; 758 dynamic d;
801 var s = d.toString(); 759 var s = d.toString();
802 var h = d.hashCode; 760 var h = d.hashCode;
803 '''); 761 ''');
804 checkElementText( 762 checkElementText(library, r'''
805 library,
806 r'''
807 dynamic d; 763 dynamic d;
808 String s; 764 String s;
809 dynamic h/*error: instanceGetter*/; 765 dynamic h/*error: instanceGetter*/;
810 '''); 766 ''');
811 } 767 }
812 768
813 test_initializer_error_methodInvocation_cycle_topLevel() async { 769 test_initializer_error_methodInvocation_cycle_topLevel() async {
814 var library = await _encodeDecodeLibrary(r''' 770 var library = await _encodeDecodeLibrary(r'''
815 var a = b.foo(); 771 var a = b.foo();
816 var b = a.foo(); 772 var b = a.foo();
817 '''); 773 ''');
818 checkElementText( 774 checkElementText(library, r'''
819 library,
820 r'''
821 dynamic a/*error: dependencyCycle*/; 775 dynamic a/*error: dependencyCycle*/;
822 dynamic b/*error: dependencyCycle*/; 776 dynamic b/*error: dependencyCycle*/;
823 '''); 777 ''');
824 } 778 }
825 779
826 test_initializer_error_methodInvocation_cycle_topLevel_self() async { 780 test_initializer_error_methodInvocation_cycle_topLevel_self() async {
827 var library = await _encodeDecodeLibrary(r''' 781 var library = await _encodeDecodeLibrary(r'''
828 var a = a.foo(); 782 var a = a.foo();
829 '''); 783 ''');
830 checkElementText( 784 checkElementText(library, r'''
831 library,
832 r'''
833 dynamic a/*error: dependencyCycle*/; 785 dynamic a/*error: dependencyCycle*/;
834 '''); 786 ''');
835 } 787 }
836 788
837 test_initializer_error_referenceToFieldOfStaticField() async { 789 test_initializer_error_referenceToFieldOfStaticField() async {
838 var library = await _encodeDecodeLibrary(r''' 790 var library = await _encodeDecodeLibrary(r'''
839 class C { 791 class C {
840 static D d; 792 static D d;
841 } 793 }
842 class D { 794 class D {
843 int i; 795 int i;
844 } 796 }
845 final x = C.d.i; 797 final x = C.d.i;
846 '''); 798 ''');
847 checkElementText( 799 checkElementText(library, r'''
848 library,
849 r'''
850 class C { 800 class C {
851 static D d; 801 static D d;
852 } 802 }
853 class D { 803 class D {
854 int i; 804 int i;
855 } 805 }
856 final dynamic x/*error: instanceGetter*/; 806 final dynamic x/*error: instanceGetter*/;
857 '''); 807 ''');
858 } 808 }
859 809
860 test_initializer_error_referenceToFieldOfStaticGetter() async { 810 test_initializer_error_referenceToFieldOfStaticGetter() async {
861 var library = await _encodeDecodeLibrary(r''' 811 var library = await _encodeDecodeLibrary(r'''
862 class C { 812 class C {
863 static D get d => null; 813 static D get d => null;
864 } 814 }
865 class D { 815 class D {
866 int i; 816 int i;
867 } 817 }
868 var x = C.d.i; 818 var x = C.d.i;
869 '''); 819 ''');
870 checkElementText( 820 checkElementText(library, r'''
871 library,
872 r'''
873 class C { 821 class C {
874 static D get d {} 822 static D get d {}
875 } 823 }
876 class D { 824 class D {
877 int i; 825 int i;
878 } 826 }
879 dynamic x/*error: instanceGetter*/; 827 dynamic x/*error: instanceGetter*/;
880 '''); 828 ''');
881 } 829 }
882 830
883 test_initializer_extractIndex() async { 831 test_initializer_extractIndex() async {
884 var library = await _encodeDecodeLibrary(r''' 832 var library = await _encodeDecodeLibrary(r'''
885 var a = [0, 1.2]; 833 var a = [0, 1.2];
886 var b0 = a[0]; 834 var b0 = a[0];
887 var b1 = a[1]; 835 var b1 = a[1];
888 '''); 836 ''');
889 checkElementText( 837 checkElementText(library, r'''
890 library,
891 r'''
892 List<num> a; 838 List<num> a;
893 num b0; 839 num b0;
894 num b1; 840 num b1;
895 '''); 841 ''');
896 } 842 }
897 843
898 test_initializer_functionExpression() async { 844 test_initializer_functionExpression() async {
899 var library = await _encodeDecodeLibrary(r''' 845 var library = await _encodeDecodeLibrary(r'''
900 import 'dart:async'; 846 import 'dart:async';
901 var vFuture = new Future<int>(42); 847 var vFuture = new Future<int>(42);
902 var v_noParameters_inferredReturnType = () => 42; 848 var v_noParameters_inferredReturnType = () => 42;
903 var v_hasParameter_withType_inferredReturnType = (String a) => 42; 849 var v_hasParameter_withType_inferredReturnType = (String a) => 42;
904 var v_hasParameter_withType_returnParameter = (String a) => a; 850 var v_hasParameter_withType_returnParameter = (String a) => a;
905 var v_async_returnValue = () async => 42; 851 var v_async_returnValue = () async => 42;
906 var v_async_returnFuture = () async => vFuture; 852 var v_async_returnFuture = () async => vFuture;
907 '''); 853 ''');
908 checkElementText( 854 checkElementText(library, r'''
909 library,
910 r'''
911 import 'dart:async'; 855 import 'dart:async';
912 Future<int> vFuture; 856 Future<int> vFuture;
913 () → int v_noParameters_inferredReturnType; 857 () → int v_noParameters_inferredReturnType;
914 (String) → int v_hasParameter_withType_inferredReturnType; 858 (String) → int v_hasParameter_withType_inferredReturnType;
915 (String) → String v_hasParameter_withType_returnParameter; 859 (String) → String v_hasParameter_withType_returnParameter;
916 () → Future<int> v_async_returnValue; 860 () → Future<int> v_async_returnValue;
917 () → Future<int> v_async_returnFuture; 861 () → Future<int> v_async_returnFuture;
918 '''); 862 ''');
919 } 863 }
920 864
921 @failingTest 865 @failingTest
922 test_initializer_functionExpressionInvocation_noTypeParameters() async { 866 test_initializer_functionExpressionInvocation_noTypeParameters() async {
923 var library = await _encodeDecodeLibrary(r''' 867 var library = await _encodeDecodeLibrary(r'''
924 var v = (() => 42)(); 868 var v = (() => 42)();
925 '''); 869 ''');
926 // TODO(scheglov) add more function expression tests 870 // TODO(scheglov) add more function expression tests
927 checkElementText( 871 checkElementText(library, r'''
928 library,
929 r'''
930 int v; 872 int v;
931 '''); 873 ''');
932 } 874 }
933 875
934 test_initializer_functionInvocation_hasTypeParameters() async { 876 test_initializer_functionInvocation_hasTypeParameters() async {
935 var library = await _encodeDecodeLibrary(r''' 877 var library = await _encodeDecodeLibrary(r'''
936 T f<T>() => null; 878 T f<T>() => null;
937 var vHasTypeArgument = f<int>(); 879 var vHasTypeArgument = f<int>();
938 var vNoTypeArgument = f(); 880 var vNoTypeArgument = f();
939 '''); 881 ''');
940 checkElementText( 882 checkElementText(library, r'''
941 library,
942 r'''
943 int vHasTypeArgument; 883 int vHasTypeArgument;
944 dynamic vNoTypeArgument; 884 dynamic vNoTypeArgument;
945 T f<T>() {} 885 T f<T>() {}
946 '''); 886 ''');
947 } 887 }
948 888
949 test_initializer_functionInvocation_noTypeParameters() async { 889 test_initializer_functionInvocation_noTypeParameters() async {
950 var library = await _encodeDecodeLibrary(r''' 890 var library = await _encodeDecodeLibrary(r'''
951 String f(int p) => null; 891 String f(int p) => null;
952 var vOkArgumentType = f(1); 892 var vOkArgumentType = f(1);
953 var vWrongArgumentType = f(2.0); 893 var vWrongArgumentType = f(2.0);
954 '''); 894 ''');
955 checkElementText( 895 checkElementText(library, r'''
956 library,
957 r'''
958 String vOkArgumentType; 896 String vOkArgumentType;
959 String vWrongArgumentType; 897 String vWrongArgumentType;
960 String f(int p) {} 898 String f(int p) {}
961 '''); 899 ''');
962 } 900 }
963 901
964 test_initializer_identifier() async { 902 test_initializer_identifier() async {
965 var library = await _encodeDecodeLibrary(r''' 903 var library = await _encodeDecodeLibrary(r'''
966 String topLevelFunction(int p) => null; 904 String topLevelFunction(int p) => null;
967 var topLevelVariable = 0; 905 var topLevelVariable = 0;
968 int get topLevelGetter => 0; 906 int get topLevelGetter => 0;
969 class A { 907 class A {
970 static var staticClassVariable = 0; 908 static var staticClassVariable = 0;
971 static int get staticGetter => 0; 909 static int get staticGetter => 0;
972 static String staticClassMethod(int p) => null; 910 static String staticClassMethod(int p) => null;
973 String instanceClassMethod(int p) => null; 911 String instanceClassMethod(int p) => null;
974 } 912 }
975 var r_topLevelFunction = topLevelFunction; 913 var r_topLevelFunction = topLevelFunction;
976 var r_topLevelVariable = topLevelVariable; 914 var r_topLevelVariable = topLevelVariable;
977 var r_topLevelGetter = topLevelGetter; 915 var r_topLevelGetter = topLevelGetter;
978 var r_staticClassVariable = A.staticClassVariable; 916 var r_staticClassVariable = A.staticClassVariable;
979 var r_staticGetter = A.staticGetter; 917 var r_staticGetter = A.staticGetter;
980 var r_staticClassMethod = A.staticClassMethod; 918 var r_staticClassMethod = A.staticClassMethod;
981 var instanceOfA = new A(); 919 var instanceOfA = new A();
982 var r_instanceClassMethod = instanceOfA.instanceClassMethod; 920 var r_instanceClassMethod = instanceOfA.instanceClassMethod;
983 '''); 921 ''');
984 checkElementText( 922 checkElementText(library, r'''
985 library,
986 r'''
987 class A { 923 class A {
988 static int staticClassVariable; 924 static int staticClassVariable;
989 static int get staticGetter {} 925 static int get staticGetter {}
990 static String staticClassMethod(int p) {} 926 static String staticClassMethod(int p) {}
991 String instanceClassMethod(int p) {} 927 String instanceClassMethod(int p) {}
992 } 928 }
993 int topLevelVariable; 929 int topLevelVariable;
994 (int) → String r_topLevelFunction; 930 (int) → String r_topLevelFunction;
995 int r_topLevelVariable; 931 int r_topLevelVariable;
996 int r_topLevelGetter; 932 int r_topLevelGetter;
(...skipping 10 matching lines...) Expand all
1007 test_initializer_identifier_error_cycle_classField() async { 943 test_initializer_identifier_error_cycle_classField() async {
1008 var library = await _encodeDecodeLibrary(r''' 944 var library = await _encodeDecodeLibrary(r'''
1009 class A { 945 class A {
1010 static var a = B.b; 946 static var a = B.b;
1011 } 947 }
1012 class B { 948 class B {
1013 static var b = A.a; 949 static var b = A.a;
1014 } 950 }
1015 var c = A.a; 951 var c = A.a;
1016 '''); 952 ''');
1017 checkElementText( 953 checkElementText(library, r'''
1018 library,
1019 r'''
1020 class A { 954 class A {
1021 static dynamic a/*error: dependencyCycle*/; 955 static dynamic a/*error: dependencyCycle*/;
1022 } 956 }
1023 class B { 957 class B {
1024 static dynamic b/*error: dependencyCycle*/; 958 static dynamic b/*error: dependencyCycle*/;
1025 } 959 }
1026 dynamic c; 960 dynamic c;
1027 '''); 961 ''');
1028 } 962 }
1029 963
1030 test_initializer_identifier_error_cycle_mix() async { 964 test_initializer_identifier_error_cycle_mix() async {
1031 var library = await _encodeDecodeLibrary(r''' 965 var library = await _encodeDecodeLibrary(r'''
1032 class A { 966 class A {
1033 static var a = b; 967 static var a = b;
1034 } 968 }
1035 var b = A.a; 969 var b = A.a;
1036 var c = b; 970 var c = b;
1037 '''); 971 ''');
1038 checkElementText( 972 checkElementText(library, r'''
1039 library,
1040 r'''
1041 class A { 973 class A {
1042 static dynamic a/*error: dependencyCycle*/; 974 static dynamic a/*error: dependencyCycle*/;
1043 } 975 }
1044 dynamic b/*error: dependencyCycle*/; 976 dynamic b/*error: dependencyCycle*/;
1045 dynamic c; 977 dynamic c;
1046 '''); 978 ''');
1047 } 979 }
1048 980
1049 test_initializer_identifier_error_cycle_topLevel() async { 981 test_initializer_identifier_error_cycle_topLevel() async {
1050 var library = await _encodeDecodeLibrary(r''' 982 var library = await _encodeDecodeLibrary(r'''
1051 var a = b; 983 var a = b;
1052 var b = c; 984 var b = c;
1053 var c = a; 985 var c = a;
1054 var d = a; 986 var d = a;
1055 '''); 987 ''');
1056 checkElementText( 988 checkElementText(library, r'''
1057 library,
1058 r'''
1059 dynamic a/*error: dependencyCycle*/; 989 dynamic a/*error: dependencyCycle*/;
1060 dynamic b/*error: dependencyCycle*/; 990 dynamic b/*error: dependencyCycle*/;
1061 dynamic c/*error: dependencyCycle*/; 991 dynamic c/*error: dependencyCycle*/;
1062 dynamic d; 992 dynamic d;
1063 '''); 993 ''');
1064 } 994 }
1065 995
1066 test_initializer_identifier_formalParameter() async { 996 test_initializer_identifier_formalParameter() async {
1067 // TODO(scheglov) I don't understand this yet 997 // TODO(scheglov) I don't understand this yet
1068 } 998 }
1069 999
1070 @failingTest 1000 @failingTest
1071 test_initializer_instanceCreation_hasTypeParameter() async { 1001 test_initializer_instanceCreation_hasTypeParameter() async {
1072 var library = await _encodeDecodeLibrary(r''' 1002 var library = await _encodeDecodeLibrary(r'''
1073 class A<T> {} 1003 class A<T> {}
1074 var a = new A<int>(); 1004 var a = new A<int>();
1075 var b = new A(); 1005 var b = new A();
1076 '''); 1006 ''');
1077 // TODO(scheglov) test for inference failure error 1007 // TODO(scheglov) test for inference failure error
1078 checkElementText( 1008 checkElementText(library, r'''
1079 library,
1080 r'''
1081 class A<T> { 1009 class A<T> {
1082 } 1010 }
1083 A<int> a; 1011 A<int> a;
1084 dynamic b; 1012 dynamic b;
1085 '''); 1013 ''');
1086 } 1014 }
1087 1015
1088 test_initializer_instanceCreation_noTypeParameters() async { 1016 test_initializer_instanceCreation_noTypeParameters() async {
1089 var library = await _encodeDecodeLibrary(r''' 1017 var library = await _encodeDecodeLibrary(r'''
1090 class A {} 1018 class A {}
1091 var a = new A(); 1019 var a = new A();
1092 '''); 1020 ''');
1093 checkElementText( 1021 checkElementText(library, r'''
1094 library,
1095 r'''
1096 class A { 1022 class A {
1097 } 1023 }
1098 A a; 1024 A a;
1099 '''); 1025 ''');
1100 } 1026 }
1101 1027
1102 test_initializer_is() async { 1028 test_initializer_is() async {
1103 var library = await _encodeDecodeLibrary(r''' 1029 var library = await _encodeDecodeLibrary(r'''
1104 var a = 1.2; 1030 var a = 1.2;
1105 var b = a is int; 1031 var b = a is int;
1106 '''); 1032 ''');
1107 checkElementText( 1033 checkElementText(library, r'''
1108 library,
1109 r'''
1110 double a; 1034 double a;
1111 bool b; 1035 bool b;
1112 '''); 1036 ''');
1113 } 1037 }
1114 1038
1115 @failingTest 1039 @failingTest
1116 test_initializer_literal() async { 1040 test_initializer_literal() async {
1117 var library = await _encodeDecodeLibrary(r''' 1041 var library = await _encodeDecodeLibrary(r'''
1118 var vNull = null; 1042 var vNull = null;
1119 var vBoolFalse = false; 1043 var vBoolFalse = false;
1120 var vBoolTrue = true; 1044 var vBoolTrue = true;
1121 var vInt = 1; 1045 var vInt = 1;
1122 var vIntLong = 0x9876543210987654321; 1046 var vIntLong = 0x9876543210987654321;
1123 var vDouble = 2.3; 1047 var vDouble = 2.3;
1124 var vString = 'abc'; 1048 var vString = 'abc';
1125 var vStringConcat = 'aaa' 'bbb'; 1049 var vStringConcat = 'aaa' 'bbb';
1126 var vStringInterpolation = 'aaa ${true} ${42} bbb'; 1050 var vStringInterpolation = 'aaa ${true} ${42} bbb';
1127 var vSymbol = #aaa.bbb.ccc; 1051 var vSymbol = #aaa.bbb.ccc;
1128 '''); 1052 ''');
1129 checkElementText( 1053 checkElementText(library, r'''
1130 library,
1131 r'''
1132 Null vNull; 1054 Null vNull;
1133 bool vBoolFalse; 1055 bool vBoolFalse;
1134 bool vBoolTrue; 1056 bool vBoolTrue;
1135 int vInt; 1057 int vInt;
1136 int vIntLong; 1058 int vIntLong;
1137 double vDouble; 1059 double vDouble;
1138 String vString; 1060 String vString;
1139 String vStringConcat; 1061 String vStringConcat;
1140 String vStringInterpolation; 1062 String vStringInterpolation;
1141 Symbol vSymbol; 1063 Symbol vSymbol;
1142 '''); 1064 ''');
1143 } 1065 }
1144 1066
1145 test_initializer_literal_list_typed() async { 1067 test_initializer_literal_list_typed() async {
1146 var library = await _encodeDecodeLibrary(r''' 1068 var library = await _encodeDecodeLibrary(r'''
1147 var vObject = <Object>[1, 2, 3]; 1069 var vObject = <Object>[1, 2, 3];
1148 var vNum = <num>[1, 2, 3]; 1070 var vNum = <num>[1, 2, 3];
1149 var vNumEmpty = <num>[]; 1071 var vNumEmpty = <num>[];
1150 var vInt = <int>[1, 2, 3]; 1072 var vInt = <int>[1, 2, 3];
1151 '''); 1073 ''');
1152 checkElementText( 1074 checkElementText(library, r'''
1153 library,
1154 r'''
1155 List<Object> vObject; 1075 List<Object> vObject;
1156 List<num> vNum; 1076 List<num> vNum;
1157 List<num> vNumEmpty; 1077 List<num> vNumEmpty;
1158 List<int> vInt; 1078 List<int> vInt;
1159 '''); 1079 ''');
1160 } 1080 }
1161 1081
1162 test_initializer_literal_list_untyped() async { 1082 test_initializer_literal_list_untyped() async {
1163 var library = await _encodeDecodeLibrary(r''' 1083 var library = await _encodeDecodeLibrary(r'''
1164 var vInt = [1, 2, 3]; 1084 var vInt = [1, 2, 3];
1165 var vNum = [1, 2.0]; 1085 var vNum = [1, 2.0];
1166 var vObject = [1, 2.0, '333']; 1086 var vObject = [1, 2.0, '333'];
1167 '''); 1087 ''');
1168 checkElementText( 1088 checkElementText(library, r'''
1169 library,
1170 r'''
1171 List<int> vInt; 1089 List<int> vInt;
1172 List<num> vNum; 1090 List<num> vNum;
1173 List<Object> vObject; 1091 List<Object> vObject;
1174 '''); 1092 ''');
1175 } 1093 }
1176 1094
1177 @failingTest 1095 @failingTest
1178 test_initializer_literal_list_untyped_empty() async { 1096 test_initializer_literal_list_untyped_empty() async {
1179 var library = await _encodeDecodeLibrary(r''' 1097 var library = await _encodeDecodeLibrary(r'''
1180 var vNonConst = []; 1098 var vNonConst = [];
1181 var vConst = const []; 1099 var vConst = const [];
1182 '''); 1100 ''');
1183 checkElementText( 1101 checkElementText(library, r'''
1184 library,
1185 r'''
1186 List<dynamic> vNonConst; 1102 List<dynamic> vNonConst;
1187 List<Null> vConst; 1103 List<Null> vConst;
1188 '''); 1104 ''');
1189 } 1105 }
1190 1106
1191 test_initializer_literal_map_typed() async { 1107 test_initializer_literal_map_typed() async {
1192 var library = await _encodeDecodeLibrary(r''' 1108 var library = await _encodeDecodeLibrary(r'''
1193 var vObjectObject = <Object, Object>{1: 'a'}; 1109 var vObjectObject = <Object, Object>{1: 'a'};
1194 var vComparableObject = <Comparable<int>, Object>{1: 'a'}; 1110 var vComparableObject = <Comparable<int>, Object>{1: 'a'};
1195 var vNumString = <num, String>{1: 'a'}; 1111 var vNumString = <num, String>{1: 'a'};
1196 var vNumStringEmpty = <num, String>{}; 1112 var vNumStringEmpty = <num, String>{};
1197 var vIntString = <int, String>{}; 1113 var vIntString = <int, String>{};
1198 '''); 1114 ''');
1199 checkElementText( 1115 checkElementText(library, r'''
1200 library,
1201 r'''
1202 Map<Object, Object> vObjectObject; 1116 Map<Object, Object> vObjectObject;
1203 Map<Comparable<int>, Object> vComparableObject; 1117 Map<Comparable<int>, Object> vComparableObject;
1204 Map<num, String> vNumString; 1118 Map<num, String> vNumString;
1205 Map<num, String> vNumStringEmpty; 1119 Map<num, String> vNumStringEmpty;
1206 Map<int, String> vIntString; 1120 Map<int, String> vIntString;
1207 '''); 1121 ''');
1208 } 1122 }
1209 1123
1210 test_initializer_literal_map_untyped() async { 1124 test_initializer_literal_map_untyped() async {
1211 var library = await _encodeDecodeLibrary(r''' 1125 var library = await _encodeDecodeLibrary(r'''
1212 var vIntString = {1: 'a', 2: 'b'}; 1126 var vIntString = {1: 'a', 2: 'b'};
1213 var vNumString = {1: 'a', 2.0: 'b'}; 1127 var vNumString = {1: 'a', 2.0: 'b'};
1214 var vIntObject = {1: 'a', 2: 3.0}; 1128 var vIntObject = {1: 'a', 2: 3.0};
1215 '''); 1129 ''');
1216 checkElementText( 1130 checkElementText(library, r'''
1217 library,
1218 r'''
1219 Map<int, String> vIntString; 1131 Map<int, String> vIntString;
1220 Map<num, String> vNumString; 1132 Map<num, String> vNumString;
1221 Map<int, Object> vIntObject; 1133 Map<int, Object> vIntObject;
1222 '''); 1134 ''');
1223 } 1135 }
1224 1136
1225 @failingTest 1137 @failingTest
1226 test_initializer_literal_map_untyped_empty() async { 1138 test_initializer_literal_map_untyped_empty() async {
1227 var library = await _encodeDecodeLibrary(r''' 1139 var library = await _encodeDecodeLibrary(r'''
1228 var vNonConst = {}; 1140 var vNonConst = {};
1229 var vConst = const {}; 1141 var vConst = const {};
1230 '''); 1142 ''');
1231 checkElementText( 1143 checkElementText(library, r'''
1232 library,
1233 r'''
1234 Map<dynamic, dynamic> vNonConst; 1144 Map<dynamic, dynamic> vNonConst;
1235 Map<Null, Null> vConst; 1145 Map<Null, Null> vConst;
1236 '''); 1146 ''');
1237 } 1147 }
1238 1148
1239 test_initializer_logicalBool() async { 1149 test_initializer_logicalBool() async {
1240 var library = await _encodeDecodeLibrary(r''' 1150 var library = await _encodeDecodeLibrary(r'''
1241 var a = true; 1151 var a = true;
1242 var b = true; 1152 var b = true;
1243 var vEq = 1 == 2; 1153 var vEq = 1 == 2;
1244 var vAnd = a && b; 1154 var vAnd = a && b;
1245 var vOr = a || b; 1155 var vOr = a || b;
1246 '''); 1156 ''');
1247 checkElementText( 1157 checkElementText(library, r'''
1248 library,
1249 r'''
1250 bool a; 1158 bool a;
1251 bool b; 1159 bool b;
1252 bool vEq; 1160 bool vEq;
1253 bool vAnd; 1161 bool vAnd;
1254 bool vOr; 1162 bool vOr;
1255 '''); 1163 ''');
1256 } 1164 }
1257 1165
1258 @failingTest 1166 @failingTest
1259 test_initializer_methodInvocation_hasTypeParameters() async { 1167 test_initializer_methodInvocation_hasTypeParameters() async {
1260 var library = await _encodeDecodeLibrary(r''' 1168 var library = await _encodeDecodeLibrary(r'''
1261 class A { 1169 class A {
1262 List<T> m<T>() => null; 1170 List<T> m<T>() => null;
1263 } 1171 }
1264 var vWithTypeArgument = new A().m<int>(); 1172 var vWithTypeArgument = new A().m<int>();
1265 var vWithoutTypeArgument = new A().m(); 1173 var vWithoutTypeArgument = new A().m();
1266 '''); 1174 ''');
1267 // TODO(scheglov) test for inference failure error 1175 // TODO(scheglov) test for inference failure error
1268 checkElementText( 1176 checkElementText(library, r'''
1269 library,
1270 r'''
1271 class A { 1177 class A {
1272 List<T> m<T>(int p) {} 1178 List<T> m<T>(int p) {}
1273 } 1179 }
1274 List<int> vWithTypeArgument; 1180 List<int> vWithTypeArgument;
1275 dynamic vWithoutTypeArgument; 1181 dynamic vWithoutTypeArgument;
1276 '''); 1182 ''');
1277 } 1183 }
1278 1184
1279 test_initializer_methodInvocation_noTypeParameters() async { 1185 test_initializer_methodInvocation_noTypeParameters() async {
1280 var library = await _encodeDecodeLibrary(r''' 1186 var library = await _encodeDecodeLibrary(r'''
1281 class A { 1187 class A {
1282 String m(int p) => null; 1188 String m(int p) => null;
1283 } 1189 }
1284 var instanceOfA = new A(); 1190 var instanceOfA = new A();
1285 var v1 = instanceOfA.m(); 1191 var v1 = instanceOfA.m();
1286 var v2 = new A().m(); 1192 var v2 = new A().m();
1287 '''); 1193 ''');
1288 checkElementText( 1194 checkElementText(library, r'''
1289 library,
1290 r'''
1291 class A { 1195 class A {
1292 String m(int p) {} 1196 String m(int p) {}
1293 } 1197 }
1294 A instanceOfA; 1198 A instanceOfA;
1295 String v1; 1199 String v1;
1296 String v2; 1200 String v2;
1297 '''); 1201 ''');
1298 } 1202 }
1299 1203
1300 test_initializer_multiplicative() async { 1204 test_initializer_multiplicative() async {
1301 var library = await _encodeDecodeLibrary(r''' 1205 var library = await _encodeDecodeLibrary(r'''
1302 var vModuloIntInt = 1 % 2; 1206 var vModuloIntInt = 1 % 2;
1303 var vModuloIntDouble = 1 % 2.0; 1207 var vModuloIntDouble = 1 % 2.0;
1304 var vMultiplyIntInt = 1 * 2; 1208 var vMultiplyIntInt = 1 * 2;
1305 var vMultiplyIntDouble = 1 * 2.0; 1209 var vMultiplyIntDouble = 1 * 2.0;
1306 var vMultiplyDoubleInt = 1.0 * 2; 1210 var vMultiplyDoubleInt = 1.0 * 2;
1307 var vMultiplyDoubleDouble = 1.0 * 2.0; 1211 var vMultiplyDoubleDouble = 1.0 * 2.0;
1308 var vDivideIntInt = 1 / 2; 1212 var vDivideIntInt = 1 / 2;
1309 var vDivideIntDouble = 1 / 2.0; 1213 var vDivideIntDouble = 1 / 2.0;
1310 var vDivideDoubleInt = 1.0 / 2; 1214 var vDivideDoubleInt = 1.0 / 2;
1311 var vDivideDoubleDouble = 1.0 / 2.0; 1215 var vDivideDoubleDouble = 1.0 / 2.0;
1312 var vFloorDivide = 1 ~/ 2; 1216 var vFloorDivide = 1 ~/ 2;
1313 '''); 1217 ''');
1314 checkElementText( 1218 checkElementText(library, r'''
1315 library,
1316 r'''
1317 int vModuloIntInt; 1219 int vModuloIntInt;
1318 double vModuloIntDouble; 1220 double vModuloIntDouble;
1319 int vMultiplyIntInt; 1221 int vMultiplyIntInt;
1320 double vMultiplyIntDouble; 1222 double vMultiplyIntDouble;
1321 double vMultiplyDoubleInt; 1223 double vMultiplyDoubleInt;
1322 double vMultiplyDoubleDouble; 1224 double vMultiplyDoubleDouble;
1323 double vDivideIntInt; 1225 double vDivideIntInt;
1324 double vDivideIntDouble; 1226 double vDivideIntDouble;
1325 double vDivideDoubleInt; 1227 double vDivideDoubleInt;
1326 double vDivideDoubleDouble; 1228 double vDivideDoubleDouble;
1327 int vFloorDivide; 1229 int vFloorDivide;
1328 '''); 1230 ''');
1329 } 1231 }
1330 1232
1331 @failingTest 1233 @failingTest
1332 test_initializer_onlyLeft() async { 1234 test_initializer_onlyLeft() async {
1333 var library = await _encodeDecodeLibrary(r''' 1235 var library = await _encodeDecodeLibrary(r'''
1334 var a = 1; 1236 var a = 1;
1335 var vEq = a == ((a = 2) == 0); 1237 var vEq = a == ((a = 2) == 0);
1336 var vNotEq = a != ((a = 2) == 0); 1238 var vNotEq = a != ((a = 2) == 0);
1337 '''); 1239 ''');
1338 checkElementText( 1240 checkElementText(library, r'''
1339 library,
1340 r'''
1341 int a; 1241 int a;
1342 bool vEq; 1242 bool vEq;
1343 bool vNotEq; 1243 bool vNotEq;
1344 '''); 1244 ''');
1345 } 1245 }
1346 1246
1347 test_initializer_parenthesized() async { 1247 test_initializer_parenthesized() async {
1348 var library = await _encodeDecodeLibrary(r''' 1248 var library = await _encodeDecodeLibrary(r'''
1349 var V = (42); 1249 var V = (42);
1350 '''); 1250 ''');
1351 checkElementText( 1251 checkElementText(library, r'''
1352 library,
1353 r'''
1354 int V; 1252 int V;
1355 '''); 1253 ''');
1356 } 1254 }
1357 1255
1358 @failingTest 1256 @failingTest
1359 test_initializer_postfix() async { 1257 test_initializer_postfix() async {
1360 var library = await _encodeDecodeLibrary(r''' 1258 var library = await _encodeDecodeLibrary(r'''
1361 var vInt = 1; 1259 var vInt = 1;
1362 var vDouble = 2; 1260 var vDouble = 2;
1363 var vIncInt = vInt++; 1261 var vIncInt = vInt++;
1364 var vDecInt = vInt--; 1262 var vDecInt = vInt--;
1365 var vIncDouble = vDouble++; 1263 var vIncDouble = vDouble++;
1366 var vDecDouble = vDouble--; 1264 var vDecDouble = vDouble--;
1367 '''); 1265 ''');
1368 checkElementText( 1266 checkElementText(library, r'''
1369 library,
1370 r'''
1371 int vInt; 1267 int vInt;
1372 int vDouble; 1268 int vDouble;
1373 int vIncInt; 1269 int vIncInt;
1374 int vDecInt; 1270 int vDecInt;
1375 double vIncDouble; 1271 double vIncDouble;
1376 double vDecDouble; 1272 double vDecDouble;
1377 '''); 1273 ''');
1378 } 1274 }
1379 1275
1380 @failingTest 1276 @failingTest
1381 test_initializer_prefix_incDec() async { 1277 test_initializer_prefix_incDec() async {
1382 var library = await _encodeDecodeLibrary(r''' 1278 var library = await _encodeDecodeLibrary(r'''
1383 var vInt = 1; 1279 var vInt = 1;
1384 var vDouble = 2.0; 1280 var vDouble = 2.0;
1385 var vIncInt = ++vInt; 1281 var vIncInt = ++vInt;
1386 var vDecInt = --vInt; 1282 var vDecInt = --vInt;
1387 var vIncDouble = ++vDouble; 1283 var vIncDouble = ++vDouble;
1388 var vDecInt = --vDouble; 1284 var vDecInt = --vDouble;
1389 '''); 1285 ''');
1390 checkElementText( 1286 checkElementText(library, r'''
1391 library,
1392 r'''
1393 int vInt; 1287 int vInt;
1394 double vDouble; 1288 double vDouble;
1395 int vIncInt; 1289 int vIncInt;
1396 int vDecInt; 1290 int vDecInt;
1397 double vIncDouble; 1291 double vIncDouble;
1398 double vDecInt; 1292 double vDecInt;
1399 '''); 1293 ''');
1400 } 1294 }
1401 1295
1402 @failingTest 1296 @failingTest
1403 test_initializer_prefix_incDec_custom() async { 1297 test_initializer_prefix_incDec_custom() async {
1404 var library = await _encodeDecodeLibrary(r''' 1298 var library = await _encodeDecodeLibrary(r'''
1405 class A { 1299 class A {
1406 B operator+(int v) => null; 1300 B operator+(int v) => null;
1407 } 1301 }
1408 class B {} 1302 class B {}
1409 var a = new A(); 1303 var a = new A();
1410 var vInc = ++a; 1304 var vInc = ++a;
1411 var vDec = --a; 1305 var vDec = --a;
1412 '''); 1306 ''');
1413 checkElementText( 1307 checkElementText(library, r'''
1414 library,
1415 r'''
1416 A a; 1308 A a;
1417 B vInc; 1309 B vInc;
1418 B vDec; 1310 B vDec;
1419 '''); 1311 ''');
1420 } 1312 }
1421 1313
1422 test_initializer_prefix_not() async { 1314 test_initializer_prefix_not() async {
1423 var library = await _encodeDecodeLibrary(r''' 1315 var library = await _encodeDecodeLibrary(r'''
1424 var vNot = !true; 1316 var vNot = !true;
1425 '''); 1317 ''');
1426 checkElementText( 1318 checkElementText(library, r'''
1427 library,
1428 r'''
1429 bool vNot; 1319 bool vNot;
1430 '''); 1320 ''');
1431 } 1321 }
1432 1322
1433 test_initializer_prefix_other() async { 1323 test_initializer_prefix_other() async {
1434 var library = await _encodeDecodeLibrary(r''' 1324 var library = await _encodeDecodeLibrary(r'''
1435 var vNegateInt = -1; 1325 var vNegateInt = -1;
1436 var vNegateDouble = -1.0; 1326 var vNegateDouble = -1.0;
1437 var vComplement = ~1; 1327 var vComplement = ~1;
1438 '''); 1328 ''');
1439 checkElementText( 1329 checkElementText(library, r'''
1440 library,
1441 r'''
1442 int vNegateInt; 1330 int vNegateInt;
1443 double vNegateDouble; 1331 double vNegateDouble;
1444 int vComplement; 1332 int vComplement;
1445 '''); 1333 ''');
1446 } 1334 }
1447 1335
1448 test_initializer_relational() async { 1336 test_initializer_relational() async {
1449 var library = await _encodeDecodeLibrary(r''' 1337 var library = await _encodeDecodeLibrary(r'''
1450 var vLess = 1 < 2; 1338 var vLess = 1 < 2;
1451 var vLessOrEqual = 1 <= 2; 1339 var vLessOrEqual = 1 <= 2;
1452 var vGreater = 1 > 2; 1340 var vGreater = 1 > 2;
1453 var vGreaterOrEqual = 1 >= 2; 1341 var vGreaterOrEqual = 1 >= 2;
1454 '''); 1342 ''');
1455 checkElementText( 1343 checkElementText(library, r'''
1456 library,
1457 r'''
1458 bool vLess; 1344 bool vLess;
1459 bool vLessOrEqual; 1345 bool vLessOrEqual;
1460 bool vGreater; 1346 bool vGreater;
1461 bool vGreaterOrEqual; 1347 bool vGreaterOrEqual;
1462 '''); 1348 ''');
1463 } 1349 }
1464 1350
1465 @failingTest 1351 @failingTest
1466 test_initializer_throw() async { 1352 test_initializer_throw() async {
1467 var library = await _encodeDecodeLibrary(r''' 1353 var library = await _encodeDecodeLibrary(r'''
1468 var V = throw 42; 1354 var V = throw 42;
1469 '''); 1355 ''');
1470 checkElementText( 1356 checkElementText(library, r'''
1471 library,
1472 r'''
1473 Null V; 1357 Null V;
1474 '''); 1358 ''');
1475 } 1359 }
1476 1360
1477 test_instanceField_error_noSetterParameter() async { 1361 test_instanceField_error_noSetterParameter() async {
1478 var library = await _encodeDecodeLibrary(r''' 1362 var library = await _encodeDecodeLibrary(r'''
1479 abstract class A { 1363 abstract class A {
1480 int x; 1364 int x;
1481 } 1365 }
1482 class B implements A { 1366 class B implements A {
1483 set x() {} 1367 set x() {}
1484 } 1368 }
1485 '''); 1369 ''');
1486 checkElementText( 1370 checkElementText(library, r'''
1487 library,
1488 r'''
1489 abstract class A { 1371 abstract class A {
1490 int x; 1372 int x;
1491 } 1373 }
1492 class B implements A { 1374 class B implements A {
1493 void set x() {} 1375 void set x() {}
1494 } 1376 }
1495 '''); 1377 ''');
1496 } 1378 }
1497 1379
1498 test_instanceField_fieldFormal() async { 1380 test_instanceField_fieldFormal() async {
1499 var library = await _encodeDecodeLibrary(r''' 1381 var library = await _encodeDecodeLibrary(r'''
1500 class A { 1382 class A {
1501 var f = 0; 1383 var f = 0;
1502 A([this.f = 'hello']); 1384 A([this.f = 'hello']);
1503 } 1385 }
1504 '''); 1386 ''');
1505 checkElementText( 1387 checkElementText(library, r'''
1506 library,
1507 r'''
1508 class A { 1388 class A {
1509 int f; 1389 int f;
1510 A([int this.f]); 1390 A([int this.f]);
1511 } 1391 }
1512 '''); 1392 ''');
1513 } 1393 }
1514 1394
1515 test_instanceField_fromField() async { 1395 test_instanceField_fromField() async {
1516 var library = await _encodeDecodeLibrary(r''' 1396 var library = await _encodeDecodeLibrary(r'''
1517 abstract class A { 1397 abstract class A {
(...skipping 28 matching lines...) Expand all
1546 1426
1547 test_instanceField_fromField_explicitDynamic() async { 1427 test_instanceField_fromField_explicitDynamic() async {
1548 var library = await _encodeDecodeLibrary(r''' 1428 var library = await _encodeDecodeLibrary(r'''
1549 abstract class A { 1429 abstract class A {
1550 dynamic x; 1430 dynamic x;
1551 } 1431 }
1552 class B implements A { 1432 class B implements A {
1553 var x = 1; 1433 var x = 1;
1554 } 1434 }
1555 '''); 1435 ''');
1556 checkElementText( 1436 checkElementText(library, r'''
1557 library,
1558 r'''
1559 abstract class A { 1437 abstract class A {
1560 dynamic x; 1438 dynamic x;
1561 } 1439 }
1562 class B implements A { 1440 class B implements A {
1563 dynamic x; 1441 dynamic x;
1564 } 1442 }
1565 '''); 1443 ''');
1566 } 1444 }
1567 1445
1568 test_instanceField_fromField_generic() async { 1446 test_instanceField_fromField_generic() async {
(...skipping 30 matching lines...) Expand all
1599 1477
1600 test_instanceField_fromField_implicitDynamic() async { 1478 test_instanceField_fromField_implicitDynamic() async {
1601 var library = await _encodeDecodeLibrary(r''' 1479 var library = await _encodeDecodeLibrary(r'''
1602 abstract class A { 1480 abstract class A {
1603 var x; 1481 var x;
1604 } 1482 }
1605 class B implements A { 1483 class B implements A {
1606 var x = 1; 1484 var x = 1;
1607 } 1485 }
1608 '''); 1486 ''');
1609 checkElementText( 1487 checkElementText(library, r'''
1610 library,
1611 r'''
1612 abstract class A { 1488 abstract class A {
1613 dynamic x; 1489 dynamic x;
1614 } 1490 }
1615 class B implements A { 1491 class B implements A {
1616 dynamic x; 1492 dynamic x;
1617 } 1493 }
1618 '''); 1494 ''');
1619 } 1495 }
1620 1496
1621 test_instanceField_fromField_narrowType() async { 1497 test_instanceField_fromField_narrowType() async {
1622 var library = await _encodeDecodeLibrary(r''' 1498 var library = await _encodeDecodeLibrary(r'''
1623 abstract class A { 1499 abstract class A {
1624 num x; 1500 num x;
1625 } 1501 }
1626 class B implements A { 1502 class B implements A {
1627 var x = 1; 1503 var x = 1;
1628 } 1504 }
1629 '''); 1505 ''');
1630 checkElementText( 1506 checkElementText(library, r'''
1631 library,
1632 r'''
1633 abstract class A { 1507 abstract class A {
1634 num x; 1508 num x;
1635 } 1509 }
1636 class B implements A { 1510 class B implements A {
1637 num x; 1511 num x;
1638 } 1512 }
1639 '''); 1513 ''');
1640 } 1514 }
1641 1515
1642 test_instanceField_fromGetter() async { 1516 test_instanceField_fromGetter() async {
1643 var library = await _encodeDecodeLibrary(r''' 1517 var library = await _encodeDecodeLibrary(r'''
1644 abstract class A { 1518 abstract class A {
1645 int get x; 1519 int get x;
1646 int get y; 1520 int get y;
1647 int get z; 1521 int get z;
1648 } 1522 }
1649 class B implements A { 1523 class B implements A {
1650 var x; 1524 var x;
1651 get y => null; 1525 get y => null;
1652 set z(_) {} 1526 set z(_) {}
1653 } 1527 }
1654 '''); 1528 ''');
1655 checkElementText( 1529 checkElementText(library, r'''
1656 library,
1657 r'''
1658 abstract class A { 1530 abstract class A {
1659 int get x; 1531 int get x;
1660 int get y; 1532 int get y;
1661 int get z; 1533 int get z;
1662 } 1534 }
1663 class B implements A { 1535 class B implements A {
1664 int x; 1536 int x;
1665 int get y {} 1537 int get y {}
1666 void set z(int _) {} 1538 void set z(int _) {}
1667 } 1539 }
1668 '''); 1540 ''');
1669 } 1541 }
1670 1542
1671 test_instanceField_fromGetter_generic() async { 1543 test_instanceField_fromGetter_generic() async {
1672 var library = await _encodeDecodeLibrary(r''' 1544 var library = await _encodeDecodeLibrary(r'''
1673 abstract class A<E> { 1545 abstract class A<E> {
1674 E get x; 1546 E get x;
1675 E get y; 1547 E get y;
1676 E get z; 1548 E get z;
1677 } 1549 }
1678 class B<T> implements A<T> { 1550 class B<T> implements A<T> {
1679 var x; 1551 var x;
1680 get y => null; 1552 get y => null;
1681 set z(_) {} 1553 set z(_) {}
1682 } 1554 }
1683 '''); 1555 ''');
1684 checkElementText( 1556 checkElementText(library, r'''
1685 library,
1686 r'''
1687 abstract class A<E> { 1557 abstract class A<E> {
1688 E get x; 1558 E get x;
1689 E get y; 1559 E get y;
1690 E get z; 1560 E get z;
1691 } 1561 }
1692 class B<T> implements A<T> { 1562 class B<T> implements A<T> {
1693 T x; 1563 T x;
1694 T get y {} 1564 T get y {}
1695 void set z(T _) {} 1565 void set z(T _) {}
1696 } 1566 }
1697 '''); 1567 ''');
1698 } 1568 }
1699 1569
1700 test_instanceField_fromGetter_multiple_different() async { 1570 test_instanceField_fromGetter_multiple_different() async {
1701 var library = await _encodeDecodeLibrary(r''' 1571 var library = await _encodeDecodeLibrary(r'''
1702 abstract class A { 1572 abstract class A {
1703 int get x; 1573 int get x;
1704 } 1574 }
1705 abstract class B { 1575 abstract class B {
1706 String get x; 1576 String get x;
1707 } 1577 }
1708 class C implements A, B { 1578 class C implements A, B {
1709 get x => null; 1579 get x => null;
1710 } 1580 }
1711 '''); 1581 ''');
1712 // TODO(scheglov) test for inference failure error 1582 // TODO(scheglov) test for inference failure error
1713 checkElementText( 1583 checkElementText(library, r'''
1714 library,
1715 r'''
1716 abstract class A { 1584 abstract class A {
1717 int get x; 1585 int get x;
1718 } 1586 }
1719 abstract class B { 1587 abstract class B {
1720 String get x; 1588 String get x;
1721 } 1589 }
1722 class C implements A, B { 1590 class C implements A, B {
1723 dynamic get x {} 1591 dynamic get x {}
1724 } 1592 }
1725 '''); 1593 ''');
1726 } 1594 }
1727 1595
1728 test_instanceField_fromGetter_multiple_different_dynamic() async { 1596 test_instanceField_fromGetter_multiple_different_dynamic() async {
1729 var library = await _encodeDecodeLibrary(r''' 1597 var library = await _encodeDecodeLibrary(r'''
1730 abstract class A { 1598 abstract class A {
1731 int get x; 1599 int get x;
1732 } 1600 }
1733 abstract class B { 1601 abstract class B {
1734 dynamic get x; 1602 dynamic get x;
1735 } 1603 }
1736 class C implements A, B { 1604 class C implements A, B {
1737 get x => null; 1605 get x => null;
1738 } 1606 }
1739 '''); 1607 ''');
1740 // TODO(scheglov) test for inference failure error 1608 // TODO(scheglov) test for inference failure error
1741 checkElementText( 1609 checkElementText(library, r'''
1742 library,
1743 r'''
1744 abstract class A { 1610 abstract class A {
1745 int get x; 1611 int get x;
1746 } 1612 }
1747 abstract class B { 1613 abstract class B {
1748 dynamic get x; 1614 dynamic get x;
1749 } 1615 }
1750 class C implements A, B { 1616 class C implements A, B {
1751 dynamic get x {} 1617 dynamic get x {}
1752 } 1618 }
1753 '''); 1619 ''');
1754 } 1620 }
1755 1621
1756 test_instanceField_fromGetter_multiple_different_generic() async { 1622 test_instanceField_fromGetter_multiple_different_generic() async {
1757 var library = await _encodeDecodeLibrary(r''' 1623 var library = await _encodeDecodeLibrary(r'''
1758 abstract class A<T> { 1624 abstract class A<T> {
1759 T get x; 1625 T get x;
1760 } 1626 }
1761 abstract class B<T> { 1627 abstract class B<T> {
1762 T get x; 1628 T get x;
1763 } 1629 }
1764 class C implements A<int>, B<String> { 1630 class C implements A<int>, B<String> {
1765 get x => null; 1631 get x => null;
1766 } 1632 }
1767 '''); 1633 ''');
1768 // TODO(scheglov) test for inference failure error 1634 // TODO(scheglov) test for inference failure error
1769 checkElementText( 1635 checkElementText(library, r'''
1770 library,
1771 r'''
1772 abstract class A<T> { 1636 abstract class A<T> {
1773 T get x; 1637 T get x;
1774 } 1638 }
1775 abstract class B<T> { 1639 abstract class B<T> {
1776 T get x; 1640 T get x;
1777 } 1641 }
1778 class C implements A<int>, B<String> { 1642 class C implements A<int>, B<String> {
1779 dynamic get x {} 1643 dynamic get x {}
1780 } 1644 }
1781 '''); 1645 ''');
1782 } 1646 }
1783 1647
1784 test_instanceField_fromGetter_multiple_same() async { 1648 test_instanceField_fromGetter_multiple_same() async {
1785 var library = await _encodeDecodeLibrary(r''' 1649 var library = await _encodeDecodeLibrary(r'''
1786 abstract class A { 1650 abstract class A {
1787 int get x; 1651 int get x;
1788 } 1652 }
1789 abstract class B { 1653 abstract class B {
1790 int get x; 1654 int get x;
1791 } 1655 }
1792 class C implements A, B { 1656 class C implements A, B {
1793 get x => null; 1657 get x => null;
1794 } 1658 }
1795 '''); 1659 ''');
1796 checkElementText( 1660 checkElementText(library, r'''
1797 library,
1798 r'''
1799 abstract class A { 1661 abstract class A {
1800 int get x; 1662 int get x;
1801 } 1663 }
1802 abstract class B { 1664 abstract class B {
1803 int get x; 1665 int get x;
1804 } 1666 }
1805 class C implements A, B { 1667 class C implements A, B {
1806 int get x {} 1668 int get x {}
1807 } 1669 }
1808 '''); 1670 ''');
1809 } 1671 }
1810 1672
1811 test_instanceField_fromGetterSetter_different_field() async { 1673 test_instanceField_fromGetterSetter_different_field() async {
1812 var library = await _encodeDecodeLibrary(r''' 1674 var library = await _encodeDecodeLibrary(r'''
1813 abstract class A { 1675 abstract class A {
1814 int get x; 1676 int get x;
1815 int get y; 1677 int get y;
1816 } 1678 }
1817 abstract class B { 1679 abstract class B {
1818 void set x(String _); 1680 void set x(String _);
1819 void set y(String _); 1681 void set y(String _);
1820 } 1682 }
1821 class C implements A, B { 1683 class C implements A, B {
1822 var x; 1684 var x;
1823 final y; 1685 final y;
1824 } 1686 }
1825 '''); 1687 ''');
1826 checkElementText( 1688 checkElementText(library, r'''
1827 library,
1828 r'''
1829 abstract class A { 1689 abstract class A {
1830 int get x; 1690 int get x;
1831 int get y; 1691 int get y;
1832 } 1692 }
1833 abstract class B { 1693 abstract class B {
1834 void set x(String _); 1694 void set x(String _);
1835 void set y(String _); 1695 void set y(String _);
1836 } 1696 }
1837 class C implements A, B { 1697 class C implements A, B {
1838 dynamic x/*error: overrideConflictFieldType*/; 1698 dynamic x/*error: overrideConflictFieldType*/;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1909 abstract class A { 1769 abstract class A {
1910 int get x; 1770 int get x;
1911 } 1771 }
1912 abstract class B { 1772 abstract class B {
1913 void set x(int _); 1773 void set x(int _);
1914 } 1774 }
1915 class C implements A, B { 1775 class C implements A, B {
1916 var x; 1776 var x;
1917 } 1777 }
1918 '''); 1778 ''');
1919 checkElementText( 1779 checkElementText(library, r'''
1920 library,
1921 r'''
1922 abstract class A { 1780 abstract class A {
1923 int get x; 1781 int get x;
1924 } 1782 }
1925 abstract class B { 1783 abstract class B {
1926 void set x(int _); 1784 void set x(int _);
1927 } 1785 }
1928 class C implements A, B { 1786 class C implements A, B {
1929 int x; 1787 int x;
1930 } 1788 }
1931 '''); 1789 ''');
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 void set x(int _); 1857 void set x(int _);
2000 void set y(int _); 1858 void set y(int _);
2001 void set z(int _); 1859 void set z(int _);
2002 } 1860 }
2003 class B implements A { 1861 class B implements A {
2004 var x; 1862 var x;
2005 get y => null; 1863 get y => null;
2006 set z(_) {} 1864 set z(_) {}
2007 } 1865 }
2008 '''); 1866 ''');
2009 checkElementText( 1867 checkElementText(library, r'''
2010 library,
2011 r'''
2012 abstract class A { 1868 abstract class A {
2013 void set x(int _); 1869 void set x(int _);
2014 void set y(int _); 1870 void set y(int _);
2015 void set z(int _); 1871 void set z(int _);
2016 } 1872 }
2017 class B implements A { 1873 class B implements A {
2018 int x; 1874 int x;
2019 int get y {} 1875 int get y {}
2020 void set z(int _) {} 1876 void set z(int _) {}
2021 } 1877 }
2022 '''); 1878 ''');
2023 } 1879 }
2024 1880
2025 test_instanceField_fromSetter_multiple_different() async { 1881 test_instanceField_fromSetter_multiple_different() async {
2026 var library = await _encodeDecodeLibrary(r''' 1882 var library = await _encodeDecodeLibrary(r'''
2027 abstract class A { 1883 abstract class A {
2028 void set x(int _); 1884 void set x(int _);
2029 } 1885 }
2030 abstract class B { 1886 abstract class B {
2031 void set x(String _); 1887 void set x(String _);
2032 } 1888 }
2033 class C implements A, B { 1889 class C implements A, B {
2034 get x => null; 1890 get x => null;
2035 } 1891 }
2036 '''); 1892 ''');
2037 checkElementText( 1893 checkElementText(library, r'''
2038 library,
2039 r'''
2040 abstract class A { 1894 abstract class A {
2041 void set x(int _); 1895 void set x(int _);
2042 } 1896 }
2043 abstract class B { 1897 abstract class B {
2044 void set x(String _); 1898 void set x(String _);
2045 } 1899 }
2046 class C implements A, B { 1900 class C implements A, B {
2047 dynamic get x {} 1901 dynamic get x {}
2048 } 1902 }
2049 '''); 1903 ''');
2050 } 1904 }
2051 1905
2052 test_instanceField_fromSetter_multiple_same() async { 1906 test_instanceField_fromSetter_multiple_same() async {
2053 var library = await _encodeDecodeLibrary(r''' 1907 var library = await _encodeDecodeLibrary(r'''
2054 abstract class A { 1908 abstract class A {
2055 void set x(int _); 1909 void set x(int _);
2056 } 1910 }
2057 abstract class B { 1911 abstract class B {
2058 void set x(int _); 1912 void set x(int _);
2059 } 1913 }
2060 class C implements A, B { 1914 class C implements A, B {
2061 get x => null; 1915 get x => null;
2062 } 1916 }
2063 '''); 1917 ''');
2064 checkElementText( 1918 checkElementText(library, r'''
2065 library,
2066 r'''
2067 abstract class A { 1919 abstract class A {
2068 void set x(int _); 1920 void set x(int _);
2069 } 1921 }
2070 abstract class B { 1922 abstract class B {
2071 void set x(int _); 1923 void set x(int _);
2072 } 1924 }
2073 class C implements A, B { 1925 class C implements A, B {
2074 int get x {} 1926 int get x {}
2075 } 1927 }
2076 '''); 1928 ''');
2077 } 1929 }
2078 1930
2079 test_instanceField_functionTypeAlias_doesNotUseItsTypeParameter() async { 1931 test_instanceField_functionTypeAlias_doesNotUseItsTypeParameter() async {
2080 var library = await _encodeDecodeLibrary(r''' 1932 var library = await _encodeDecodeLibrary(r'''
2081 typedef F<T>(); 1933 typedef F<T>();
2082 1934
2083 class A<T> { 1935 class A<T> {
2084 F<T> get x => null; 1936 F<T> get x => null;
2085 List<F<T>> get y => null; 1937 List<F<T>> get y => null;
2086 } 1938 }
2087 1939
2088 class B extends A<int> { 1940 class B extends A<int> {
2089 get x => null; 1941 get x => null;
2090 get y => null; 1942 get y => null;
2091 } 1943 }
2092 '''); 1944 ''');
2093 checkElementText( 1945 checkElementText(library, r'''
2094 library,
2095 r'''
2096 typedef dynamic F<T>(); 1946 typedef dynamic F<T>();
2097 class A<T> { 1947 class A<T> {
2098 F<T> get x {} 1948 F<T> get x {}
2099 List<F<T>> get y {} 1949 List<F<T>> get y {}
2100 } 1950 }
2101 class B extends A<int> { 1951 class B extends A<int> {
2102 F<int> get x {} 1952 F<int> get x {}
2103 List<F<int>> get y {} 1953 List<F<int>> get y {}
2104 } 1954 }
2105 '''); 1955 ''');
(...skipping 28 matching lines...) Expand all
2134 test_instanceField_inheritsCovariant_fromSetter_setter() async { 1984 test_instanceField_inheritsCovariant_fromSetter_setter() async {
2135 var library = await _encodeDecodeLibrary(r''' 1985 var library = await _encodeDecodeLibrary(r'''
2136 abstract class A { 1986 abstract class A {
2137 num get x; 1987 num get x;
2138 void set x(covariant num _); 1988 void set x(covariant num _);
2139 } 1989 }
2140 class B implements A { 1990 class B implements A {
2141 set x(int _) {} 1991 set x(int _) {}
2142 } 1992 }
2143 '''); 1993 ''');
2144 checkElementText( 1994 checkElementText(library, r'''
2145 library,
2146 r'''
2147 abstract class A { 1995 abstract class A {
2148 num get x; 1996 num get x;
2149 void set x(covariant num _); 1997 void set x(covariant num _);
2150 } 1998 }
2151 class B implements A { 1999 class B implements A {
2152 void set x(covariant int _) {} 2000 void set x(covariant int _) {}
2153 } 2001 }
2154 '''); 2002 ''');
2155 } 2003 }
2156 2004
2157 test_instanceField_initializer() async { 2005 test_instanceField_initializer() async {
2158 var library = await _encodeDecodeLibrary(r''' 2006 var library = await _encodeDecodeLibrary(r'''
2159 class A { 2007 class A {
2160 var t1 = 1; 2008 var t1 = 1;
2161 var t2 = 2.0; 2009 var t2 = 2.0;
2162 var t3 = null; 2010 var t3 = null;
2163 } 2011 }
2164 '''); 2012 ''');
2165 checkElementText( 2013 checkElementText(library, r'''
2166 library,
2167 r'''
2168 class A { 2014 class A {
2169 int t1; 2015 int t1;
2170 double t2; 2016 double t2;
2171 dynamic t3; 2017 dynamic t3;
2172 } 2018 }
2173 '''); 2019 ''');
2174 } 2020 }
2175 2021
2176 test_method_error_conflict_parameterType_generic() async { 2022 test_method_error_conflict_parameterType_generic() async {
2177 var library = await _encodeDecodeLibrary(r''' 2023 var library = await _encodeDecodeLibrary(r'''
2178 class A<T> { 2024 class A<T> {
2179 void m(T a) {} 2025 void m(T a) {}
2180 } 2026 }
2181 class B<E> { 2027 class B<E> {
2182 void m(E a) {} 2028 void m(E a) {}
2183 } 2029 }
2184 class C extends A<int> implements B<double> { 2030 class C extends A<int> implements B<double> {
2185 m(a) {} 2031 m(a) {}
2186 } 2032 }
2187 '''); 2033 ''');
2188 checkElementText( 2034 checkElementText(library, r'''
2189 library,
2190 r'''
2191 class A<T> { 2035 class A<T> {
2192 void m(T a) {} 2036 void m(T a) {}
2193 } 2037 }
2194 class B<E> { 2038 class B<E> {
2195 void m(E a) {} 2039 void m(E a) {}
2196 } 2040 }
2197 class C extends A<int> implements B<double> { 2041 class C extends A<int> implements B<double> {
2198 void m(dynamic a/*error: overrideConflictParameterType*/) {} 2042 void m(dynamic a/*error: overrideConflictParameterType*/) {}
2199 } 2043 }
2200 '''); 2044 ''');
2201 } 2045 }
2202 2046
2203 test_method_error_conflict_parameterType_notGeneric() async { 2047 test_method_error_conflict_parameterType_notGeneric() async {
2204 var library = await _encodeDecodeLibrary(r''' 2048 var library = await _encodeDecodeLibrary(r'''
2205 class A { 2049 class A {
2206 void m(int a) {} 2050 void m(int a) {}
2207 } 2051 }
2208 class B { 2052 class B {
2209 void m(String a) {} 2053 void m(String a) {}
2210 } 2054 }
2211 class C extends A implements B { 2055 class C extends A implements B {
2212 m(a) {} 2056 m(a) {}
2213 } 2057 }
2214 '''); 2058 ''');
2215 checkElementText( 2059 checkElementText(library, r'''
2216 library,
2217 r'''
2218 class A { 2060 class A {
2219 void m(int a) {} 2061 void m(int a) {}
2220 } 2062 }
2221 class B { 2063 class B {
2222 void m(String a) {} 2064 void m(String a) {}
2223 } 2065 }
2224 class C extends A implements B { 2066 class C extends A implements B {
2225 void m(dynamic a/*error: overrideConflictParameterType*/) {} 2067 void m(dynamic a/*error: overrideConflictParameterType*/) {}
2226 } 2068 }
2227 '''); 2069 ''');
2228 } 2070 }
2229 2071
2230 test_method_error_conflict_returnType_generic() async { 2072 test_method_error_conflict_returnType_generic() async {
2231 var library = await _encodeDecodeLibrary(r''' 2073 var library = await _encodeDecodeLibrary(r'''
2232 class A<K, V> { 2074 class A<K, V> {
2233 V m(K a) {} 2075 V m(K a) {}
2234 } 2076 }
2235 class B<T> { 2077 class B<T> {
2236 T m(int a) {} 2078 T m(int a) {}
2237 } 2079 }
2238 class C extends A<int, String> implements B<double> { 2080 class C extends A<int, String> implements B<double> {
2239 m(a) {} 2081 m(a) {}
2240 } 2082 }
2241 '''); 2083 ''');
2242 // TODO(scheglov) test for inference failure error 2084 // TODO(scheglov) test for inference failure error
2243 checkElementText( 2085 checkElementText(library, r'''
2244 library,
2245 r'''
2246 class A<K, V> { 2086 class A<K, V> {
2247 V m(K a) {} 2087 V m(K a) {}
2248 } 2088 }
2249 class B<T> { 2089 class B<T> {
2250 T m(int a) {} 2090 T m(int a) {}
2251 } 2091 }
2252 class C extends A<int, String> implements B<double> { 2092 class C extends A<int, String> implements B<double> {
2253 dynamic m(int a) {} 2093 dynamic m(int a) {}
2254 } 2094 }
2255 '''); 2095 ''');
2256 } 2096 }
2257 2097
2258 test_method_error_conflict_returnType_notGeneric() async { 2098 test_method_error_conflict_returnType_notGeneric() async {
2259 var library = await _encodeDecodeLibrary(r''' 2099 var library = await _encodeDecodeLibrary(r'''
2260 class A { 2100 class A {
2261 int m() {} 2101 int m() {}
2262 } 2102 }
2263 class B { 2103 class B {
2264 String m() {} 2104 String m() {}
2265 } 2105 }
2266 class C extends A implements B { 2106 class C extends A implements B {
2267 m() {} 2107 m() {}
2268 } 2108 }
2269 '''); 2109 ''');
2270 // TODO(scheglov) test for inference failure error 2110 // TODO(scheglov) test for inference failure error
2271 checkElementText( 2111 checkElementText(library, r'''
2272 library,
2273 r'''
2274 class A { 2112 class A {
2275 int m() {} 2113 int m() {}
2276 } 2114 }
2277 class B { 2115 class B {
2278 String m() {} 2116 String m() {}
2279 } 2117 }
2280 class C extends A implements B { 2118 class C extends A implements B {
2281 dynamic m() {} 2119 dynamic m() {}
2282 } 2120 }
2283 '''); 2121 ''');
2284 } 2122 }
2285 2123
2286 test_method_error_hasMethod_noParameter_required() async { 2124 test_method_error_hasMethod_noParameter_required() async {
2287 var library = await _encodeDecodeLibrary(r''' 2125 var library = await _encodeDecodeLibrary(r'''
2288 class A { 2126 class A {
2289 void m(int a) {} 2127 void m(int a) {}
2290 } 2128 }
2291 class B extends A { 2129 class B extends A {
2292 m(a, b) {} 2130 m(a, b) {}
2293 } 2131 }
2294 '''); 2132 ''');
2295 // It's an error to add a new required parameter, but it is not a 2133 // It's an error to add a new required parameter, but it is not a
2296 // top-level type inference error. 2134 // top-level type inference error.
2297 checkElementText( 2135 checkElementText(library, r'''
2298 library,
2299 r'''
2300 class A { 2136 class A {
2301 void m(int a) {} 2137 void m(int a) {}
2302 } 2138 }
2303 class B extends A { 2139 class B extends A {
2304 void m(int a, dynamic b) {} 2140 void m(int a, dynamic b) {}
2305 } 2141 }
2306 '''); 2142 ''');
2307 } 2143 }
2308 2144
2309 test_method_missing_hasMethod_noParameter_named() async { 2145 test_method_missing_hasMethod_noParameter_named() async {
2310 var library = await _encodeDecodeLibrary(r''' 2146 var library = await _encodeDecodeLibrary(r'''
2311 class A { 2147 class A {
2312 void m(int a) {} 2148 void m(int a) {}
2313 } 2149 }
2314 class B extends A { 2150 class B extends A {
2315 m(a, {b}) {} 2151 m(a, {b}) {}
2316 } 2152 }
2317 '''); 2153 ''');
2318 checkElementText( 2154 checkElementText(library, r'''
2319 library,
2320 r'''
2321 class A { 2155 class A {
2322 void m(int a) {} 2156 void m(int a) {}
2323 } 2157 }
2324 class B extends A { 2158 class B extends A {
2325 void m(int a, {dynamic b}) {} 2159 void m(int a, {dynamic b}) {}
2326 } 2160 }
2327 '''); 2161 ''');
2328 } 2162 }
2329 2163
2330 test_method_missing_hasMethod_noParameter_optional() async { 2164 test_method_missing_hasMethod_noParameter_optional() async {
2331 var library = await _encodeDecodeLibrary(r''' 2165 var library = await _encodeDecodeLibrary(r'''
2332 class A { 2166 class A {
2333 void m(int a) {} 2167 void m(int a) {}
2334 } 2168 }
2335 class B extends A { 2169 class B extends A {
2336 m(a, [b]) {} 2170 m(a, [b]) {}
2337 } 2171 }
2338 '''); 2172 ''');
2339 checkElementText( 2173 checkElementText(library, r'''
2340 library,
2341 r'''
2342 class A { 2174 class A {
2343 void m(int a) {} 2175 void m(int a) {}
2344 } 2176 }
2345 class B extends A { 2177 class B extends A {
2346 void m(int a, [dynamic b]) {} 2178 void m(int a, [dynamic b]) {}
2347 } 2179 }
2348 '''); 2180 ''');
2349 } 2181 }
2350 2182
2351 test_method_missing_hasMethod_withoutTypes() async { 2183 test_method_missing_hasMethod_withoutTypes() async {
2352 var library = await _encodeDecodeLibrary(r''' 2184 var library = await _encodeDecodeLibrary(r'''
2353 class A { 2185 class A {
2354 m(a) {} 2186 m(a) {}
2355 } 2187 }
2356 class B extends A { 2188 class B extends A {
2357 m(a) {} 2189 m(a) {}
2358 } 2190 }
2359 '''); 2191 ''');
2360 checkElementText( 2192 checkElementText(library, r'''
2361 library,
2362 r'''
2363 class A { 2193 class A {
2364 dynamic m(dynamic a) {} 2194 dynamic m(dynamic a) {}
2365 } 2195 }
2366 class B extends A { 2196 class B extends A {
2367 dynamic m(dynamic a) {} 2197 dynamic m(dynamic a) {}
2368 } 2198 }
2369 '''); 2199 ''');
2370 } 2200 }
2371 2201
2372 test_method_missing_noMember() async { 2202 test_method_missing_noMember() async {
2373 var library = await _encodeDecodeLibrary(r''' 2203 var library = await _encodeDecodeLibrary(r'''
2374 class A { 2204 class A {
2375 int foo(String a) => null; 2205 int foo(String a) => null;
2376 } 2206 }
2377 class B extends A { 2207 class B extends A {
2378 m(a) {} 2208 m(a) {}
2379 } 2209 }
2380 '''); 2210 ''');
2381 checkElementText( 2211 checkElementText(library, r'''
2382 library,
2383 r'''
2384 class A { 2212 class A {
2385 int foo(String a) {} 2213 int foo(String a) {}
2386 } 2214 }
2387 class B extends A { 2215 class B extends A {
2388 dynamic m(dynamic a) {} 2216 dynamic m(dynamic a) {}
2389 } 2217 }
2390 '''); 2218 ''');
2391 } 2219 }
2392 2220
2393 test_method_missing_notMethod() async { 2221 test_method_missing_notMethod() async {
2394 var library = await _encodeDecodeLibrary(r''' 2222 var library = await _encodeDecodeLibrary(r'''
2395 class A { 2223 class A {
2396 int m = 42; 2224 int m = 42;
2397 } 2225 }
2398 class B extends A { 2226 class B extends A {
2399 m(a) {} 2227 m(a) {}
2400 } 2228 }
2401 '''); 2229 ''');
2402 checkElementText( 2230 checkElementText(library, r'''
2403 library,
2404 r'''
2405 class A { 2231 class A {
2406 int m; 2232 int m;
2407 } 2233 }
2408 class B extends A { 2234 class B extends A {
2409 dynamic m(dynamic a) {} 2235 dynamic m(dynamic a) {}
2410 } 2236 }
2411 '''); 2237 ''');
2412 } 2238 }
2413 2239
2414 test_method_OK_sequence_extendsExtends_generic() async { 2240 test_method_OK_sequence_extendsExtends_generic() async {
2415 var library = await _encodeDecodeLibrary(r''' 2241 var library = await _encodeDecodeLibrary(r'''
2416 class A<K, V> { 2242 class A<K, V> {
2417 V m(K a) {} 2243 V m(K a) {}
2418 } 2244 }
2419 class B<T> extends A<int, T> {} 2245 class B<T> extends A<int, T> {}
2420 class C extends B<String> { 2246 class C extends B<String> {
2421 m(a) {} 2247 m(a) {}
2422 } 2248 }
2423 '''); 2249 ''');
2424 checkElementText( 2250 checkElementText(library, r'''
2425 library,
2426 r'''
2427 class A<K, V> { 2251 class A<K, V> {
2428 V m(K a) {} 2252 V m(K a) {}
2429 } 2253 }
2430 class B<T> extends A<int, T> { 2254 class B<T> extends A<int, T> {
2431 } 2255 }
2432 class C extends B<String> { 2256 class C extends B<String> {
2433 String m(int a) {} 2257 String m(int a) {}
2434 } 2258 }
2435 '''); 2259 ''');
2436 } 2260 }
2437 2261
2438 test_method_OK_sequence_inferMiddle_extendsExtends() async { 2262 test_method_OK_sequence_inferMiddle_extendsExtends() async {
2439 var library = await _encodeDecodeLibrary(r''' 2263 var library = await _encodeDecodeLibrary(r'''
2440 class A { 2264 class A {
2441 String m(int a) {} 2265 String m(int a) {}
2442 } 2266 }
2443 class B extends A { 2267 class B extends A {
2444 m(a) {} 2268 m(a) {}
2445 } 2269 }
2446 class C extends B { 2270 class C extends B {
2447 m(a) {} 2271 m(a) {}
2448 } 2272 }
2449 '''); 2273 ''');
2450 checkElementText( 2274 checkElementText(library, r'''
2451 library,
2452 r'''
2453 class A { 2275 class A {
2454 String m(int a) {} 2276 String m(int a) {}
2455 } 2277 }
2456 class B extends A { 2278 class B extends A {
2457 String m(int a) {} 2279 String m(int a) {}
2458 } 2280 }
2459 class C extends B { 2281 class C extends B {
2460 String m(int a) {} 2282 String m(int a) {}
2461 } 2283 }
2462 '''); 2284 ''');
2463 } 2285 }
2464 2286
2465 test_method_OK_sequence_inferMiddle_extendsImplements() async { 2287 test_method_OK_sequence_inferMiddle_extendsImplements() async {
2466 var library = await _encodeDecodeLibrary(r''' 2288 var library = await _encodeDecodeLibrary(r'''
2467 class A { 2289 class A {
2468 String m(int a) {} 2290 String m(int a) {}
2469 } 2291 }
2470 class B implements A { 2292 class B implements A {
2471 m(a) {} 2293 m(a) {}
2472 } 2294 }
2473 class C extends B { 2295 class C extends B {
2474 m(a) {} 2296 m(a) {}
2475 } 2297 }
2476 '''); 2298 ''');
2477 checkElementText( 2299 checkElementText(library, r'''
2478 library,
2479 r'''
2480 class A { 2300 class A {
2481 String m(int a) {} 2301 String m(int a) {}
2482 } 2302 }
2483 class B implements A { 2303 class B implements A {
2484 String m(int a) {} 2304 String m(int a) {}
2485 } 2305 }
2486 class C extends B { 2306 class C extends B {
2487 String m(int a) {} 2307 String m(int a) {}
2488 } 2308 }
2489 '''); 2309 ''');
2490 } 2310 }
2491 2311
2492 test_method_OK_sequence_inferMiddle_extendsWith() async { 2312 test_method_OK_sequence_inferMiddle_extendsWith() async {
2493 var library = await _encodeDecodeLibrary(r''' 2313 var library = await _encodeDecodeLibrary(r'''
2494 class A { 2314 class A {
2495 String m(int a) {} 2315 String m(int a) {}
2496 } 2316 }
2497 class B extends Object with A { 2317 class B extends Object with A {
2498 m(a) {} 2318 m(a) {}
2499 } 2319 }
2500 class C extends B { 2320 class C extends B {
2501 m(a) {} 2321 m(a) {}
2502 } 2322 }
2503 '''); 2323 ''');
2504 checkElementText( 2324 checkElementText(library, r'''
2505 library,
2506 r'''
2507 class A { 2325 class A {
2508 String m(int a) {} 2326 String m(int a) {}
2509 } 2327 }
2510 class B extends Object with A { 2328 class B extends Object with A {
2511 synthetic B(); 2329 synthetic B();
2512 String m(int a) {} 2330 String m(int a) {}
2513 } 2331 }
2514 class C extends B { 2332 class C extends B {
2515 String m(int a) {} 2333 String m(int a) {}
2516 } 2334 }
2517 '''); 2335 ''');
2518 } 2336 }
2519 2337
2520 test_method_OK_single_extends_direct_generic() async { 2338 test_method_OK_single_extends_direct_generic() async {
2521 var library = await _encodeDecodeLibrary(r''' 2339 var library = await _encodeDecodeLibrary(r'''
2522 class A<K, V> { 2340 class A<K, V> {
2523 V m(K a, double b) {} 2341 V m(K a, double b) {}
2524 } 2342 }
2525 class B extends A<int, String> { 2343 class B extends A<int, String> {
2526 m(a, b) {} 2344 m(a, b) {}
2527 } 2345 }
2528 '''); 2346 ''');
2529 checkElementText( 2347 checkElementText(library, r'''
2530 library,
2531 r'''
2532 class A<K, V> { 2348 class A<K, V> {
2533 V m(K a, double b) {} 2349 V m(K a, double b) {}
2534 } 2350 }
2535 class B extends A<int, String> { 2351 class B extends A<int, String> {
2536 String m(int a, double b) {} 2352 String m(int a, double b) {}
2537 } 2353 }
2538 '''); 2354 ''');
2539 } 2355 }
2540 2356
2541 test_method_OK_single_extends_direct_notGeneric() async { 2357 test_method_OK_single_extends_direct_notGeneric() async {
2542 var library = await _encodeDecodeLibrary(r''' 2358 var library = await _encodeDecodeLibrary(r'''
2543 class A { 2359 class A {
2544 String m(int a) {} 2360 String m(int a) {}
2545 } 2361 }
2546 class B extends A { 2362 class B extends A {
2547 m(a) {} 2363 m(a) {}
2548 } 2364 }
2549 '''); 2365 ''');
2550 checkElementText( 2366 checkElementText(library, r'''
2551 library,
2552 r'''
2553 class A { 2367 class A {
2554 String m(int a) {} 2368 String m(int a) {}
2555 } 2369 }
2556 class B extends A { 2370 class B extends A {
2557 String m(int a) {} 2371 String m(int a) {}
2558 } 2372 }
2559 '''); 2373 ''');
2560 } 2374 }
2561 2375
2562 test_method_OK_single_extends_direct_notGeneric_named() async { 2376 test_method_OK_single_extends_direct_notGeneric_named() async {
2563 var library = await _encodeDecodeLibrary(r''' 2377 var library = await _encodeDecodeLibrary(r'''
2564 class A { 2378 class A {
2565 String m(int a, {double b}) {} 2379 String m(int a, {double b}) {}
2566 } 2380 }
2567 class B extends A { 2381 class B extends A {
2568 m(a, {b}) {} 2382 m(a, {b}) {}
2569 } 2383 }
2570 '''); 2384 ''');
2571 checkElementText( 2385 checkElementText(library, r'''
2572 library,
2573 r'''
2574 class A { 2386 class A {
2575 String m(int a, {double b}) {} 2387 String m(int a, {double b}) {}
2576 } 2388 }
2577 class B extends A { 2389 class B extends A {
2578 String m(int a, {double b}) {} 2390 String m(int a, {double b}) {}
2579 } 2391 }
2580 '''); 2392 ''');
2581 } 2393 }
2582 2394
2583 test_method_OK_single_extends_direct_notGeneric_positional() async { 2395 test_method_OK_single_extends_direct_notGeneric_positional() async {
2584 var library = await _encodeDecodeLibrary(r''' 2396 var library = await _encodeDecodeLibrary(r'''
2585 class A { 2397 class A {
2586 String m(int a, [double b]) {} 2398 String m(int a, [double b]) {}
2587 } 2399 }
2588 class B extends A { 2400 class B extends A {
2589 m(a, [b]) {} 2401 m(a, [b]) {}
2590 } 2402 }
2591 '''); 2403 ''');
2592 checkElementText( 2404 checkElementText(library, r'''
2593 library,
2594 r'''
2595 class A { 2405 class A {
2596 String m(int a, [double b]) {} 2406 String m(int a, [double b]) {}
2597 } 2407 }
2598 class B extends A { 2408 class B extends A {
2599 String m(int a, [double b]) {} 2409 String m(int a, [double b]) {}
2600 } 2410 }
2601 '''); 2411 ''');
2602 } 2412 }
2603 2413
2604 test_method_OK_single_extends_indirect_generic() async { 2414 test_method_OK_single_extends_indirect_generic() async {
2605 var library = await _encodeDecodeLibrary(r''' 2415 var library = await _encodeDecodeLibrary(r'''
2606 class A<K, V> { 2416 class A<K, V> {
2607 V m(K a) {} 2417 V m(K a) {}
2608 } 2418 }
2609 class B<T> extends A<int, T> {} 2419 class B<T> extends A<int, T> {}
2610 class C extends B<String> { 2420 class C extends B<String> {
2611 m(a) {} 2421 m(a) {}
2612 } 2422 }
2613 '''); 2423 ''');
2614 checkElementText( 2424 checkElementText(library, r'''
2615 library,
2616 r'''
2617 class A<K, V> { 2425 class A<K, V> {
2618 V m(K a) {} 2426 V m(K a) {}
2619 } 2427 }
2620 class B<T> extends A<int, T> { 2428 class B<T> extends A<int, T> {
2621 } 2429 }
2622 class C extends B<String> { 2430 class C extends B<String> {
2623 String m(int a) {} 2431 String m(int a) {}
2624 } 2432 }
2625 '''); 2433 ''');
2626 } 2434 }
2627 2435
2628 test_method_OK_single_implements_direct_generic() async { 2436 test_method_OK_single_implements_direct_generic() async {
2629 var library = await _encodeDecodeLibrary(r''' 2437 var library = await _encodeDecodeLibrary(r'''
2630 abstract class A<K, V> { 2438 abstract class A<K, V> {
2631 V m(K a); 2439 V m(K a);
2632 } 2440 }
2633 class B implements A<int, String> { 2441 class B implements A<int, String> {
2634 m(a) {} 2442 m(a) {}
2635 } 2443 }
2636 '''); 2444 ''');
2637 checkElementText( 2445 checkElementText(library, r'''
2638 library,
2639 r'''
2640 abstract class A<K, V> { 2446 abstract class A<K, V> {
2641 V m(K a); 2447 V m(K a);
2642 } 2448 }
2643 class B implements A<int, String> { 2449 class B implements A<int, String> {
2644 String m(int a) {} 2450 String m(int a) {}
2645 } 2451 }
2646 '''); 2452 ''');
2647 } 2453 }
2648 2454
2649 test_method_OK_single_implements_direct_notGeneric() async { 2455 test_method_OK_single_implements_direct_notGeneric() async {
2650 var library = await _encodeDecodeLibrary(r''' 2456 var library = await _encodeDecodeLibrary(r'''
2651 abstract class A { 2457 abstract class A {
2652 String m(int a); 2458 String m(int a);
2653 } 2459 }
2654 class B implements A { 2460 class B implements A {
2655 m(a) {} 2461 m(a) {}
2656 } 2462 }
2657 '''); 2463 ''');
2658 checkElementText( 2464 checkElementText(library, r'''
2659 library,
2660 r'''
2661 abstract class A { 2465 abstract class A {
2662 String m(int a); 2466 String m(int a);
2663 } 2467 }
2664 class B implements A { 2468 class B implements A {
2665 String m(int a) {} 2469 String m(int a) {}
2666 } 2470 }
2667 '''); 2471 ''');
2668 } 2472 }
2669 2473
2670 test_method_OK_single_implements_indirect_generic() async { 2474 test_method_OK_single_implements_indirect_generic() async {
2671 var library = await _encodeDecodeLibrary(r''' 2475 var library = await _encodeDecodeLibrary(r'''
2672 abstract class A<K, V> { 2476 abstract class A<K, V> {
2673 V m(K a); 2477 V m(K a);
2674 } 2478 }
2675 abstract class B<T1, T2> extends A<T2, T1> {} 2479 abstract class B<T1, T2> extends A<T2, T1> {}
2676 class C implements B<int, String> { 2480 class C implements B<int, String> {
2677 m(a) {} 2481 m(a) {}
2678 } 2482 }
2679 '''); 2483 ''');
2680 checkElementText( 2484 checkElementText(library, r'''
2681 library,
2682 r'''
2683 abstract class A<K, V> { 2485 abstract class A<K, V> {
2684 V m(K a); 2486 V m(K a);
2685 } 2487 }
2686 abstract class B<T1, T2> extends A<T2, T1> { 2488 abstract class B<T1, T2> extends A<T2, T1> {
2687 } 2489 }
2688 class C implements B<int, String> { 2490 class C implements B<int, String> {
2689 int m(String a) {} 2491 int m(String a) {}
2690 } 2492 }
2691 '''); 2493 ''');
2692 } 2494 }
2693 2495
2694 test_method_OK_single_private_linkThroughOtherLibraryOfCycle() async { 2496 test_method_OK_single_private_linkThroughOtherLibraryOfCycle() async {
2695 String path = _p('/other.dart'); 2497 String path = _p('/other.dart');
2696 provider.newFile( 2498 provider.newFile(path, r'''
2697 path,
2698 r'''
2699 import 'test.dart'; 2499 import 'test.dart';
2700 class B extends A2 {} 2500 class B extends A2 {}
2701 '''); 2501 ''');
2702 var library = await _encodeDecodeLibrary(r''' 2502 var library = await _encodeDecodeLibrary(r'''
2703 import 'other.dart'; 2503 import 'other.dart';
2704 class A1 { 2504 class A1 {
2705 int _foo() => 1; 2505 int _foo() => 1;
2706 } 2506 }
2707 class A2 extends A1 { 2507 class A2 extends A1 {
2708 _foo() => 2; 2508 _foo() => 2;
2709 } 2509 }
2710 '''); 2510 ''');
2711 checkElementText( 2511 checkElementText(library, r'''
2712 library,
2713 r'''
2714 import 'other.dart'; 2512 import 'other.dart';
2715 class A1 { 2513 class A1 {
2716 int _foo() {} 2514 int _foo() {}
2717 } 2515 }
2718 class A2 extends A1 { 2516 class A2 extends A1 {
2719 int _foo() {} 2517 int _foo() {}
2720 } 2518 }
2721 '''); 2519 ''');
2722 } 2520 }
2723 2521
2724 test_method_OK_single_withExtends_notGeneric() async { 2522 test_method_OK_single_withExtends_notGeneric() async {
2725 var library = await _encodeDecodeLibrary(r''' 2523 var library = await _encodeDecodeLibrary(r'''
2726 class A { 2524 class A {
2727 String m(int a) {} 2525 String m(int a) {}
2728 } 2526 }
2729 class B extends Object with A { 2527 class B extends Object with A {
2730 m(a) {} 2528 m(a) {}
2731 } 2529 }
2732 '''); 2530 ''');
2733 checkElementText( 2531 checkElementText(library, r'''
2734 library,
2735 r'''
2736 class A { 2532 class A {
2737 String m(int a) {} 2533 String m(int a) {}
2738 } 2534 }
2739 class B extends Object with A { 2535 class B extends Object with A {
2740 synthetic B(); 2536 synthetic B();
2741 String m(int a) {} 2537 String m(int a) {}
2742 } 2538 }
2743 '''); 2539 ''');
2744 } 2540 }
2745 2541
2746 test_method_OK_two_extendsImplements_generic() async { 2542 test_method_OK_two_extendsImplements_generic() async {
2747 var library = await _encodeDecodeLibrary(r''' 2543 var library = await _encodeDecodeLibrary(r'''
2748 class A<K, V> { 2544 class A<K, V> {
2749 V m(K a) {} 2545 V m(K a) {}
2750 } 2546 }
2751 class B<T> { 2547 class B<T> {
2752 T m(int a) {} 2548 T m(int a) {}
2753 } 2549 }
2754 class C extends A<int, String> implements B<String> { 2550 class C extends A<int, String> implements B<String> {
2755 m(a) {} 2551 m(a) {}
2756 } 2552 }
2757 '''); 2553 ''');
2758 checkElementText( 2554 checkElementText(library, r'''
2759 library,
2760 r'''
2761 class A<K, V> { 2555 class A<K, V> {
2762 V m(K a) {} 2556 V m(K a) {}
2763 } 2557 }
2764 class B<T> { 2558 class B<T> {
2765 T m(int a) {} 2559 T m(int a) {}
2766 } 2560 }
2767 class C extends A<int, String> implements B<String> { 2561 class C extends A<int, String> implements B<String> {
2768 String m(int a) {} 2562 String m(int a) {}
2769 } 2563 }
2770 '''); 2564 ''');
2771 } 2565 }
2772 2566
2773 test_method_OK_two_extendsImplements_notGeneric() async { 2567 test_method_OK_two_extendsImplements_notGeneric() async {
2774 var library = await _encodeDecodeLibrary(r''' 2568 var library = await _encodeDecodeLibrary(r'''
2775 class A { 2569 class A {
2776 String m(int a) {} 2570 String m(int a) {}
2777 } 2571 }
2778 class B { 2572 class B {
2779 String m(int a) {} 2573 String m(int a) {}
2780 } 2574 }
2781 class C extends A implements B { 2575 class C extends A implements B {
2782 m(a) {} 2576 m(a) {}
2783 } 2577 }
2784 '''); 2578 ''');
2785 checkElementText( 2579 checkElementText(library, r'''
2786 library,
2787 r'''
2788 class A { 2580 class A {
2789 String m(int a) {} 2581 String m(int a) {}
2790 } 2582 }
2791 class B { 2583 class B {
2792 String m(int a) {} 2584 String m(int a) {}
2793 } 2585 }
2794 class C extends A implements B { 2586 class C extends A implements B {
2795 String m(int a) {} 2587 String m(int a) {}
2796 } 2588 }
2797 '''); 2589 ''');
2798 } 2590 }
2799 2591
2800 Future<LibraryElement> _encodeDecodeLibrary(String text) async { 2592 Future<LibraryElement> _encodeDecodeLibrary(String text) async {
2801 String path = _p('/test.dart'); 2593 String path = _p('/test.dart');
2802 provider.newFile(path, text); 2594 provider.newFile(path, text);
2803 UnitElementResult result = await driver.getUnitElement(path); 2595 UnitElementResult result = await driver.getUnitElement(path);
2804 return result.element.library; 2596 return result.element.library;
2805 } 2597 }
2806 2598
2807 String _p(String path) => provider.convertPath(path); 2599 String _p(String path) => provider.convertPath(path);
2808 } 2600 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/summary/summary_common.dart ('k') | pkg/analyzer/test/src/task/dart_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698