| 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 |