| 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 2460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2471 var /*error:IMPLICIT_DYNAMIC_VARIABLE*/x1 = (<dynamic>[])[0]; | 2471 var /*error:IMPLICIT_DYNAMIC_VARIABLE*/x1 = (<dynamic>[])[0]; |
| 2472 var /*error:IMPLICIT_DYNAMIC_VARIABLE*/x2, | 2472 var /*error:IMPLICIT_DYNAMIC_VARIABLE*/x2, |
| 2473 x3 = 42, | 2473 x3 = 42, |
| 2474 /*error:IMPLICIT_DYNAMIC_VARIABLE*/x4; | 2474 /*error:IMPLICIT_DYNAMIC_VARIABLE*/x4; |
| 2475 dynamic y0; | 2475 dynamic y0; |
| 2476 dynamic y1 = (<dynamic>[])[0]; | 2476 dynamic y1 = (<dynamic>[])[0]; |
| 2477 '''); | 2477 '''); |
| 2478 await check(implicitDynamic: false); | 2478 await check(implicitDynamic: false); |
| 2479 } | 2479 } |
| 2480 | 2480 |
| 2481 test_interfaceOverridesAreAllChecked() { |
| 2482 // Regression test for https://github.com/dart-lang/sdk/issues/29766 |
| 2483 return checkFile(r''' |
| 2484 class B { |
| 2485 set x(int y) {} |
| 2486 } |
| 2487 class C { |
| 2488 set x(Object y) {} |
| 2489 } |
| 2490 class D implements B, C { |
| 2491 /*error:INVALID_METHOD_OVERRIDE*/int x; |
| 2492 } |
| 2493 '''); |
| 2494 } |
| 2495 |
| 2496 test_interfacesFromMixinsAreChecked() { |
| 2497 // Regression test for https://github.com/dart-lang/sdk/issues/29782 |
| 2498 return checkFile(r''' |
| 2499 abstract class I { |
| 2500 set x(int v); |
| 2501 } |
| 2502 abstract class M implements I {} |
| 2503 |
| 2504 class C extends Object with M { |
| 2505 /*error:INVALID_METHOD_OVERRIDE*/String x; |
| 2506 } |
| 2507 |
| 2508 abstract class M2 = Object with M; |
| 2509 |
| 2510 class C2 extends Object with M2 { |
| 2511 /*error:INVALID_METHOD_OVERRIDE*/String x; |
| 2512 } |
| 2513 '''); |
| 2514 } |
| 2515 |
| 2481 test_invalidOverrides_baseClassOverrideToChildInterface() async { | 2516 test_invalidOverrides_baseClassOverrideToChildInterface() async { |
| 2482 await checkFile(''' | 2517 await checkFile(''' |
| 2483 class A {} | 2518 class A {} |
| 2484 class B {} | 2519 class B {} |
| 2485 | 2520 |
| 2486 abstract class I { | 2521 abstract class I { |
| 2487 m(A a); | 2522 m(A a); |
| 2488 } | 2523 } |
| 2489 | 2524 |
| 2490 class Base { | 2525 class Base { |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3317 await checkFile(r''' | 3352 await checkFile(r''' |
| 3318 import 'meta.dart'; | 3353 import 'meta.dart'; |
| 3319 abstract class A { void test(A arg) { } } | 3354 abstract class A { void test(A arg) { } } |
| 3320 abstract class B extends A { void test(@checked B arg) { } } | 3355 abstract class B extends A { void test(@checked B arg) { } } |
| 3321 abstract class X implements A { } | 3356 abstract class X implements A { } |
| 3322 class C extends B with X { } | 3357 class C extends B with X { } |
| 3323 class D extends B implements A { } | 3358 class D extends B implements A { } |
| 3324 '''); | 3359 '''); |
| 3325 } | 3360 } |
| 3326 | 3361 |
| 3327 test_overrideNarrowsType_noDuplicateError() async { | 3362 test_overrideNarrowsType_noDuplicateError() { |
| 3328 // Regression test for https://github.com/dart-lang/sdk/issues/25232 | 3363 // Regression test for https://github.com/dart-lang/sdk/issues/25232 |
| 3329 _addMetaLibrary(); | 3364 return checkFile(r''' |
| 3330 await checkFile(r''' | |
| 3331 import 'meta.dart'; | |
| 3332 abstract class A { void test(A arg) { } } | 3365 abstract class A { void test(A arg) { } } |
| 3333 abstract class B extends A { | 3366 abstract class B extends A { |
| 3334 /*error:INVALID_METHOD_OVERRIDE*/void test(B arg) { } | 3367 /*error:INVALID_METHOD_OVERRIDE*/void test(B arg) { } |
| 3335 } | 3368 } |
| 3336 abstract class X implements A { } | 3369 abstract class X implements A { } |
| 3337 class C extends B with X { } | 3370 |
| 3371 class C extends B {} |
| 3372 |
| 3373 // We treat "with X" as asking for another check. |
| 3374 // This feels inconsistent. |
| 3375 class D /*error:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends B with X { } |
| 3338 | 3376 |
| 3339 // We treat "implements A" as asking for another check. | 3377 // We treat "implements A" as asking for another check. |
| 3340 // This feels inconsistent to me. | 3378 // This feels inconsistent. |
| 3341 class D /*error:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends B implements A { } | 3379 class E /*error:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends B implements A { } |
| 3342 '''); | 3380 '''); |
| 3343 } | 3381 } |
| 3344 | 3382 |
| 3345 test_privateOverride() async { | 3383 test_privateOverride() async { |
| 3346 addFile(''' | 3384 addFile(''' |
| 3347 import 'main.dart' as main; | 3385 import 'main.dart' as main; |
| 3348 | 3386 |
| 3349 class Base { | 3387 class Base { |
| 3350 var f1; | 3388 var f1; |
| 3351 var _f2; | 3389 var _f2; |
| (...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4201 class CheckerTest_Driver extends CheckerTest { | 4239 class CheckerTest_Driver extends CheckerTest { |
| 4202 @override | 4240 @override |
| 4203 bool get enableNewAnalysisDriver => true; | 4241 bool get enableNewAnalysisDriver => true; |
| 4204 | 4242 |
| 4205 @failingTest | 4243 @failingTest |
| 4206 @override | 4244 @override |
| 4207 test_covariantOverride_fields() async { | 4245 test_covariantOverride_fields() async { |
| 4208 await super.test_covariantOverride_fields(); | 4246 await super.test_covariantOverride_fields(); |
| 4209 } | 4247 } |
| 4210 } | 4248 } |
| OLD | NEW |