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 |