From 27ef9f07627f2a09f1a75696cc788c48289d0078 Mon Sep 17 00:00:00 2001 From: Robert Nystrom Date: Wed, 19 Apr 2023 23:35:16 +0000 Subject: [PATCH] Migrate "r" directory language tests off @compile-error. The "@compile-error" comment is an old not-great way of defining static error tests. See: https://github.com/dart-lang/sdk/issues/45634 Change-Id: I5dd012381390ef2c00d674308db3fe099ecc6a4c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296423 Auto-Submit: Bob Nystrom Commit-Queue: Nate Bosch Reviewed-by: Nate Bosch Commit-Queue: Bob Nystrom --- tests/language/regress/regress12561_test.dart | 12 +++++-- tests/language/regress/regress13494_test.dart | 5 ++- tests/language/regress/regress17382_test.dart | 5 ++- tests/language/regress/regress19413_test.dart | 5 ++- tests/language/regress/regress19728_test.dart | 10 ++++-- tests/language/regress/regress22438_test.dart | 5 ++- tests/language/regress/regress22936_test.dart | 5 ++- tests/language/regress/regress23089_test.dart | 31 +++++++++++++++++-- tests/language/regress/regress26133_test.dart | 5 ++- tests/language/regress/regress27572_test.dart | 5 ++- tests/language/regress/regress32305_test.dart | 7 ++++- .../language/regress/regress32353_2_test.dart | 7 ++++- tests/language/regress/regress34498_test.dart | 5 ++- tests/language/regress/regress34514_test.dart | 5 ++- tests/language/regress/regress34532_test.dart | 5 ++- tests/language/regress/regress34635_test.dart | 10 ++++-- tests/language/regress/regress34636_test.dart | 14 +++++++-- tests/language/return/type_test.dart | 9 ++++-- .../language_2/regress/regress12561_test.dart | 12 +++++-- .../language_2/regress/regress13494_test.dart | 5 ++- .../language_2/regress/regress17382_test.dart | 5 ++- .../language_2/regress/regress19413_test.dart | 5 ++- .../language_2/regress/regress19728_test.dart | 10 ++++-- .../language_2/regress/regress22438_test.dart | 5 ++- .../language_2/regress/regress22936_test.dart | 5 ++- .../language_2/regress/regress23089_test.dart | 31 +++++++++++++++++-- .../language_2/regress/regress26133_test.dart | 5 ++- .../language_2/regress/regress27572_test.dart | 5 ++- .../language_2/regress/regress32305_test.dart | 5 ++- .../regress/regress32353_2_test.dart | 7 ++++- .../language_2/regress/regress34498_test.dart | 5 ++- .../language_2/regress/regress34514_test.dart | 5 ++- .../language_2/regress/regress34532_test.dart | 5 ++- .../language_2/regress/regress34635_test.dart | 10 ++++-- .../language_2/regress/regress34636_test.dart | 14 +++++++-- tests/language_2/return/type_test.dart | 9 ++++-- 36 files changed, 246 insertions(+), 52 deletions(-) diff --git a/tests/language/regress/regress12561_test.dart b/tests/language/regress/regress12561_test.dart index 12acf0eb4b0..30bca27a2a0 100644 --- a/tests/language/regress/regress12561_test.dart +++ b/tests/language/regress/regress12561_test.dart @@ -5,9 +5,17 @@ import "package:expect/expect.dart"; class C { - noSuchMethod(int x, int y) => x + y; /*@compile-error=unspecified*/ + noSuchMethod(int x, int y) => x + y; +//^^^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE +// [cfe] The method 'C.noSuchMethod' has more required arguments than those of overridden method 'Object.noSuchMethod'. + // ^ + // [cfe] The parameter 'x' of the method 'C.noSuchMethod' has type 'int', which does not match the corresponding type, 'Invocation', in the overridden method, 'Object.noSuchMethod'. } main() { - Expect.throws(() => new C().foo, (e) => e is Error); /*@compile-error=unspecified*/ + Expect.throws(() => new C().foo, (e) => e is Error); + // ^^^ + // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER + // [cfe] The getter 'foo' isn't defined for the class 'C'. } diff --git a/tests/language/regress/regress13494_test.dart b/tests/language/regress/regress13494_test.dart index 9e239c61222..3012d2f73cb 100644 --- a/tests/language/regress/regress13494_test.dart +++ b/tests/language/regress/regress13494_test.dart @@ -16,7 +16,10 @@ class A {} main() { bool caught = false; try { - A.unknown = p(2); /*@compile-error=unspecified*/ + A.unknown = p(2); + //^^^^^^^ + // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER + // [cfe] Setter not found: 'unknown'. } catch (_) { caught = true; } diff --git a/tests/language/regress/regress17382_test.dart b/tests/language/regress/regress17382_test.dart index 275c1b8df9d..a1e77143634 100644 --- a/tests/language/regress/regress17382_test.dart +++ b/tests/language/regress/regress17382_test.dart @@ -15,7 +15,10 @@ m(x) { main() { try { - tl(m(0)); /*@compile-error=unspecified*/ + tl(m(0)); +// ^^ +// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_FUNCTION +// [cfe] Method not found: 'tl'. } catch (e) {} Expect.isTrue(mCalled); } diff --git a/tests/language/regress/regress19413_test.dart b/tests/language/regress/regress19413_test.dart index eb0e2ad6297..466eaad8939 100644 --- a/tests/language/regress/regress19413_test.dart +++ b/tests/language/regress/regress19413_test.dart @@ -8,5 +8,8 @@ import 'regress19413_foo.dart' as foo; import 'regress19413_bar.dart' as foo; main() { - foo.f(); /*@compile-error=unspecified*/ + foo.f(); + // ^ + // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_IMPORT + // [cfe] 'f' is imported from both 'tests/language/regress/regress19413_bar.dart' and 'tests/language/regress/regress19413_foo.dart'. } diff --git a/tests/language/regress/regress19728_test.dart b/tests/language/regress/regress19728_test.dart index 693962aeebc..97f0b2dbe7c 100644 --- a/tests/language/regress/regress19728_test.dart +++ b/tests/language/regress/regress19728_test.dart @@ -8,8 +8,14 @@ class C { T? field; test() { - field = 0; /*@compile-error=unspecified*/ - int i = field; /*@compile-error=unspecified*/ + field = 0; + // ^ + // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT + // [cfe] A value of type 'int' can't be assigned to a variable of type 'T?'. + int i = field; + // ^^^^^ + // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT + // [cfe] A value of type 'T?' can't be assigned to a variable of type 'int'. } } diff --git a/tests/language/regress/regress22438_test.dart b/tests/language/regress/regress22438_test.dart index 849610ddf71..947fe2f13fe 100644 --- a/tests/language/regress/regress22438_test.dart +++ b/tests/language/regress/regress22438_test.dart @@ -10,7 +10,10 @@ main() async { try { try { await new Future.error("error"); - } on MissingType catch (e) {} /*@compile-error=unspecified*/ + } on MissingType catch (e) {} + // ^^^^^^^^^^^ + // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE + // [cfe] 'MissingType' isn't a type. } catch (e) { error = e; } diff --git a/tests/language/regress/regress22936_test.dart b/tests/language/regress/regress22936_test.dart index 878e7c41913..ccbedef9dd5 100644 --- a/tests/language/regress/regress22936_test.dart +++ b/tests/language/regress/regress22936_test.dart @@ -16,7 +16,10 @@ foo() { main() { final x = null; try { - x = /*@compile-error=unspecified*/ foo(); + x = foo(); +// ^ +// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL +// [cfe] Can't assign to the final variable 'x'. } on NoSuchMethodError {} Expect.isTrue(fooCalled); } diff --git a/tests/language/regress/regress23089_test.dart b/tests/language/regress/regress23089_test.dart index 2718475177d..a09ce13d837 100644 --- a/tests/language/regress/regress23089_test.dart +++ b/tests/language/regress/regress23089_test.dart @@ -6,18 +6,43 @@ // Generic bounds now must be fully instantiated. This means that the // cycle is not possible anymore. -abstract class IPeer {} +abstract class IPeer {} +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND abstract class IPeerRoom

{} +// ^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND abstract class IP2PClient {} +// ^ +// [cfe] Generic type 'IP2PClient' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'IPeerRoom'. +// ^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND class _Peer implements IPeer {} +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND class _PeerRoom

- implements IPeerRoom {} +// ^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND + implements + IPeerRoom {} abstract class _P2PClient - implements IP2PClient {} +// ^ +// [cfe] Generic type '_P2PClient' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '_Peer'. +// [cfe] Generic type '_P2PClient' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '_PeerRoom'. +// ^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND +// ^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND + implements + IP2PClient {} void main() {} diff --git a/tests/language/regress/regress26133_test.dart b/tests/language/regress/regress26133_test.dart index 7c657a1d573..b14329289bb 100644 --- a/tests/language/regress/regress26133_test.dart +++ b/tests/language/regress/regress26133_test.dart @@ -7,7 +7,10 @@ import 'dart:async'; var x = 'a'; Future foo() async { - return x; /*@compile-error=unspecified*/ + return x; + // ^ + // [analyzer] COMPILE_TIME_ERROR.RETURN_OF_INVALID_TYPE + // [cfe] A value of type 'String' can't be returned from an async function with return type 'Future'. } main() { diff --git a/tests/language/regress/regress27572_test.dart b/tests/language/regress/regress27572_test.dart index 398fdb9af59..f117defe5ab 100644 --- a/tests/language/regress/regress27572_test.dart +++ b/tests/language/regress/regress27572_test.dart @@ -10,5 +10,8 @@ import "package:expect/expect.dart"; import 'dart:collection' as col; main() { - col.foobar(1234567); /*@compile-error=unspecified*/ + col.foobar(1234567); + // ^^^^^^ + // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_FUNCTION + // [cfe] Method not found: 'foobar'. } diff --git a/tests/language/regress/regress32305_test.dart b/tests/language/regress/regress32305_test.dart index 5943764bcd0..5a3ab5a7573 100644 --- a/tests/language/regress/regress32305_test.dart +++ b/tests/language/regress/regress32305_test.dart @@ -6,5 +6,10 @@ void main() { int Function(int) f; List l = []; - /*@compile-error=unspecified*/ var a = l.map(f); + var a = l.map(f); + // ^ + // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE + // [analyzer] COMPILE_TIME_ERROR.NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE + // [cfe] Non-nullable variable 'f' must be assigned before it can be used. + // [cfe] The argument type 'int Function(int)' can't be assigned to the parameter type 'dynamic Function(num)'. } diff --git a/tests/language/regress/regress32353_2_test.dart b/tests/language/regress/regress32353_2_test.dart index 19aff610c31..469c993140c 100644 --- a/tests/language/regress/regress32353_2_test.dart +++ b/tests/language/regress/regress32353_2_test.dart @@ -15,6 +15,11 @@ class B {} mixin C on B {} -class /*@compile-error=unspecified*/ D extends B with C {} +class D extends B with C {} +// ^ +// [cfe] 'B with C' can't implement both 'B' and 'B' +// [cfe] 'B' doesn't implement 'B' so it can't be used with 'C'. +// ^ +// [analyzer] COMPILE_TIME_ERROR.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE main() {} diff --git a/tests/language/regress/regress34498_test.dart b/tests/language/regress/regress34498_test.dart index e5b3f45a42e..17a4cda49de 100644 --- a/tests/language/regress/regress34498_test.dart +++ b/tests/language/regress/regress34498_test.dart @@ -6,7 +6,10 @@ import 'dart:core'; import 'dart:core' as core; class A { - /*@compile-error=unspecified*/ core.List get core => throw "uncalled"; + core.List get core => throw "uncalled"; +//^^^^ +// [analyzer] COMPILE_TIME_ERROR.PREFIX_SHADOWED_BY_LOCAL_DECLARATION +// [cfe] 'core.List' can't be used as a type because 'core' doesn't refer to an import prefix. } main() { diff --git a/tests/language/regress/regress34514_test.dart b/tests/language/regress/regress34514_test.dart index 063c5008695..2187a2a8df5 100644 --- a/tests/language/regress/regress34514_test.dart +++ b/tests/language/regress/regress34514_test.dart @@ -6,5 +6,8 @@ var x = (() => 1)(); main() { - /*@compile-error=unspecified*/ x = 'bad'; // `String` not assignable to `int` + x = 'bad'; // `String` not assignable to `int` + // ^^^^^ + // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT + // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'. } diff --git a/tests/language/regress/regress34532_test.dart b/tests/language/regress/regress34532_test.dart index da30e3b9681..b3c8a1be3b6 100644 --- a/tests/language/regress/regress34532_test.dart +++ b/tests/language/regress/regress34532_test.dart @@ -7,6 +7,9 @@ class Foo {} class Bar> {} // Should be error here, because Bar completes to Bar -class Baz extends /*@compile-error=unspecified*/ Bar {} +class Baz extends Bar {} +// ^^^ +// [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS +// [cfe] Inferred type argument 'Foo' doesn't conform to the bound 'Foo' of the type variable 'T' on 'Bar'. void main() {} diff --git a/tests/language/regress/regress34635_test.dart b/tests/language/regress/regress34635_test.dart index 6d1c6c8302b..73e21dabdaf 100644 --- a/tests/language/regress/regress34635_test.dart +++ b/tests/language/regress/regress34635_test.dart @@ -2,8 +2,14 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -class /*@compile-error=unspecified*/ A {} +class A {} +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND -class /*@compile-error=unspecified*/ C {} +class C {} +// ^ +// [cfe] Generic type 'C' can't be used without type arguments in the bounds of its own type variables. +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND main() {} diff --git a/tests/language/regress/regress34636_test.dart b/tests/language/regress/regress34636_test.dart index 242eea0680e..c6d7a3fbb77 100644 --- a/tests/language/regress/regress34636_test.dart +++ b/tests/language/regress/regress34636_test.dart @@ -2,10 +2,18 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -class /*@compile-error=unspecified*/ A {} +class A {} +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND -class /*@compile-error=unspecified*/ B {} +class B {} +// ^ +// [cfe] Generic type 'B' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'C'. +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND -class /*@compile-error=unspecified*/ C> {} +class C> {} +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND main() {} diff --git a/tests/language/return/type_test.dart b/tests/language/return/type_test.dart index 99060b5385a..210714423a2 100644 --- a/tests/language/return/type_test.dart +++ b/tests/language/return/type_test.dart @@ -4,9 +4,14 @@ import "package:expect/expect.dart"; -int returnString1() => 's'; /*@compile-error=unspecified*/ +int returnString1() => 's'; +// ^^^ +// [analyzer] COMPILE_TIME_ERROR.RETURN_OF_INVALID_TYPE +// [cfe] A value of type 'String' can't be returned from a function with return type 'int'. + +// OK to return anything from a void function with a "=>" body. void returnNull() => null; -void returnString2() => 's'; /*@compile-error=unspecified*/ +void returnString2() => 's'; main() { returnString1(); diff --git a/tests/language_2/regress/regress12561_test.dart b/tests/language_2/regress/regress12561_test.dart index 2edf2a10891..24b682faf85 100644 --- a/tests/language_2/regress/regress12561_test.dart +++ b/tests/language_2/regress/regress12561_test.dart @@ -7,9 +7,17 @@ import "package:expect/expect.dart"; class C { - noSuchMethod(int x, int y) => x + y; /*@compile-error=unspecified*/ + noSuchMethod(int x, int y) => x + y; +//^^^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE +// [cfe] The method 'C.noSuchMethod' has more required arguments than those of overridden method 'Object.noSuchMethod'. + // ^ + // [cfe] The parameter 'x' of the method 'C.noSuchMethod' has type 'int', which does not match the corresponding type, 'Invocation', in the overridden method, 'Object.noSuchMethod'. } main() { - Expect.throws(() => new C().foo, (e) => e is Error); /*@compile-error=unspecified*/ + Expect.throws(() => new C().foo, (e) => e is Error); + // ^^^ + // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER + // [cfe] The getter 'foo' isn't defined for the class 'C'. } diff --git a/tests/language_2/regress/regress13494_test.dart b/tests/language_2/regress/regress13494_test.dart index 39b383f10c3..9377eb9de1e 100644 --- a/tests/language_2/regress/regress13494_test.dart +++ b/tests/language_2/regress/regress13494_test.dart @@ -18,7 +18,10 @@ class A {} main() { bool caught = false; try { - A.unknown = p(2); /*@compile-error=unspecified*/ + A.unknown = p(2); + //^^^^^^^ + // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER + // [cfe] Setter not found: 'unknown'. } catch (_) { caught = true; } diff --git a/tests/language_2/regress/regress17382_test.dart b/tests/language_2/regress/regress17382_test.dart index fa72d34eaa2..2b6bfaaaf8a 100644 --- a/tests/language_2/regress/regress17382_test.dart +++ b/tests/language_2/regress/regress17382_test.dart @@ -17,7 +17,10 @@ m(x) { main() { try { - tl(m(0)); /*@compile-error=unspecified*/ + tl(m(0)); +// ^^ +// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_FUNCTION +// [cfe] Method not found: 'tl'. } catch (e) {} Expect.isTrue(mCalled); } diff --git a/tests/language_2/regress/regress19413_test.dart b/tests/language_2/regress/regress19413_test.dart index 9f6f5ebf41e..6b9919412de 100644 --- a/tests/language_2/regress/regress19413_test.dart +++ b/tests/language_2/regress/regress19413_test.dart @@ -10,5 +10,8 @@ import 'regress19413_foo.dart' as foo; import 'regress19413_bar.dart' as foo; main() { - foo.f(); /*@compile-error=unspecified*/ + foo.f(); + // ^ + // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_IMPORT + // [cfe] 'f' is imported from both 'tests/language_2/regress/regress19413_bar.dart' and 'tests/language_2/regress/regress19413_foo.dart'. } diff --git a/tests/language_2/regress/regress19728_test.dart b/tests/language_2/regress/regress19728_test.dart index 6af7cfdb8e6..d2f5e3e23e4 100644 --- a/tests/language_2/regress/regress19728_test.dart +++ b/tests/language_2/regress/regress19728_test.dart @@ -10,8 +10,14 @@ class C { T field; test() { - field = 0; /*@compile-error=unspecified*/ - int i = field; /*@compile-error=unspecified*/ + field = 0; + // ^ + // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT + // [cfe] A value of type 'int' can't be assigned to a variable of type 'T'. + int i = field; + // ^^^^^ + // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT + // [cfe] A value of type 'T' can't be assigned to a variable of type 'int'. } } diff --git a/tests/language_2/regress/regress22438_test.dart b/tests/language_2/regress/regress22438_test.dart index c16312df79e..13253fee03b 100644 --- a/tests/language_2/regress/regress22438_test.dart +++ b/tests/language_2/regress/regress22438_test.dart @@ -12,7 +12,10 @@ main() async { try { try { await new Future.error("error"); - } on MissingType catch (e) {} /*@compile-error=unspecified*/ + } on MissingType catch (e) {} + // ^^^^^^^^^^^ + // [analyzer] COMPILE_TIME_ERROR.NON_TYPE_IN_CATCH_CLAUSE + // [cfe] 'MissingType' isn't a type. } catch (e) { error = e; } diff --git a/tests/language_2/regress/regress22936_test.dart b/tests/language_2/regress/regress22936_test.dart index 4852e1b9bd4..58010efa735 100644 --- a/tests/language_2/regress/regress22936_test.dart +++ b/tests/language_2/regress/regress22936_test.dart @@ -18,7 +18,10 @@ foo() { main() { final x = null; try { - x = /*@compile-error=unspecified*/ foo(); + x = foo(); +// ^ +// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_FINAL_LOCAL +// [cfe] Can't assign to the final variable 'x'. } on NoSuchMethodError {} Expect.isTrue(fooCalled); } diff --git a/tests/language_2/regress/regress23089_test.dart b/tests/language_2/regress/regress23089_test.dart index a139f26d351..d42cded74aa 100644 --- a/tests/language_2/regress/regress23089_test.dart +++ b/tests/language_2/regress/regress23089_test.dart @@ -8,18 +8,43 @@ // Generic bounds now must be fully instantiated. This means that the // cycle is not possible anymore. -abstract class IPeer {} +abstract class IPeer {} +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND abstract class IPeerRoom

{} +// ^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND abstract class IP2PClient {} +// ^ +// [cfe] Generic type 'IP2PClient' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'IPeerRoom'. +// ^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND class _Peer implements IPeer {} +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND class _PeerRoom

- implements IPeerRoom {} +// ^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND +// ^^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND + implements + IPeerRoom {} abstract class _P2PClient - implements IP2PClient {} +// ^ +// [cfe] Generic type '_P2PClient' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '_Peer'. +// [cfe] Generic type '_P2PClient' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '_PeerRoom'. +// ^^^^^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND +// ^^^^^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND + implements + IP2PClient {} void main() {} diff --git a/tests/language_2/regress/regress26133_test.dart b/tests/language_2/regress/regress26133_test.dart index f1d3326eff7..cc89b4e6949 100644 --- a/tests/language_2/regress/regress26133_test.dart +++ b/tests/language_2/regress/regress26133_test.dart @@ -9,7 +9,10 @@ import 'dart:async'; var x = 'a'; Future foo() async { - return x; /*@compile-error=unspecified*/ + return x; + // ^ + // [analyzer] COMPILE_TIME_ERROR.RETURN_OF_INVALID_TYPE + // [cfe] A value of type 'Future' can't be assigned to a variable of type 'FutureOr'. } main() { diff --git a/tests/language_2/regress/regress27572_test.dart b/tests/language_2/regress/regress27572_test.dart index 9f9b037e353..9f8b637c020 100644 --- a/tests/language_2/regress/regress27572_test.dart +++ b/tests/language_2/regress/regress27572_test.dart @@ -12,5 +12,8 @@ import "package:expect/expect.dart"; import 'dart:collection' as col; main() { - col.foobar(1234567); /*@compile-error=unspecified*/ + col.foobar(1234567); + // ^^^^^^ + // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_FUNCTION + // [cfe] Method not found: 'foobar'. } diff --git a/tests/language_2/regress/regress32305_test.dart b/tests/language_2/regress/regress32305_test.dart index f86ad2c181a..fb4198f1f0f 100644 --- a/tests/language_2/regress/regress32305_test.dart +++ b/tests/language_2/regress/regress32305_test.dart @@ -8,5 +8,8 @@ void main() { int Function(int) f; List l = []; - /*@compile-error=unspecified*/ var a = l.map(f); + var a = l.map(f); + // ^ + // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE + // [cfe] The argument type 'int Function(int)' can't be assigned to the parameter type 'dynamic Function(num)'. } diff --git a/tests/language_2/regress/regress32353_2_test.dart b/tests/language_2/regress/regress32353_2_test.dart index f4ff9308354..78092534b3e 100644 --- a/tests/language_2/regress/regress32353_2_test.dart +++ b/tests/language_2/regress/regress32353_2_test.dart @@ -17,6 +17,11 @@ class B {} mixin C on B {} -class /*@compile-error=unspecified*/ D extends B with C {} +class D extends B with C {} +// ^ +// [cfe] 'B with C' can't implement both 'B' and 'B' +// [cfe] 'B' doesn't implement 'B' so it can't be used with 'C'. +// ^ +// [analyzer] COMPILE_TIME_ERROR.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE main() {} diff --git a/tests/language_2/regress/regress34498_test.dart b/tests/language_2/regress/regress34498_test.dart index 05b3c34dc8a..d52a7692e07 100644 --- a/tests/language_2/regress/regress34498_test.dart +++ b/tests/language_2/regress/regress34498_test.dart @@ -8,7 +8,10 @@ import 'dart:core'; import 'dart:core' as core; class A { - /*@compile-error=unspecified*/ core.List get core => null; + core.List get core => null; +//^^^^ +// [analyzer] COMPILE_TIME_ERROR.PREFIX_SHADOWED_BY_LOCAL_DECLARATION +// [cfe] 'core.List' can't be used as a type because 'core' doesn't refer to an import prefix. } main() { diff --git a/tests/language_2/regress/regress34514_test.dart b/tests/language_2/regress/regress34514_test.dart index 8c78daa480b..b43bf495766 100644 --- a/tests/language_2/regress/regress34514_test.dart +++ b/tests/language_2/regress/regress34514_test.dart @@ -8,5 +8,8 @@ var x = (() => 1)(); main() { - /*@compile-error=unspecified*/ x = 'bad'; // `String` not assignable to `int` + x = 'bad'; // `String` not assignable to `int` + // ^^^^^ + // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT + // [cfe] A value of type 'String' can't be assigned to a variable of type 'int'. } diff --git a/tests/language_2/regress/regress34532_test.dart b/tests/language_2/regress/regress34532_test.dart index 92908305ae1..47c8a7b6581 100644 --- a/tests/language_2/regress/regress34532_test.dart +++ b/tests/language_2/regress/regress34532_test.dart @@ -9,6 +9,9 @@ class Foo {} class Bar> {} // Should be error here, because Bar completes to Bar -class Baz extends /*@compile-error=unspecified*/ Bar {} +class Baz extends Bar {} +// ^^^ +// [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS +// [cfe] Inferred type argument 'Foo' doesn't conform to the bound 'Foo' of the type variable 'T' on 'Bar'. void main() {} diff --git a/tests/language_2/regress/regress34635_test.dart b/tests/language_2/regress/regress34635_test.dart index 597ec227ec6..94a15d4b17d 100644 --- a/tests/language_2/regress/regress34635_test.dart +++ b/tests/language_2/regress/regress34635_test.dart @@ -4,8 +4,14 @@ // @dart = 2.9 -class /*@compile-error=unspecified*/ A {} +class A {} +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND -class /*@compile-error=unspecified*/ C {} +class C {} +// ^ +// [cfe] Generic type 'C' can't be used without type arguments in the bounds of its own type variables. +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND main() {} diff --git a/tests/language_2/regress/regress34636_test.dart b/tests/language_2/regress/regress34636_test.dart index fb71b45482b..da8b6e2f8e8 100644 --- a/tests/language_2/regress/regress34636_test.dart +++ b/tests/language_2/regress/regress34636_test.dart @@ -4,10 +4,18 @@ // @dart = 2.9 -class /*@compile-error=unspecified*/ A {} +class A {} +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND -class /*@compile-error=unspecified*/ B {} +class B {} +// ^ +// [cfe] Generic type 'B' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'C'. +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND -class /*@compile-error=unspecified*/ C> {} +class C> {} +// ^ +// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND main() {} diff --git a/tests/language_2/return/type_test.dart b/tests/language_2/return/type_test.dart index 1ca6c56f5be..5f975568dc4 100644 --- a/tests/language_2/return/type_test.dart +++ b/tests/language_2/return/type_test.dart @@ -6,9 +6,14 @@ import "package:expect/expect.dart"; -int returnString1() => 's'; /*@compile-error=unspecified*/ +int returnString1() => 's'; +// ^^^ +// [analyzer] COMPILE_TIME_ERROR.RETURN_OF_INVALID_TYPE +// [cfe] A value of type 'String' can't be assigned to a variable of type 'int'. + +// OK to return anything from a void function with a "=>" body. void returnNull() => null; -void returnString2() => 's'; /*@compile-error=unspecified*/ +void returnString2() => 's'; main() { returnString1();