OLD | NEW |
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 analyzer.test.src.task.strong.checker_test; | 5 library analyzer.test.src.task.strong.checker_test; |
6 | 6 |
7 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 7 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
8 | 8 |
9 import 'strong_test_helper.dart'; | 9 import 'strong_test_helper.dart'; |
10 | 10 |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 B f1; | 579 B f1; |
580 B f2; | 580 B f2; |
581 B f3; | 581 B f3; |
582 B f4; | 582 B f4; |
583 } | 583 } |
584 | 584 |
585 class Child extends Base { | 585 class Child extends Base { |
586 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/A f1; // invalid
for getter | 586 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/A f1; // invalid
for getter |
587 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/C f2; // invalid
for setter | 587 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/C f2; // invalid
for setter |
588 /*error:INVALID_FIELD_OVERRIDE*/var f3; | 588 /*error:INVALID_FIELD_OVERRIDE*/var f3; |
589 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE,error:INVALID_MET
HOD_OVERRIDE*/dynamic f4; | 589 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/dynamic f4; |
590 } | 590 } |
591 | 591 |
592 class Child2 implements Base { | 592 class Child2 implements Base { |
593 /*error:INVALID_METHOD_OVERRIDE*/A f1; // invalid for getter | 593 /*error:INVALID_METHOD_OVERRIDE*/A f1; // invalid for getter |
594 /*error:INVALID_METHOD_OVERRIDE*/C f2; // invalid for setter | 594 /*error:INVALID_METHOD_OVERRIDE*/C f2; // invalid for setter |
595 var f3; | 595 var f3; |
596 /*error:INVALID_METHOD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/dynamic f4; | 596 /*error:INVALID_METHOD_OVERRIDE*/dynamic f4; |
597 } | 597 } |
598 '''); | 598 '''); |
599 } | 599 } |
600 | 600 |
601 void test_fieldGetterOverride() { | 601 void test_fieldGetterOverride() { |
602 checkFile(''' | 602 checkFile(''' |
603 class A {} | 603 class A {} |
604 class B extends A {} | 604 class B extends A {} |
605 class C extends B {} | 605 class C extends B {} |
606 | 606 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 class Child extends Base { | 664 class Child extends Base { |
665 /*error:INVALID_FIELD_OVERRIDE*/B get f1 => null; | 665 /*error:INVALID_FIELD_OVERRIDE*/B get f1 => null; |
666 /*error:INVALID_FIELD_OVERRIDE*/B get f2 => null; | 666 /*error:INVALID_FIELD_OVERRIDE*/B get f2 => null; |
667 /*error:INVALID_FIELD_OVERRIDE*/B get f3 => null; | 667 /*error:INVALID_FIELD_OVERRIDE*/B get f3 => null; |
668 /*error:INVALID_FIELD_OVERRIDE*/B get f4 => null; | 668 /*error:INVALID_FIELD_OVERRIDE*/B get f4 => null; |
669 /*error:INVALID_FIELD_OVERRIDE*/B get f5 => null; | 669 /*error:INVALID_FIELD_OVERRIDE*/B get f5 => null; |
670 | 670 |
671 /*error:INVALID_FIELD_OVERRIDE*/void set f1(A value) {} | 671 /*error:INVALID_FIELD_OVERRIDE*/void set f1(A value) {} |
672 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/void set f2(C va
lue) {} | 672 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/void set f2(C va
lue) {} |
673 /*error:INVALID_FIELD_OVERRIDE*/void set f3(value) {} | 673 /*error:INVALID_FIELD_OVERRIDE*/void set f3(value) {} |
674 /*error:INVALID_FIELD_OVERRIDE,error:INVALID_METHOD_OVERRIDE*/void set f4(dyna
mic value) {} | 674 /*error:INVALID_FIELD_OVERRIDE*/void set f4(dynamic value) {} |
675 /*error:INVALID_FIELD_OVERRIDE*/set f5(B value) {} | 675 /*error:INVALID_FIELD_OVERRIDE*/set f5(B value) {} |
676 } | 676 } |
677 | 677 |
678 class Child2 implements Base { | 678 class Child2 implements Base { |
679 B get f1 => null; | 679 B get f1 => null; |
680 B get f2 => null; | 680 B get f2 => null; |
681 B get f3 => null; | 681 B get f3 => null; |
682 B get f4 => null; | 682 B get f4 => null; |
683 B get f5 => null; | 683 B get f5 => null; |
684 | 684 |
685 void set f1(A value) {} | 685 void set f1(A value) {} |
686 /*error:INVALID_METHOD_OVERRIDE*/void set f2(C value) {} | 686 /*error:INVALID_METHOD_OVERRIDE*/void set f2(C value) {} |
687 void set f3(value) {} | 687 void set f3(value) {} |
688 /*error:INVALID_METHOD_OVERRIDE*/void set f4(dynamic value) {} | 688 void set f4(dynamic value) {} |
689 set f5(B value) {} | 689 set f5(B value) {} |
690 } | 690 } |
691 '''); | 691 '''); |
692 } | 692 } |
693 | 693 |
694 void test_forInCastsIterateElementToVariable() { | 694 void test_forInCastsIterateElementToVariable() { |
695 checkFile(''' | 695 checkFile(''' |
696 main() { | 696 main() { |
697 // Don't choke if sequence is not iterable. | 697 // Don't choke if sequence is not iterable. |
698 for (var i in /*error:FOR_IN_OF_INVALID_TYPE*/1234) {} | 698 for (var i in /*error:FOR_IN_OF_INVALID_TYPE*/1234) {} |
(...skipping 2480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3179 class F { | 3179 class F { |
3180 void set f(ToVoid<dynamic> x) {} | 3180 void set f(ToVoid<dynamic> x) {} |
3181 void set g(ToVoid<int> x) {} | 3181 void set g(ToVoid<int> x) {} |
3182 void set h(dynamic x) {} | 3182 void set h(dynamic x) {} |
3183 void set i(int x) {} | 3183 void set i(int x) {} |
3184 } | 3184 } |
3185 | 3185 |
3186 class G extends F { | 3186 class G extends F { |
3187 /*error:INVALID_METHOD_OVERRIDE*/void set f(ToVoid<int> x) {} | 3187 /*error:INVALID_METHOD_OVERRIDE*/void set f(ToVoid<int> x) {} |
3188 void set g(ToVoid<dynamic> x) {} | 3188 void set g(ToVoid<dynamic> x) {} |
3189 void set h(int x) {} | 3189 /*error:INVALID_METHOD_OVERRIDE*/void set h(int x) {} |
3190 /*error:INVALID_METHOD_OVERRIDE*/void set i(dynamic x) {} | 3190 void set i(dynamic x) {} |
3191 } | 3191 } |
3192 | 3192 |
3193 class H implements F { | 3193 class H implements F { |
3194 /*error:INVALID_METHOD_OVERRIDE*/void set f(ToVoid<int> x) {} | 3194 /*error:INVALID_METHOD_OVERRIDE*/void set f(ToVoid<int> x) {} |
3195 void set g(ToVoid<dynamic> x) {} | 3195 void set g(ToVoid<dynamic> x) {} |
3196 void set h(int x) {} | 3196 /*error:INVALID_METHOD_OVERRIDE*/void set h(int x) {} |
3197 /*error:INVALID_METHOD_OVERRIDE*/void set i(dynamic x) {} | 3197 void set i(dynamic x) {} |
3198 } | 3198 } |
3199 '''); | 3199 '''); |
3200 } | 3200 } |
3201 | 3201 |
3202 void test_setterReturnTypes() { | 3202 void test_setterReturnTypes() { |
3203 checkFile(''' | 3203 checkFile(''' |
3204 void voidFn() => null; | 3204 void voidFn() => null; |
3205 class A { | 3205 class A { |
3206 set a(y) => 4; | 3206 set a(y) => 4; |
3207 set b(y) => voidFn(); | 3207 set b(y) => voidFn(); |
(...skipping 20 matching lines...) Expand all Loading... |
3228 void set f2(B value); | 3228 void set f2(B value); |
3229 void set f3(B value); | 3229 void set f3(B value); |
3230 void set f4(B value); | 3230 void set f4(B value); |
3231 void set f5(B value); | 3231 void set f5(B value); |
3232 } | 3232 } |
3233 | 3233 |
3234 class Child extends Base { | 3234 class Child extends Base { |
3235 void set f1(A value) {} | 3235 void set f1(A value) {} |
3236 /*error:INVALID_METHOD_OVERRIDE*/void set f2(C value) {} | 3236 /*error:INVALID_METHOD_OVERRIDE*/void set f2(C value) {} |
3237 void set f3(value) {} | 3237 void set f3(value) {} |
3238 /*error:INVALID_METHOD_OVERRIDE*/void set f4(dynamic value) {} | 3238 void set f4(dynamic value) {} |
3239 set f5(B value) {} | 3239 set f5(B value) {} |
3240 } | 3240 } |
3241 '''); | 3241 '''); |
3242 } | 3242 } |
3243 | 3243 |
3244 void test_superCallPlacement() { | 3244 void test_superCallPlacement() { |
3245 checkFile(''' | 3245 checkFile(''' |
3246 class Base { | 3246 class Base { |
3247 var x; | 3247 var x; |
3248 Base() : x = print('Base.1') { print('Base.2'); } | 3248 Base() : x = print('Base.1') { print('Base.2'); } |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3727 // Regression test for https://github.com/dart-lang/sdk/issues/25069 | 3727 // Regression test for https://github.com/dart-lang/sdk/issues/25069 |
3728 checkFile(''' | 3728 checkFile(''' |
3729 typedef int Foo(); | 3729 typedef int Foo(); |
3730 void foo() {} | 3730 void foo() {} |
3731 void main () { | 3731 void main () { |
3732 Foo x = /*error:INVALID_ASSIGNMENT,info:USE_OF_VOID_RESULT*/foo(); | 3732 Foo x = /*error:INVALID_ASSIGNMENT,info:USE_OF_VOID_RESULT*/foo(); |
3733 } | 3733 } |
3734 '''); | 3734 '''); |
3735 } | 3735 } |
3736 } | 3736 } |
OLD | NEW |