diff --git a/pkg/_fe_analyzer_shared/test/constants/data/basic.dart b/pkg/_fe_analyzer_shared/test/constants/data/basic.dart index 49749ff03b4..fc4098e3aaf 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/basic.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/basic.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 const null0 = /*cfe.Null()*/ null; diff --git a/pkg/_fe_analyzer_shared/test/constants/data/errors.dart b/pkg/_fe_analyzer_shared/test/constants/data/errors.dart index bfd5e95abd3..0487ff51805 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/errors.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/errors.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 String method() => 'foo'; diff --git a/pkg/_fe_analyzer_shared/test/constants/data/function.dart b/pkg/_fe_analyzer_shared/test/constants/data/function.dart index 5e1d35de237..c9d0f42d422 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/function.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/function.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 T method1(T t) => t; diff --git a/pkg/_fe_analyzer_shared/test/constants/data/list.dart b/pkg/_fe_analyzer_shared/test/constants/data/list.dart index 6af31a09aec..651d13c5d47 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/list.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/list.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 const list0 = /*cfe.List()*/ []; diff --git a/pkg/_fe_analyzer_shared/test/constants/data/map.dart b/pkg/_fe_analyzer_shared/test/constants/data/map.dart index cb84ad33702..e014923b185 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/map.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/map.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 const map0 = /*cfe.Map()*/ {}; diff --git a/pkg/_fe_analyzer_shared/test/constants/data/set.dart b/pkg/_fe_analyzer_shared/test/constants/data/set.dart index 1e5ecb9eb37..4dbdae724f6 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/set.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/set.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 // ignore: sdk_version_set_literal diff --git a/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart b/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart index 3a0c9090470..b09f516175f 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.9 import 'dart:async'; diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart index 73cf78d9903..6d71d8dab17 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 const null0 = /*cfe.Null()*/ null; diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart index a2c10241fdd..1c67de336c2 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 String method() => 'foo'; diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart index cb18ecf9ac4..c3056378e5f 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 T method1(T t) => t; diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart index aec2913057c..050d72d4c3d 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 const list0 = /*cfe.List()*/ []; diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart index b3b762e0050..92601db044f 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 const map0 = /*cfe.Map()*/ {}; diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart index 7c4eed7eae1..a0c9ba82b8f 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 // ignore: sdk_version_set_literal diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart index 6754f1ccaf5..e71a0a90e78 100644 --- a/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart +++ b/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart = 2.7 import 'dart:async'; diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart index 53dbe5f4188..9094c96f164 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 /*class: A:A,Object*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart index 4d2422dc6dd..c1a6cc1229e 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.5 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart index 18b183d2493..74e15657fc4 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.5 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart index 3857d0f5f87..1486295433f 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.5 import 'opt_in.dart'; diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart index 929793b7d19..1afd1d85dec 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.5 /*class: Map:Map,Object*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart index c232f64d867..7bd447231d6 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart index 12302cc94df..bf30516d78f 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart = 2.5 import 'opt_in.dart'; diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart index dbb69965e68..3fda4f692b4 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart = 2.5 /*class: Legacy:Legacy,Object*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart index 05862b6c22d..6529c4ac184 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart = 2.5 import 'opt_in.dart'; diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart index 8930b9924ca..b7afa8ef13b 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart index 47f208f0a29..58f89ab7d5a 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 import "opt_in.dart"; diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart index 91c879e1741..db60a448662 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart index 0573a97a9b9..c0dea961ff4 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 /*class: A:A,Object*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart index 0a692fa7044..6c484233102 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart index 07fb2cf4cea..831782416ad 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart index fbeccca78ef..f5781da2793 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 /*class: LegacyClass:LegacyClass,Object*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart index 9fe23d6f409..7a88fd3e3d3 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.5 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart index 4ef3e617173..a18806e8873 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.5 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart index 022c7028e6b..ea932fbb018 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart index 65fc5c0df59..0001dd716be 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 import 'opt_in.dart'; diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart index ccf00fec64f..99037520718 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 /*class: Class1:Class1,Object*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart index 7137f1ade0a..e4aaf9ef9c7 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart index 77a5afa2506..3251d00025a 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart index 339e9a48ee7..8bf9271bdab 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart index 051358b3088..263af0e9a36 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart index 3099cb7611a..dc974525ece 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart index 4602bbc008d..d96411db71a 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart index 6a8903eb641..50b70195802 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart @@ -4,6 +4,7 @@ /*library: nnbd=false*/ +// ignore: illegal_language_version_override // @dart=2.6 /*class: Sink:Object,Sink*/ diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart index ae770917702..7385a2f27cb 100644 --- a/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart @@ -2,6 +2,7 @@ // 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. +// ignore: illegal_language_version_override // @dart=2.6 /*library: nnbd=false*/ diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart index f4b1faf62bf..eaeb87bc3cc 100644 --- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart +++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart @@ -4,6 +4,7 @@ import 'package:analysis_server/src/services/correction/fix.dart'; import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:analyzer_plugin/utilities/fixes/fixes.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -288,14 +289,16 @@ void f() { } Future test_constructor_single_closure_nnbd_into_legacy() async { - addSource('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + addSource('$testPackageLibPath/a.dart', r''' typedef int Callback(int? a); class A { A({required Callback callback}) {} } '''); - await resolveTestCode(''' + await resolveTestCode(''' // @dart = 2.8 import 'package:test/a.dart'; @@ -304,7 +307,7 @@ void f() { print(a); } '''); - await assertHasFix(''' + await assertHasFix(''' // @dart = 2.8 import 'package:test/a.dart'; @@ -313,6 +316,9 @@ void f() { print(a); } '''); + } finally { + noSoundNullSafety = true; + } } Future test_constructor_single_list() async { diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart index 6434447e5c8..402198f079a 100644 --- a/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart +++ b/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart @@ -4,6 +4,7 @@ import 'package:analysis_server/src/services/correction/fix.dart'; import 'package:analysis_server/src/services/linter/lint_names.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:analyzer_plugin/utilities/fixes/fixes.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -123,13 +124,15 @@ class B extends A { } Future test_method_nullSafety_optIn_fromOptOut() async { - createAnalysisOptionsFile(lints: [lintCode]); - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + createAnalysisOptionsFile(lints: [lintCode]); + newFile('$testPackageLibPath/a.dart', r''' class A { int foo() => 0; } '''); - await resolveTestCode(''' + await resolveTestCode(''' // @dart = 2.7 import 'a.dart'; @@ -138,13 +141,16 @@ class B extends A { int foo() => super.foo(); } '''); - await assertHasFix(''' + await assertHasFix(''' // @dart = 2.7 import 'a.dart'; class B extends A { } '''); + } finally { + noSoundNullSafety = true; + } } Future test_method_toString() async { diff --git a/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart b/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart index b61e5f6efdd..fd377777175 100644 --- a/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart +++ b/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart @@ -579,7 +579,7 @@ int bar = 1; // 4 Future test_topLevel_languageVersion_dartDoc() async { await resolveTestCode(''' -// @dart = 2.8 +// @dart = 2.19 /// 1 int foo = 1; // 2 @@ -595,7 +595,7 @@ int bar = 1; // 4 Future test_topLevel_languageVersion_noDartDoc() async { await resolveTestCode(''' -// @dart = 2.8 +// @dart = 2.19 int foo = 1; // 2 diff --git a/pkg/analyzer/doc/tutorial/ast.md b/pkg/analyzer/doc/tutorial/ast.md index c3e275cef61..7471bb2368b 100644 --- a/pkg/analyzer/doc/tutorial/ast.md +++ b/pkg/analyzer/doc/tutorial/ast.md @@ -54,7 +54,7 @@ If you need an unresolved AST, then you can use the following method to access the AST: ```dart -void processFile(AnalysisSession session, String path) async { +Future processFile(AnalysisSession session, String path) async { var result = session.getParsedUnit(path); if (result is ParsedUnitResult) { CompilationUnit unit = result.unit; @@ -66,7 +66,7 @@ If you need a resolved AST, then you need to use the following asynchronous method to access it: ```dart -void processFile(AnalysisSession session, String path) async { +Future processFile(AnalysisSession session, String path) async { var result = await session.getResolvedUnit(path); if (result is ResolvedUnitResult) { CompilationUnit unit = result.unit; @@ -102,7 +102,7 @@ void printMembers(CompilationUnit unit) { if (classMember.name == null) { print(' ${unitMember.name.lexeme}'); } else { - print(' ${unitMember.name.lexeme}.${classMember.name.lexeme}'); + print(' ${unitMember.name.lexeme}.${classMember.name!.lexeme}'); } } } diff --git a/pkg/analyzer/doc/tutorial/element.md b/pkg/analyzer/doc/tutorial/element.md index 912d65b38bc..fe603ea7357 100644 --- a/pkg/analyzer/doc/tutorial/element.md +++ b/pkg/analyzer/doc/tutorial/element.md @@ -75,11 +75,7 @@ void printMembers(CompilationUnitElement unitElement) { print(classElement.name); for (ConstructorElement constructorElement in classElement.constructors) { if (!constructorElement.isSynthetic) { - if (constructorElement.name == null) { - print(' ${constructorElement.name}'); - } else { - print(' ${classElement.name}.${constructorElement.name}'); - } + print(' ${constructorElement.displayName}'); } } for (FieldElement fieldElement in classElement.fields) { diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart index 0fc9372b930..05a5515b4bd 100644 --- a/pkg/analyzer/lib/src/generated/engine.dart +++ b/pkg/analyzer/lib/src/generated/engine.dart @@ -17,6 +17,7 @@ import 'package:analyzer/src/generated/constant.dart'; import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/services/lint.dart'; import 'package:analyzer/src/summary/api_signature.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:pub_semver/pub_semver.dart'; export 'package:analyzer/dart/analysis/analysis_options.dart'; @@ -157,7 +158,8 @@ class AnalysisOptionsImpl implements AnalysisOptions { /// The constraint on the language version for every Dart file. /// Violations will be reported as analysis errors. - VersionConstraint? sourceLanguageConstraint; + VersionConstraint? sourceLanguageConstraint = + noSoundNullSafety ? VersionConstraint.parse('>= 2.12.0') : null; ExperimentStatus _contextFeatures = ExperimentStatus(); diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart index c01d2e097cc..d8f2f2c86ed 100644 --- a/pkg/analyzer/lib/src/generated/error_verifier.dart +++ b/pkg/analyzer/lib/src/generated/error_verifier.dart @@ -2851,13 +2851,6 @@ class ErrorVerifier extends RecursiveAstVisitor languageVersionToken, ['$sourceLanguageConstraint'], ); - } else { - errorReporter.reportErrorForOffset( - CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE, - 0, - 0, - ['$sourceLanguageConstraint'], - ); } } diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart index efea28aaa87..98bbb0c3f18 100644 --- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart +++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart @@ -13,6 +13,7 @@ import 'package:analyzer/src/dart/element/element.dart'; import 'package:analyzer/src/dart/element/type.dart'; import 'package:analyzer/src/dart/element/type_system.dart'; import 'package:analyzer/src/dart/error/ffi_code.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; /// A visitor used to find problems with the way the `dart:ffi` APIs are being /// used. See 'pkg/vm/lib/transformations/ffi_checks.md' for the specification @@ -172,7 +173,9 @@ class FfiVerifier extends RecursiveAstVisitor { @override void visitConstructorFieldInitializer(ConstructorFieldInitializer node) { - if (!typeSystem.isNonNullableByDefault && inCompound) { + if (!noSoundNullSafety && + !typeSystem.isNonNullableByDefault && + inCompound) { _errorReporter.reportErrorForNode( FfiCode.FIELD_INITIALIZER_IN_STRUCT, node, @@ -1022,7 +1025,7 @@ class FfiVerifier extends RecursiveAstVisitor { } } - if (!typeSystem.isNonNullableByDefault) { + if (!noSoundNullSafety && !typeSystem.isNonNullableByDefault) { for (VariableDeclaration field in fields.variables) { if (field.initializer != null) { _errorReporter.reportErrorForToken( diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml index b21a0f6603c..3ae4c3cc5a1 100644 --- a/pkg/analyzer/messages.yaml +++ b/pkg/analyzer/messages.yaml @@ -6112,7 +6112,7 @@ CompileTimeErrorCode: ```dart %uri="lib/part.dart" - // @dart = 2.6 + // @dart = 2.14 part of 'test.dart'; ``` @@ -6120,7 +6120,7 @@ CompileTimeErrorCode: must have the same language version as the defining compilation unit: ```dart - // @dart = 2.5 + // @dart = 2.15 part [!'part.dart'!]; ``` @@ -19104,7 +19104,7 @@ HintCode: the word `dart` and the version number: ```dart - [!// @Dart 2.9!] + [!// @Dart 2.13!] ``` #### Common fixes @@ -19113,7 +19113,7 @@ HintCode: the comment to follow the correct format: ```dart - // @dart = 2.9 + // @dart = 2.13 ``` INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION: sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart index 4e71a84fd3b..2a5f92c8498 100644 --- a/pkg/analyzer/test/generated/non_error_resolver_test.dart +++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart @@ -7,6 +7,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/src/dart/element/member.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -1492,7 +1493,9 @@ bool test(C c) => c.method(arg: true); } test_genericTypeAlias_castsAndTypeChecks_hasTypeParameters() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.9 typedef Foo = S Function(T x); @@ -1507,10 +1510,15 @@ main(Object p) { } } '''); + } finally { + noSoundNullSafety = true; + } } test_genericTypeAlias_castsAndTypeChecks_noTypeParameters() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.9 typedef Foo = T Function(T x); @@ -1521,6 +1529,9 @@ main(Object p) { } } '''); + } finally { + noSoundNullSafety = true; + } } test_genericTypeAlias_fieldAndReturnType_noTypeParameters() async { @@ -3123,7 +3134,9 @@ main(Object p) { } test_typePromotion_if_is_and_subThenSuper() async { - await assertNoErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(r''' // @dart = 2.9 class A { var a; @@ -3138,6 +3151,9 @@ main(Object p) { } } '''); + } finally { + noSoundNullSafety = true; + } } test_typePromotion_if_is_parenthesized() async { diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart index f1928a54f40..c93dd1a51f1 100644 --- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart @@ -8,6 +8,7 @@ import 'package:analyzer/src/dart/constant/value.dart'; import 'package:analyzer/src/dart/element/element.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/test_utilities/find_element.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -23,7 +24,9 @@ main() { @reflectiveTest class ConstantResolutionTest extends PubPackageResolutionTest { test_constructor_nullSafe_fromLegacy_super() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { const A(List a); } @@ -33,7 +36,7 @@ class B extends A { } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.8 import 'a.dart'; @@ -41,19 +44,24 @@ const a = []; const b = B(a); '''); - var b = findElement.topVar('b'); - assertType(b.computeConstantValue()!.type, 'B*'); + var b = findElement.topVar('b'); + assertType(b.computeConstantValue()!.type, 'B*'); + } finally { + noSoundNullSafety = true; + } } test_constructor_nullSafe_fromLegacy_this() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { const A(List a) : this(a); const A.second(List a); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.8 import 'a.dart'; @@ -61,8 +69,11 @@ const a = []; const b = A(a); '''); - var b = findElement.topVar('b'); - assertType(b.computeConstantValue()!.type, 'A*'); + var b = findElement.topVar('b'); + assertType(b.computeConstantValue()!.type, 'A*'); + } finally { + noSoundNullSafety = true; + } } test_context_eliminateTypeVariables() async { @@ -87,25 +98,32 @@ class A { } test_field_optIn_fromOptOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static const foo = 42; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; const bar = A.foo; '''); - var bar = findElement.topVar('bar'); - _assertIntValue(bar, 42); + var bar = findElement.topVar('bar'); + _assertIntValue(bar, 42); + } finally { + noSoundNullSafety = true; + } } test_fromEnvironment_optOut_fromOptIn() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.5 const cBool = const bool.fromEnvironment('foo', defaultValue: false); @@ -113,81 +131,100 @@ const cInt = const int.fromEnvironment('foo', defaultValue: 1); const cString = const String.fromEnvironment('foo', defaultValue: 'bar'); '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; const vBool = cBool; const vInt = cInt; const vString = cString; ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - DartObjectImpl evaluate(String name) { - return findElement.topVar(name).computeConstantValue() as DartObjectImpl; + DartObjectImpl evaluate(String name) { + return findElement.topVar(name).computeConstantValue() + as DartObjectImpl; + } + + expect(evaluate('vBool').toBoolValue(), false); + expect(evaluate('vInt').toIntValue(), 1); + expect(evaluate('vString').toStringValue(), 'bar'); + } finally { + noSoundNullSafety = true; } - - expect(evaluate('vBool').toBoolValue(), false); - expect(evaluate('vInt').toIntValue(), 1); - expect(evaluate('vString').toStringValue(), 'bar'); } test_topLevelVariable_optIn_fromOptOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' const foo = 42; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; const bar = foo; '''); - var bar = findElement.topVar('bar'); - assertType(bar.type, 'int*'); - _assertIntValue(bar, 42); + var bar = findElement.topVar('bar'); + assertType(bar.type, 'int*'); + _assertIntValue(bar, 42); + } finally { + noSoundNullSafety = true; + } } test_topLevelVariable_optOut2() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' const a = 42; '''); - newFile('$testPackageLibPath/b.dart', r''' + newFile('$testPackageLibPath/b.dart', r''' import 'a.dart'; const b = a; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'b.dart'; const c = b; '''); - var c = findElement.topVar('c'); - assertType(c.type, 'int*'); - _assertIntValue(c, 42); + var c = findElement.topVar('c'); + assertType(c.type, 'int*'); + _assertIntValue(c, 42); + } finally { + noSoundNullSafety = true; + } } test_topLevelVariable_optOut3() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 const a = int.fromEnvironment('a', defaultValue: 42); '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; const b = a; '''); - var c = findElement.topVar('b'); - assertType(c.type, 'int*'); - _assertIntValue(c, 42); + var c = findElement.topVar('b'); + assertType(c.type, 'int*'); + _assertIntValue(c, 42); + } finally { + noSoundNullSafety = true; + } } void _assertIntValue(VariableElement element, int value) { @@ -409,14 +446,16 @@ extension E on int { /// See https://github.com/dart-lang/sdk/issues/43462 test_useLanguageVersionOfEnclosingLibrary() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class Wrapper { final int value; const Wrapper(Object value) : value = value as int; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.4 import 'a.dart'; @@ -424,5 +463,8 @@ void f() { const Wrapper(0); } '''); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart index b7c00565cae..194fdfa4b1e 100644 --- a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart @@ -2,6 +2,7 @@ // 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. +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'context_collection_resolution.dart'; @@ -17,13 +18,15 @@ main() { class ForEachElementTest extends PubPackageResolutionTest with WithoutNullSafetyMixin { test_optIn_fromOptOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A implements Iterable { Iterator iterator => throw 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; @@ -33,6 +36,9 @@ f(A a) { } } '''); + } finally { + noSoundNullSafety = true; + } } test_withDeclaration_scope() async { diff --git a/pkg/analyzer/test/src/dart/resolution/language_version_test.dart b/pkg/analyzer/test/src/dart/resolution/language_version_test.dart index 67fc64dba25..197327e702e 100644 --- a/pkg/analyzer/test/src/dart/resolution/language_version_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/language_version_test.dart @@ -4,6 +4,7 @@ import 'package:analyzer/src/dart/error/syntactic_errors.dart'; import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'context_collection_resolution.dart'; @@ -125,7 +126,9 @@ extension E on int {} } test_jsonConfigDisablesExtensions_languageOverrideEnables() async { - _configureTestWithJsonConfig(''' + try { + noSoundNullSafety = false; + _configureTestWithJsonConfig(''' { "configVersion": 2, "packages": [ @@ -139,10 +142,13 @@ extension E on int {} } '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart = 2.6 extension E on int {} '''); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart index f048c77d37e..3e2cc888ac9 100644 --- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart @@ -6,6 +6,7 @@ import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/test_utilities/find_element.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'context_collection_resolution.dart'; @@ -339,13 +340,15 @@ A } test_optIn_fromOptOut_class() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { const A(int a); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; @@ -353,7 +356,7 @@ import 'a.dart'; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@A'), r''' + assertResolvedNodeText(findNode.annotation('@A'), r''' Annotation atSign: @ name: SimpleIdentifier @@ -374,17 +377,22 @@ Annotation base: package:test/a.dart::@class::A::@constructor::new isLegacy: true '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_class_constructor() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { final int a; const A.named(this.a); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; @@ -392,8 +400,8 @@ import 'a.dart'; void f() {} '''); - var annotation = findNode.annotation('@A'); - assertResolvedNodeText(annotation, r''' + var annotation = findNode.annotation('@A'); + assertResolvedNodeText(annotation, r''' Annotation atSign: @ name: PrefixedIdentifier @@ -427,22 +435,27 @@ Annotation isLegacy: true '''); - _assertElementAnnotationValueText( - findElement.function('f').metadata[0], r''' + _assertElementAnnotationValueText( + findElement.function('f').metadata[0], r''' A* a: int 42 '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_class_constructor_withDefault() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { final int a; const A.named({this.a = 42}); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; @@ -450,8 +463,8 @@ import 'a.dart'; void f() {} '''); - var annotation = findNode.annotation('@A'); - assertResolvedNodeText(annotation, r''' + var annotation = findNode.annotation('@A'); + assertResolvedNodeText(annotation, r''' Annotation atSign: @ name: PrefixedIdentifier @@ -478,21 +491,26 @@ Annotation isLegacy: true '''); - _assertElementAnnotationValueText( - findElement.function('f').metadata[0], r''' + _assertElementAnnotationValueText( + findElement.function('f').metadata[0], r''' A* a: int 42 '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_class_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static const foo = 42; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; @@ -500,7 +518,7 @@ import 'a.dart'; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@A'), r''' + assertResolvedNodeText(findNode.annotation('@A'), r''' Annotation atSign: @ name: PrefixedIdentifier @@ -524,19 +542,24 @@ Annotation isLegacy: true '''); - _assertElementAnnotationValueText( - findElement.function('f').metadata[0], r''' + _assertElementAnnotationValueText( + findElement.function('f').metadata[0], r''' int 42 variable: package:test/a.dart::@class::A::@field::foo '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' const foo = 42; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; @@ -544,7 +567,7 @@ import 'a.dart'; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@foo'), r''' + assertResolvedNodeText(findNode.annotation('@foo'), r''' Annotation atSign: @ name: SimpleIdentifier @@ -558,21 +581,26 @@ Annotation isLegacy: true '''); - _assertElementAnnotationValueText( - findElement.function('f').metadata[0], r''' + _assertElementAnnotationValueText( + findElement.function('f').metadata[0], r''' int 42 variable: package:test/a.dart::@variable::foo '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_prefix_class() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { const A(int a); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart' as a; @@ -580,7 +608,7 @@ import 'a.dart' as a; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@a.A'), r''' + assertResolvedNodeText(findNode.annotation('@a.A'), r''' Annotation atSign: @ name: PrefixedIdentifier @@ -609,16 +637,21 @@ Annotation base: package:test/a.dart::@class::A::@constructor::new isLegacy: true '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_prefix_class_constructor() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { const A.named(int a); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart' as a; @@ -626,7 +659,7 @@ import 'a.dart' as a; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@a.A'), r''' + assertResolvedNodeText(findNode.annotation('@a.A'), r''' Annotation atSign: @ name: PrefixedIdentifier @@ -662,16 +695,21 @@ Annotation base: package:test/a.dart::@class::A::@constructor::named isLegacy: true '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_prefix_class_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static const foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart' as a; @@ -679,7 +717,7 @@ import 'a.dart' as a; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@a.A'), r''' + assertResolvedNodeText(findNode.annotation('@a.A'), r''' Annotation atSign: @ name: PrefixedIdentifier @@ -705,14 +743,19 @@ Annotation base: package:test/a.dart::@class::A::@getter::foo isLegacy: true '''); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_prefix_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' const foo = 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart' as a; @@ -720,7 +763,7 @@ import 'a.dart' as a; void f() {} '''); - assertResolvedNodeText(findNode.annotation('@a'), r''' + assertResolvedNodeText(findNode.annotation('@a'), r''' Annotation atSign: @ name: PrefixedIdentifier @@ -743,6 +786,9 @@ Annotation base: package:test/a.dart::@getter::foo isLegacy: true '''); + } finally { + noSoundNullSafety = true; + } } test_value_class_inference_namedConstructor() async { diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart index bfebef954ad..f0c8cba20be 100644 --- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart @@ -5,6 +5,7 @@ import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/src/dart/error/syntactic_errors.dart'; import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test/expect.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -21,11 +22,13 @@ main() { class MethodInvocationResolutionTest extends PubPackageResolutionTest with MethodInvocationResolutionTestCases { test_hasReceiver_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.7 import 'a.dart' deferred as a; @@ -33,11 +36,11 @@ main() { a.loadLibrary(); } ''', [ - error(HintCode.UNUSED_IMPORT, 22, 8), - ]); + error(HintCode.UNUSED_IMPORT, 22, 8), + ]); - var node = findNode.methodInvocation('loadLibrary()'); - assertResolvedNodeText(node, r''' + var node = findNode.methodInvocation('loadLibrary()'); + assertResolvedNodeText(node, r''' MethodInvocation target: SimpleIdentifier token: a @@ -56,6 +59,9 @@ MethodInvocation staticInvokeType: Future* Function()* staticType: Future* '''); + } finally { + noSoundNullSafety = true; + } } test_hasReceiver_interfaceQ_Function_call_checked() async { diff --git a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart index 828f515f5fb..7147f7070e8 100644 --- a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'context_collection_resolution.dart'; @@ -18,11 +19,13 @@ main() { class PrefixedIdentifierResolutionTest extends PubPackageResolutionTest with PrefixedIdentifierResolutionTestCases { test_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.7 import 'a.dart' deferred as a; @@ -30,19 +33,22 @@ main() { a.loadLibrary; } ''', [ - error(HintCode.UNUSED_IMPORT, 22, 8), - ]); + error(HintCode.UNUSED_IMPORT, 22, 8), + ]); - var import = findElement.importFind('package:test/a.dart'); + var import = findElement.importFind('package:test/a.dart'); - assertPrefixedIdentifier( - findNode.prefixed('a.loadLibrary'), - element: elementMatcher( - import.importedLibrary.loadLibraryFunction, - isLegacy: true, - ), - type: 'Future* Function()*', - ); + assertPrefixedIdentifier( + findNode.prefixed('a.loadLibrary'), + element: elementMatcher( + import.importedLibrary.loadLibraryFunction, + isLegacy: true, + ), + type: 'Future* Function()*', + ); + } finally { + noSoundNullSafety = true; + } } test_enum_read() async { diff --git a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart index 85fdc469f1f..c677160b971 100644 --- a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'context_collection_resolution.dart'; @@ -35,7 +36,9 @@ enum E { } test_functionReference() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' // @dart = 2.7 import 'dart:math'; @@ -46,18 +49,21 @@ class A { @A([min]) main() {} ''', [ - error(CompileTimeErrorCode.COULD_NOT_INFER, 66, 5), - ]); + error(CompileTimeErrorCode.COULD_NOT_INFER, 66, 5), + ]); - var identifier = findNode.simple('min]'); - assertElement( - identifier, - elementMatcher( - findElement.importFind('dart:math').topFunction('min'), - isLegacy: true, - ), - ); - assertType(identifier, 'T* Function(T*, T*)*'); + var identifier = findNode.simple('min]'); + assertElement( + identifier, + elementMatcher( + findElement.importFind('dart:math').topFunction('min'), + isLegacy: true, + ), + ); + assertType(identifier, 'T* Function(T*, T*)*'); + } finally { + noSoundNullSafety = true; + } } test_implicitCall_tearOff_nullable() async { diff --git a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart index 5c3ff04f7c0..136178f6d84 100644 --- a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart @@ -5,6 +5,7 @@ import 'package:analyzer/src/dart/ast/extensions.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/test_utilities/find_element.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'context_collection_resolution.dart'; @@ -24,343 +25,423 @@ class TypeNameResolutionTest extends PubPackageResolutionTest } test_optIn_fromOptOut_class() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(A a) {} '''); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A*', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A*', + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_class_generic_toBounds() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(A a) {} '''); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A*', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A*', + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_class_generic_toBounds_dynamic() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(A a) {} '''); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A*', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A*', + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_class_generic_typeArguments() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(A a) {} '''); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A*', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A*', + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_functionTypeAlias() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef F = int Function(bool); '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(F a) {} '''); - var element = import_a.typeAlias('F'); + var element = import_a.typeAlias('F'); - var typeName = findNode.namedType('F a'); - assertNamedType(typeName, element, 'int* Function(bool*)*'); + var typeName = findNode.namedType('F a'); + assertNamedType(typeName, element, 'int* Function(bool*)*'); - assertTypeAlias( - typeName.typeOrThrow, - element: element, - typeArguments: [], - ); + assertTypeAlias( + typeName.typeOrThrow, + element: element, + typeArguments: [], + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_functionTypeAlias_generic_dynamic() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef F = T Function(bool); '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(F a) {} '''); - var element = import_a.typeAlias('F'); + var element = import_a.typeAlias('F'); - var typeName = findNode.namedType('F a'); - assertNamedType(typeName, element, 'dynamic Function(bool*)*'); + var typeName = findNode.namedType('F a'); + assertNamedType(typeName, element, 'dynamic Function(bool*)*'); - assertTypeAlias( - typeName.typeOrThrow, - element: element, - typeArguments: ['dynamic'], - ); + assertTypeAlias( + typeName.typeOrThrow, + element: element, + typeArguments: ['dynamic'], + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_functionTypeAlias_generic_toBounds() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef F = T Function(bool); '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(F a) {} '''); - var element = import_a.typeAlias('F'); + var element = import_a.typeAlias('F'); - var typeName = findNode.namedType('F a'); - assertNamedType(typeName, element, 'num* Function(bool*)*'); + var typeName = findNode.namedType('F a'); + assertNamedType(typeName, element, 'num* Function(bool*)*'); - assertTypeAlias( - typeName.typeOrThrow, - element: element, - typeArguments: ['num*'], - ); + assertTypeAlias( + typeName.typeOrThrow, + element: element, + typeArguments: ['num*'], + ); + } finally { + noSoundNullSafety = true; + } } test_optIn_fromOptOut_functionTypeAlias_generic_typeArguments() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef F = T Function(bool); '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import 'a.dart'; f(F a) {} '''); - var element = import_a.typeAlias('F'); + var element = import_a.typeAlias('F'); - var typeName = findNode.namedType('F a'); - assertNamedType(typeName, element, 'int* Function(bool*)*'); + var typeName = findNode.namedType('F a'); + assertNamedType(typeName, element, 'int* Function(bool*)*'); - assertTypeAlias( - typeName.typeOrThrow, - element: element, - typeArguments: ['int*'], - ); + assertTypeAlias( + typeName.typeOrThrow, + element: element, + typeArguments: ['int*'], + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_class() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 class A {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(A a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_class_generic_toBounds() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 class A {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(A a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_class_generic_toBounds_dynamic() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 class A {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(A a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_class_generic_typeArguments() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 class A {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(A a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('A a'), - import_a.class_('A'), - 'A', - ); + assertNamedType( + findNode.namedType('A a'), + import_a.class_('A'), + 'A', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_functionTypeAlias() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 typedef F = int Function(); '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(F a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('F a'), - import_a.typeAlias('F'), - 'int* Function()', - ); + assertNamedType( + findNode.namedType('F a'), + import_a.typeAlias('F'), + 'int* Function()', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_functionTypeAlias_generic_toBounds() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 typedef F = T Function(); '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(F a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('F a'), - import_a.typeAlias('F'), - 'num* Function()', - ); + assertNamedType( + findNode.namedType('F a'), + import_a.typeAlias('F'), + 'num* Function()', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_functionTypeAlias_generic_toBounds_dynamic() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 typedef F = T Function(); '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(F a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('F a'), - import_a.typeAlias('F'), - 'dynamic Function()', - ); + assertNamedType( + findNode.namedType('F a'), + import_a.typeAlias('F'), + 'dynamic Function()', + ); + } finally { + noSoundNullSafety = true; + } } test_optOut_fromOptIn_functionTypeAlias_generic_typeArguments() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.7 typedef F = T Function(); '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' import 'a.dart'; f(F a) {} ''', [ - error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), - ]); + error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8), + ]); - assertNamedType( - findNode.namedType('F a'), - import_a.typeAlias('F'), - 'int* Function()', - ); + assertNamedType( + findNode.namedType('F a'), + import_a.typeAlias('F'), + 'int* Function()', + ); + } finally { + noSoundNullSafety = true; + } } test_typeAlias_asInstanceCreation_explicitNew_typeArguments_interfaceType_none() async { @@ -437,20 +518,25 @@ void f(X a, X b) {} } test_typeAlias_asParameterType_interfaceType_none_inLegacy() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef X = Map; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.9 import 'a.dart'; void f(X a) {} '''); - assertNamedType( - findNode.namedType('X'), - findElement.importFind('package:test/a.dart').typeAlias('X'), - 'Map*', - ); + assertNamedType( + findNode.namedType('X'), + findElement.importFind('package:test/a.dart').typeAlias('X'), + 'Map*', + ); + } finally { + noSoundNullSafety = true; + } } test_typeAlias_asParameterType_interfaceType_question() async { @@ -473,20 +559,25 @@ void f(X a, X b) {} } test_typeAlias_asParameterType_interfaceType_question_inLegacy() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef X = List; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.9 import 'a.dart'; void f(X a) {} '''); - assertNamedType( - findNode.namedType('X'), - findElement.importFind('package:test/a.dart').typeAlias('X'), - 'List*', - ); + assertNamedType( + findNode.namedType('X'), + findElement.importFind('package:test/a.dart').typeAlias('X'), + 'List*', + ); + } finally { + noSoundNullSafety = true; + } } test_typeAlias_asParameterType_Never_none() async { @@ -509,20 +600,25 @@ void f(X a, X? b) {} } test_typeAlias_asParameterType_Never_none_inLegacy() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' typedef X = Never; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.9 import 'a.dart'; void f(X a) {} '''); - assertNamedType( - findNode.namedType('X a'), - findElement.importFind('package:test/a.dart').typeAlias('X'), - 'Null*', - ); + assertNamedType( + findNode.namedType('X a'), + findElement.importFind('package:test/a.dart').typeAlias('X'), + 'Null*', + ); + } finally { + noSoundNullSafety = true; + } } test_typeAlias_asParameterType_Never_question() async { diff --git a/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart b/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart index 0d7369b435b..ffb5bdea328 100644 --- a/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart +++ b/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -72,15 +73,20 @@ void f(Null n) { } test_Null_preNullSafety() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' // @dart=2.9 void f(Null n) { n as int; } ''', [ - error(HintCode.UNNECESSARY_CAST, 33, 8), - ]); + error(HintCode.UNNECESSARY_CAST, 33, 8), + ]); + } finally { + noSoundNullSafety = true; + } } test_nullable_nonNullable() async { diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart index 9bf45bbf5c8..f39ea41724d 100644 --- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart +++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -47,31 +48,41 @@ class C extends A implements B {} } test_class_extends_implements_optOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class I {} class A implements I {} class B implements I {} '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart = 2.5 import 'a.dart'; class C extends A implements B {} '''); + } finally { + noSoundNullSafety = true; + } } test_class_extends_optIn_implements_optOut() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} class B extends A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; class C extends B implements A {} '''); + } finally { + noSoundNullSafety = true; + } } test_class_extends_with() async { diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart index 0526a6f2c79..e5ffe476d24 100644 --- a/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart +++ b/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -75,17 +76,22 @@ var v = const A(null); } test_notGeneric_null_forNonNullable_fromLegacy() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class C { final int f; const C(a) : f = a; } '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart = 2.9 import 'a.dart'; const a = const C(null); '''); + } finally { + noSoundNullSafety = true; + } } test_notGeneric_null_forNonNullable_fromNullSafe() async { diff --git a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart index 79cb199e893..46a6a5a041c 100644 --- a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart +++ b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -19,13 +20,15 @@ main() { @reflectiveTest class CouldNotInferTest extends PubPackageResolutionTest { test_constructor_nullSafe_fromLegacy() async { - newFile('$testPackageLibPath/a.dart', ''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', ''' class C { C(T t); } '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart = 2.8 import 'a.dart'; @@ -33,6 +36,9 @@ void f(dynamic a) { C(a); } '''); + } finally { + noSoundNullSafety = true; + } } test_functionType() async { diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart index 1dbc6ff96bc..eff7852bff4 100644 --- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart +++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart @@ -4,6 +4,7 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -39,13 +40,15 @@ class DeprecatedMemberUse_BasicWorkspace_WithoutNullSafetyTest class DeprecatedMemberUse_BasicWorkspaceTest extends PubPackageResolutionTest with DeprecatedMemberUse_BasicWorkspaceTestCases { test_instanceCreation_namedParameter_fromLegacy() async { - newFile('$workspaceRootPath/aaa/lib/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$workspaceRootPath/aaa/lib/a.dart', r''' class A { A({@deprecated int a}) {} } '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.9 import 'package:aaa/a.dart'; @@ -53,16 +56,21 @@ void f() { A(a: 0); } ''', [ - error(HintCode.DEPRECATED_MEMBER_USE, 60, 1), - ]); + error(HintCode.DEPRECATED_MEMBER_USE, 60, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_namedParameter_ofFunction_fromLegacy() async { - newFile('$workspaceRootPath/aaa/lib/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$workspaceRootPath/aaa/lib/a.dart', r''' void foo({@deprecated int a}) {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.9 import 'package:aaa/a.dart'; @@ -70,18 +78,23 @@ void f() { foo(a: 0); } ''', [ - error(HintCode.DEPRECATED_MEMBER_USE, 62, 1), - ]); + error(HintCode.DEPRECATED_MEMBER_USE, 62, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_namedParameter_ofMethod_fromLegacy() async { - newFile('$workspaceRootPath/aaa/lib/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$workspaceRootPath/aaa/lib/a.dart', r''' class A { void foo({@deprecated int a}) {} } '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.9 import 'package:aaa/a.dart'; @@ -89,18 +102,23 @@ void f(A a) { a.foo(a: 0); } ''', [ - error(HintCode.DEPRECATED_MEMBER_USE, 67, 1), - ]); + error(HintCode.DEPRECATED_MEMBER_USE, 67, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_superConstructorInvocation_namedParameter_fromLegacy() async { - newFile('$workspaceRootPath/aaa/lib/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$workspaceRootPath/aaa/lib/a.dart', r''' class A { A({@deprecated int a}) {} } '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.9 import 'package:aaa/a.dart'; @@ -108,8 +126,11 @@ class B extends A { B() : super(a: 0); } ''', [ - error(HintCode.DEPRECATED_MEMBER_USE, 79, 1), - ]); + error(HintCode.DEPRECATED_MEMBER_USE, 79, 1), + ]); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart b/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart index 4dbaeab8b59..9f952d71726 100644 --- a/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart +++ b/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart @@ -4,6 +4,7 @@ import 'package:analyzer/src/dart/error/syntactic_errors.dart'; import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -33,7 +34,9 @@ main() { } test_constructor_tearoffs_disabled_grammar_pre_nnbd() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' // @dart=2.9 class Foo { const Foo.bar(); @@ -43,9 +46,12 @@ main() { Foo.bar.baz(); } ''', [ - error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 83, 5), - error(CompileTimeErrorCode.UNDEFINED_METHOD, 93, 3), - ]); + error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 83, 5), + error(CompileTimeErrorCode.UNDEFINED_METHOD, 93, 3), + ]); + } finally { + noSoundNullSafety = true; + } } test_nonFunctionTypeAliases_disabled() async { diff --git a/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart index dc6b3de3e21..3654285c934 100644 --- a/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart +++ b/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/dart/error/ffi_code.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -17,25 +18,35 @@ main() { class FieldInStructWithInitializerTest extends PubPackageResolutionTest with WithoutNullSafetyMixin { test_instance_withInitializer() async { - await assertErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(r''' import 'dart:ffi'; class C extends Struct { Pointer p = nullptr; } ''', [ - error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 54, 1), - ]); + error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 54, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_instance_withInitializer2() async { - await assertErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(r''' import 'dart:ffi'; class C extends Union { Pointer p = nullptr; } ''', [ - error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 53, 1), - ]); + error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 53, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_instance_withoutInitializer() async { diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart index b0027ed73c1..9b0c71d743f 100644 --- a/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart +++ b/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/dart/error/ffi_code.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -17,27 +18,37 @@ main() { class FieldInitializerInStructTest extends PubPackageResolutionTest with WithoutNullSafetyMixin { test_fieldInitializer() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' import 'dart:ffi'; class C extends Struct { @Int32() int f; C() : f = 0; } ''', [ - error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 70, 5), - ]); + error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 70, 5), + ]); + } finally { + noSoundNullSafety = true; + } } test_fieldInitializer2() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' import 'dart:ffi'; class C extends Union { @Int32() int f; C() : f = 0; } ''', [ - error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 69, 5), - ]); + error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 69, 5), + ]); + } finally { + noSoundNullSafety = true; + } } test_superInitializer() async { diff --git a/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart b/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart index 994c09b5b44..efc7c233909 100644 --- a/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart +++ b/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart @@ -2,11 +2,8 @@ // 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. -import 'package:analyzer/dart/analysis/context_root.dart'; import 'package:analyzer/src/error/codes.dart'; -import 'package:analyzer/src/generated/engine.dart'; -import 'package:analyzer/src/generated/sdk.dart'; -import 'package:pub_semver/src/version_constraint.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -34,6 +31,7 @@ void f() {} } test_hasOverride_less() async { + noSoundNullSafety = true; await assertErrorsInCode(r''' // @dart = 2.9 int a = null; @@ -43,43 +41,15 @@ int a = null; } test_hasPackageLanguage_less_hasOverride_greater() async { - writeTestPackageConfig( - PackageConfigFileBuilder(), - languageVersion: '2.9', - ); - await assertNoErrorsInCode(r''' -// @dart = 2.12 +// @dart = 2.14 void f() {} '''); } - test_hasPackageLanguage_less_noOverride_less() async { - writeTestPackageConfig( - PackageConfigFileBuilder(), - languageVersion: '2.9', - ); - - await assertErrorsInCode(r''' -void f() {} -''', [ - error(CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE, 0, 0), - ]); - } - test_noOverride() async { await assertNoErrorsInCode(r''' void f() {} '''); } - - @override - void updateAnalysisOptions({ - required AnalysisOptionsImpl analysisOptions, - required ContextRoot contextRoot, - required DartSdk sdk, - }) { - analysisOptions.sourceLanguageConstraint = - VersionConstraint.parse('>= 2.12.0'); - } } diff --git a/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart b/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart index ed322228886..f3f81de6562 100644 --- a/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart +++ b/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -16,16 +17,21 @@ main() { @reflectiveTest class ImportOfLegacyLibraryInoNullSafeTest extends PubPackageResolutionTest { test_legacy_into_legacy() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' // @dart = 2.9 class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.9 import 'a.dart'; void f(A a) {} '''); + } finally { + noSoundNullSafety = true; + } } test_legacy_into_nullSafe() async { @@ -43,15 +49,20 @@ void f(A a) {} } test_nullSafe_into_legacy() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.9 import 'a.dart'; void f(A a) {} '''); + } finally { + noSoundNullSafety = true; + } } test_nullSafe_into_nullSafe() async { diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart index f0abbbcb4f6..c6dd4f23447 100644 --- a/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart @@ -22,7 +22,7 @@ const a = 0; '''); await assertNoErrorsInCode(r''' -// @dart = 2.8 +// @dart = 2.12 import 'a.dart'; void f(int e) { diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart index c67f41800c1..c387f9f2508 100644 --- a/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../../generated/test_support.dart'; @@ -26,15 +27,15 @@ class InconsistentLanguageVersionOverrideTest extends PubPackageResolutionTest test_both_different() async { await _checkLibraryAndPart( libraryContent: r''' -// @dart = 2.5 +// @dart = 2.12 part 'b.dart'; ''', partContent: r''' -// @dart = 2.6 +// @dart = 2.13 part of 'a.dart'; ''', libraryErrors: [ - error(_errorCode, 20, 8), + error(_errorCode, 21, 8), ], ); } @@ -42,11 +43,11 @@ part of 'a.dart'; test_both_same() async { await _checkLibraryAndPart( libraryContent: r''' -// @dart = 2.5 +// @dart = 2.12 part 'b.dart'; ''', partContent: r''' -// @dart = 2.5 +// @dart = 2.12 part of 'a.dart'; ''', libraryErrors: [], @@ -66,18 +67,23 @@ part of 'a.dart'; } test_onlyLibrary() async { - await _checkLibraryAndPart( - libraryContent: r''' + try { + noSoundNullSafety = false; + await _checkLibraryAndPart( + libraryContent: r''' // @dart = 2.5 part 'b.dart'; ''', - partContent: r''' + partContent: r''' part of 'a.dart'; ''', - libraryErrors: [ - error(_errorCode, 20, 8), - ], - ); + libraryErrors: [ + error(_errorCode, 20, 8), + ], + ); + } finally { + noSoundNullSafety = true; + } } test_onlyPart() async { diff --git a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart index 67c1c0845b0..27191d51423 100644 --- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart +++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart @@ -49,14 +49,14 @@ int? a; } test_lessThanPackage() async { - _configureTestPackageLanguageVersion('2.5'); + _configureTestPackageLanguageVersion('2.19'); await assertNoErrorsInCode(r''' -// @dart = 2.4 +// @dart = 2.18 class A {} '''); _assertUnitLanguageVersion( - package: Version.parse('2.5.0'), - override: Version.parse('2.4.0'), + package: Version.parse('2.19.0'), + override: Version.parse('2.18.0'), ); } diff --git a/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart index d6b76ce30d7..5700538dd26 100644 --- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart +++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart @@ -35,21 +35,21 @@ int i = 0; test_correct_withMultipleWhitespace() async { await assertNoErrorsInCode(''' -// @dart = 2.0${" "} +// @dart = 2.19${" "} int i = 0; '''); } test_correct_withoutWhitespace() async { await assertNoErrorsInCode(r''' -//@dart=2.0 +//@dart=2.19 int i = 0; '''); } test_correct_withWhitespace() async { await assertNoErrorsInCode(r''' -// @dart = 2.0 +// @dart = 2.19 int i = 0; '''); } @@ -74,9 +74,9 @@ int i = 0; test_invalidOverrideFollowsValidOverride() async { await assertNoErrorsInCode(r''' -// @dart = 2.0 +// @dart = 2.19 // comment. -// @dart >= 2.0 +// @dart >= 2.19 int i = 0; '''); } @@ -116,7 +116,7 @@ class A {} test_location_beforeDeclaration() async { await assertNoErrorsInCode(r''' -// @dart = 2.5 +// @dart = 2.19 class A {} '''); } @@ -198,7 +198,7 @@ int i = 0; test_noWhitespace() async { await assertNoErrorsInCode(r''' -//@dart=2.0 +//@dart=2.19 int i = 0; '''); } @@ -213,7 +213,7 @@ int i = 0; test_shebangLine() async { await assertNoErrorsInCode(r''' #!/usr/bin/dart -// @dart = 2.0 +// @dart = 2.19 int i = 0; '''); } diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart index 7a6a04d122f..619593b583a 100644 --- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart +++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -215,13 +216,15 @@ class B implements A { } test_method_parameter_functionTyped_optOut_extends_optIn() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' abstract class A { A catchError(void Function(Object) a); } '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart=2.6 import 'a.dart'; @@ -229,16 +232,21 @@ class B implements A { A catchError(void Function(dynamic) a) => this; } '''); + } finally { + noSoundNullSafety = true; + } } test_method_parameter_interfaceOptOut_concreteOptIn() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { void foo(Object a) {} } '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart=2.6 import 'a.dart'; @@ -246,6 +254,9 @@ class B extends A { void foo(dynamic a); } '''); + } finally { + noSoundNullSafety = true; + } } test_mixedInheritance_1() async { diff --git a/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart b/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart index 77ac7e95c9f..eb66e03407f 100644 --- a/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart +++ b/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -26,24 +27,36 @@ void f() { } test_literal_null() async { - await assertErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(r''' // @dart = 2.9 void f() { null(); } ''', [ - error(CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 28, 4), - ]); + error( + CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 28, 4), + ]); + } finally { + noSoundNullSafety = true; + } } test_type_Null() async { - await assertErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(r''' // @dart = 2.9 void f(Null a) { a(); } ''', [ - error(CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 34, 1), - ]); + error( + CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 34, 1), + ]); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart index 7ef82a2c52a..8d2122f003a 100644 --- a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart +++ b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../../generated/test_support.dart'; @@ -78,12 +79,14 @@ void f() {} } test_constructor_legacy_argumentGiven() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A({required int a}); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import "a.dart"; @@ -91,15 +94,20 @@ void f() { A(a: 0); } '''); + } finally { + noSoundNullSafety = true; + } } test_constructor_legacy_missingArgument() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A({required int a}); } '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.7 import "a.dart"; @@ -107,8 +115,11 @@ void f() { A(); } ''', [ - error(HintCode.MISSING_REQUIRED_PARAM, 46, 1), - ]); + error(HintCode.MISSING_REQUIRED_PARAM, 46, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_constructor_nullSafe_argumentGiven() async { @@ -222,10 +233,12 @@ main() { } test_function_legacy_argumentGiven() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' void foo({required int a}) {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import "a.dart"; @@ -233,13 +246,18 @@ void f() { foo(a: 0); } '''); + } finally { + noSoundNullSafety = true; + } } test_function_legacy_missingArgument() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' void foo({required int a}) {} '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.7 import "a.dart"; @@ -247,8 +265,11 @@ void f() { foo(); } ''', [ - error(HintCode.MISSING_REQUIRED_PARAM, 46, 3), - ]); + error(HintCode.MISSING_REQUIRED_PARAM, 46, 3), + ]); + } finally { + noSoundNullSafety = true; + } } test_functionInvocation() async { @@ -292,12 +313,14 @@ f() { } test_method_legacy_argumentGiven() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { void foo({required int a}) {} } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.7 import "a.dart"; @@ -305,15 +328,20 @@ void f(A a) { a.foo(a: 0); } '''); + } finally { + noSoundNullSafety = true; + } } test_method_legacy_missingArgument() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { void foo({required int a}) {} } '''); - await assertErrorsInCode(r''' + await assertErrorsInCode(r''' // @dart = 2.7 import "a.dart"; @@ -321,8 +349,11 @@ void f(A a) { a.foo(); } ''', [ - error(HintCode.MISSING_REQUIRED_PARAM, 51, 3), - ]); + error(HintCode.MISSING_REQUIRED_PARAM, 51, 3), + ]); + } finally { + noSoundNullSafety = true; + } } test_typedef_function() async { diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart index bcc6ccdef6b..86ec7b61b34 100644 --- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart +++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -36,12 +37,14 @@ dynamic f() {} } test_function_sync_block_Never() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' Never foo() { throw 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.8 import 'a.dart'; @@ -49,6 +52,9 @@ int f() { foo(); } '''); + } finally { + noSoundNullSafety = true; + } } test_function_sync_block_Null() async { diff --git a/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart index 3b2bdfa70aa..73411bdef64 100644 --- a/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart +++ b/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart @@ -2,6 +2,7 @@ // 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. +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -22,22 +23,27 @@ main() { class MixinInferenceNoPossibleSubstitutionTest extends PubPackageResolutionTest with MixinInferenceNoPossibleSubstitutionTestCases { test_valid_nonNullableMixins_legacyApplication() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} mixin B on A {} mixin C on A {} '''); - await assertNoErrorsInCode(''' + await assertNoErrorsInCode(''' // @dart=2.8 import 'a.dart'; class D extends A with B, C {} '''); - assertType(findNode.namedType('B'), 'B*'); - assertType(findNode.namedType('C {}'), 'C*'); + assertType(findNode.namedType('B'), 'B*'); + assertType(findNode.namedType('C {}'), 'C*'); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart index 800c2848767..4e46e6f33e4 100644 --- a/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart +++ b/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -80,12 +81,14 @@ class B extends A { } test_super_requiredNamed_legacySubclass_explicitConstructor() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A({required String s}); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.8 import 'a.dart'; @@ -93,20 +96,28 @@ class B extends A { B(); } '''); + } finally { + noSoundNullSafety = true; + } } test_super_requiredNamed_legacySubclass_implicitConstructor() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A({required String s}); }O '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.8 import 'a.dart'; class B extends A {} '''); + } finally { + noSoundNullSafety = true; + } } test_super_requiredNamed_subclass_explicit() async { @@ -258,7 +269,9 @@ class B extends A { } test_super_requiredPositional_subclass_explicit_language214() async { - await assertErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(r''' // @dart = 2.14 class A { A(p); @@ -267,8 +280,12 @@ class B extends A { B(); } ''', [ - error(CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, 58, 1), - ]); + error( + CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, 58, 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_super_requiredPositional_subclass_external() async { diff --git a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart index e02e36aece9..d8b98cb3a8a 100644 --- a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart +++ b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart @@ -6,6 +6,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/src/dart/element/member.dart'; import 'package:analyzer/src/dart/error/syntactic_errors.dart'; import 'package:analyzer/src/test_utilities/find_element.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -24,12 +25,14 @@ class NonNullOptOutTest extends PubPackageResolutionTest { } test_assignment_indexExpression() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { void operator[]=(int a, int b) {} } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -38,8 +41,8 @@ main(A a) { } '''); - var assignment = findNode.assignment(' = null;'); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment(' = null;'); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: IndexExpression target: SimpleIdentifier @@ -72,15 +75,20 @@ AssignmentExpression staticElement: staticType: Null* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_prefixedIdentifier_instanceTarget_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -89,8 +97,8 @@ main(A a) { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PrefixedIdentifier prefix: SimpleIdentifier @@ -120,16 +128,21 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_prefixedIdentifier_instanceTarget_extension_setter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { void set foo(int _) {} } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -138,8 +151,8 @@ main(A a) { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PrefixedIdentifier prefix: SimpleIdentifier @@ -169,15 +182,20 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_prefixedIdentifier_staticTarget_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -186,8 +204,8 @@ main() { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PrefixedIdentifier prefix: SimpleIdentifier @@ -217,15 +235,20 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_prefixedIdentifier_staticTarget_extension_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on int { static int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -234,8 +257,8 @@ main() { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PrefixedIdentifier prefix: SimpleIdentifier @@ -265,13 +288,18 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_prefixedIdentifier_topLevelVariable() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int foo = 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart' as p; @@ -280,8 +308,8 @@ main() { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PrefixedIdentifier prefix: SimpleIdentifier @@ -311,15 +339,20 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_propertyAccess_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -328,8 +361,8 @@ main() { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PropertyAccess target: InstanceCreationExpression @@ -369,16 +402,21 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_propertyAccess_extension_setter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { void set foo(int a) {} } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -387,8 +425,8 @@ main() { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PropertyAccess target: InstanceCreationExpression @@ -428,16 +466,21 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_propertyAccess_extensionOverride_setter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { void set foo(int a) {} } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -446,8 +489,8 @@ main(A a) { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PropertyAccess target: ExtensionOverride @@ -488,15 +531,20 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_propertyAccess_superTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -507,8 +555,8 @@ class B extends A { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: PropertyAccess target: SuperExpression @@ -536,13 +584,18 @@ AssignmentExpression staticElement: staticType: int* '''); + } finally { + noSoundNullSafety = true; + } } test_assignment_simpleIdentifier_topLevelVariable() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int foo = 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -551,8 +604,8 @@ main() { } '''); - var assignment = findNode.assignment('foo ='); - assertResolvedNodeText(assignment, r''' + var assignment = findNode.assignment('foo ='); + assertResolvedNodeText(assignment, r''' AssignmentExpression leftHandSide: SimpleIdentifier token: foo @@ -574,15 +627,20 @@ AssignmentExpression staticElement: staticType: Null* '''); + } finally { + noSoundNullSafety = true; + } } test_binaryExpression() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int operator+(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -590,19 +648,24 @@ main(A a) { a + null; } '''); - var binaryExpression = findNode.binary('a +'); - assertInvokeType(binaryExpression, 'int* Function(int*)*'); - assertType(binaryExpression, 'int*'); + var binaryExpression = findNode.binary('a +'); + assertInvokeType(binaryExpression, 'int* Function(int*)*'); + assertType(binaryExpression, 'int*'); - var element = binaryExpression.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('+')); + var element = binaryExpression.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('+')); + } finally { + noSoundNullSafety = true; + } } test_functionExpressionInvocation() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int Function(int, int?)? foo; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -610,24 +673,29 @@ main() { foo(null, null); } '''); - var invocation = findNode.functionExpressionInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.functionExpressionInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.topGet('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.topGet('foo')); + } finally { + noSoundNullSafety = true; + } } test_functionExpressionInvocation_call() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int call(int a, int? b) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -635,24 +703,29 @@ main(A a) { a(null, null); } '''); - var invocation = findNode.functionExpressionInvocation('a(null'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.functionExpressionInvocation('a(null'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = invocation.function; - assertType(identifier, 'A*'); + var identifier = invocation.function; + assertType(identifier, 'A*'); - var element = invocation.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('call')); + var element = invocation.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('call')); + } finally { + noSoundNullSafety = true; + } } test_functionExpressionInvocation_extension_staticTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on int { static int Function(int) get foo => (_) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -660,24 +733,29 @@ main() { E.foo(null); } '''); - var invocation = findNode.functionExpressionInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.functionExpressionInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_instanceCreation() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A(int a, int? b); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -685,22 +763,27 @@ main() { A(null, null); } '''); - var instanceCreation = findNode.instanceCreation('A(null'); - assertType(instanceCreation, 'A*'); + var instanceCreation = findNode.instanceCreation('A(null'); + assertType(instanceCreation, 'A*'); - _assertLegacyMember( - instanceCreation.constructorName.staticElement, - _import_a.unnamedConstructor('A'), - ); + _assertLegacyMember( + instanceCreation.constructorName.staticElement, + _import_a.unnamedConstructor('A'), + ); + } finally { + noSoundNullSafety = true; + } } test_instanceCreation_generic() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A(T a, T? b); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -708,38 +791,48 @@ main() { A(null, null); } '''); - var instanceCreation = findNode.instanceCreation('A(null'); - assertType(instanceCreation, 'A*'); + var instanceCreation = findNode.instanceCreation('A(null'); + assertType(instanceCreation, 'A*'); - _assertLegacyMember( - instanceCreation.constructorName.staticElement, - _import_a.unnamedConstructor('A'), - expectedSubstitution: {'T': 'int*'}, - ); + _assertLegacyMember( + instanceCreation.constructorName.staticElement, + _import_a.unnamedConstructor('A'), + expectedSubstitution: {'T': 'int*'}, + ); + } finally { + noSoundNullSafety = true; + } } test_instanceCreation_generic_instantiateToBounds() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; var v = A(); '''); - var v = findElement.topVar('v'); - assertType(v.type, 'A*'); + var v = findElement.topVar('v'); + assertType(v.type, 'A*'); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_extension_functionTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on void Function() { int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -747,24 +840,29 @@ main(void Function() a) { a.foo(null); } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_extension_interfaceTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on int { int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -772,25 +870,30 @@ main() { 0.foo(null); } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_extension_nullTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -800,24 +903,29 @@ class B extends A { } } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_extension_staticTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on int { static int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -825,24 +933,29 @@ main() { E.foo(null); } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_extensionOverride() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on int { int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -850,22 +963,27 @@ main() { E(0).foo(null); } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_function() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int foo(int a, int? b) => 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -873,22 +991,27 @@ main() { foo(null, null); } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as FunctionElement; - _assertLegacyMember(element, _import_a.topFunction('foo')); + var element = identifier.staticElement as FunctionElement; + _assertLegacyMember(element, _import_a.topFunction('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_function_prefixed() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int foo(int a, int? b) => 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart' as p; @@ -896,24 +1019,29 @@ main() { p.foo(null, null); } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as FunctionElement; - _assertLegacyMember(element, _import_a.topFunction('foo')); + var element = identifier.staticElement as FunctionElement; + _assertLegacyMember(element, _import_a.topFunction('foo')); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_method_cascade() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo(int a, int? b) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -921,24 +1049,29 @@ main(A a) { a..foo(null, null); } '''); - var invocation = findNode.methodInvocation('foo('); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo('); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as MethodElement; - assertType(element.type, 'int* Function(int*, int*)*'); + var element = identifier.staticElement as MethodElement; + assertType(element.type, 'int* Function(int*, int*)*'); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_method_interfaceTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo(int a, int? b) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -946,24 +1079,29 @@ main(A a) { a.foo(null, null); } '''); - var invocation = findNode.methodInvocation('a.foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('a.foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as MethodElement; - assertType(element.type, 'int* Function(int*, int*)*'); + var element = identifier.staticElement as MethodElement; + assertType(element.type, 'int* Function(int*, int*)*'); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_method_nullTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo(int a, int? b) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -973,24 +1111,29 @@ class B extends A { } } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as MethodElement; - assertType(element.type, 'int* Function(int*, int*)*'); + var element = identifier.staticElement as MethodElement; + assertType(element.type, 'int* Function(int*, int*)*'); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_method_staticTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static int foo(int a, int? b) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -998,24 +1141,29 @@ main() { A.foo(null, null); } '''); - var invocation = findNode.methodInvocation('A.foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('A.foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as MethodElement; - assertType(element.type, 'int* Function(int*, int*)*'); + var element = identifier.staticElement as MethodElement; + assertType(element.type, 'int* Function(int*, int*)*'); + } finally { + noSoundNullSafety = true; + } } test_methodInvocation_method_superTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo(int a, int? b) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1025,51 +1173,71 @@ class B extends A { } } '''); - var invocation = findNode.methodInvocation('foo'); - assertInvokeType(invocation, 'int* Function(int*, int*)*'); - assertType(invocation, 'int*'); + var invocation = findNode.methodInvocation('foo'); + assertInvokeType(invocation, 'int* Function(int*, int*)*'); + assertType(invocation, 'int*'); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*, int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*, int*)*'); - var element = identifier.staticElement as MethodElement; - assertType(element.type, 'int* Function(int*, int*)*'); + var element = identifier.staticElement as MethodElement; + assertType(element.type, 'int* Function(int*, int*)*'); + } finally { + noSoundNullSafety = true; + } } test_nnbd_optOut_invalidSyntax() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' // @dart = 2.2 // NNBD syntax is not allowed f(x, z) { (x is String?) ? x : z; } ''', [error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 67, 1)]); + } finally { + noSoundNullSafety = true; + } } test_nnbd_optOut_late() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.2 class C { // "late" is allowed as an identifier int late; } '''); + } finally { + noSoundNullSafety = true; + } } test_nnbd_optOut_transformsOptedInSignatures() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.2 f(String x) { x + null; // OK because we're in a nullable library. } '''); + } finally { + noSoundNullSafety = true; + } } test_postfixExpression() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A operator+(int a) => this; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1077,20 +1245,25 @@ main(A a) { a++; } '''); - var prefixExpression = findNode.postfix('a++'); - assertType(prefixExpression, 'A*'); + var prefixExpression = findNode.postfix('a++'); + assertType(prefixExpression, 'A*'); - var element = prefixExpression.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('+')); + var element = prefixExpression.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('+')); + } finally { + noSoundNullSafety = true; + } } test_prefixExpression() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int operator-() => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1098,20 +1271,25 @@ main(A a) { -a; } '''); - var prefixExpression = findNode.prefix('-a'); - assertType(prefixExpression, 'int*'); + var prefixExpression = findNode.prefix('-a'); + assertType(prefixExpression, 'int*'); - var element = prefixExpression.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('unary-')); + var element = prefixExpression.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('unary-')); + } finally { + noSoundNullSafety = true; + } } test_read_indexExpression_class() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int operator[](int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1119,20 +1297,25 @@ main(A a) { a[null]; } '''); - var indexExpression = findNode.index('a['); - assertType(indexExpression, 'int*'); + var indexExpression = findNode.index('a['); + assertType(indexExpression, 'int*'); - var element = indexExpression.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('[]')); + var element = indexExpression.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('[]')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_instanceTarget_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1140,24 +1323,29 @@ main(A a) { a.foo; } '''); - var prefixedIdentifier = findNode.prefixed('a.foo'); - assertType(prefixedIdentifier, 'int*'); + var prefixedIdentifier = findNode.prefixed('a.foo'); + assertType(prefixedIdentifier, 'int*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_instanceTarget_extension_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { int get foo => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1165,23 +1353,28 @@ main(A a) { a.foo; } '''); - var prefixedIdentifier = findNode.prefixed('a.foo'); - assertType(prefixedIdentifier, 'int*'); + var prefixedIdentifier = findNode.prefixed('a.foo'); + assertType(prefixedIdentifier, 'int*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_staticTarget_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static int foo; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1189,23 +1382,28 @@ main() { A.foo; } '''); - var prefixedIdentifier = findNode.prefixed('A.foo'); - assertType(prefixedIdentifier, 'int*'); + var prefixedIdentifier = findNode.prefixed('A.foo'); + assertType(prefixedIdentifier, 'int*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_staticTarget_class_method() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { static int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1213,23 +1411,28 @@ main() { A.foo; } '''); - var prefixedIdentifier = findNode.prefixed('A.foo'); - assertType(prefixedIdentifier, 'int* Function(int*)*'); + var prefixedIdentifier = findNode.prefixed('A.foo'); + assertType(prefixedIdentifier, 'int* Function(int*)*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int* Function(int*)*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_staticTarget_extension_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E { static int foo; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1237,23 +1440,28 @@ main() { E.foo; } '''); - var prefixedIdentifier = findNode.prefixed('E.foo'); - assertType(prefixedIdentifier, 'int*'); + var prefixedIdentifier = findNode.prefixed('E.foo'); + assertType(prefixedIdentifier, 'int*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_staticTarget_extension_method() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E { static int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1261,21 +1469,26 @@ main() { E.foo; } '''); - var prefixedIdentifier = findNode.prefixed('E.foo'); - assertType(prefixedIdentifier, 'int* Function(int*)*'); + var prefixedIdentifier = findNode.prefixed('E.foo'); + assertType(prefixedIdentifier, 'int* Function(int*)*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int* Function(int*)*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_prefixedIdentifier_topLevelVariable() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int foo = 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart' as p; @@ -1283,23 +1496,28 @@ main() { p.foo; } '''); - var prefixedIdentifier = findNode.prefixed('p.foo'); - assertType(prefixedIdentifier, 'int*'); + var prefixedIdentifier = findNode.prefixed('p.foo'); + assertType(prefixedIdentifier, 'int*'); - var identifier = prefixedIdentifier.identifier; - assertType(identifier, 'int*'); + var identifier = prefixedIdentifier.identifier; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.topGet('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.topGet('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_propertyAccessor_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1307,23 +1525,28 @@ main() { A().foo; } '''); - var propertyAccess = findNode.propertyAccess('foo'); - assertType(propertyAccess, 'int*'); + var propertyAccess = findNode.propertyAccess('foo'); + assertType(propertyAccess, 'int*'); - var identifier = propertyAccess.propertyName; - assertType(identifier, 'int*'); + var identifier = propertyAccess.propertyName; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_propertyAccessor_class_method() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo() => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1331,24 +1554,29 @@ main() { A().foo; } '''); - var propertyAccess = findNode.propertyAccess('foo'); - assertType(propertyAccess, 'int* Function()*'); + var propertyAccess = findNode.propertyAccess('foo'); + assertType(propertyAccess, 'int* Function()*'); - var identifier = propertyAccess.propertyName; - assertType(identifier, 'int* Function()*'); + var identifier = propertyAccess.propertyName; + assertType(identifier, 'int* Function()*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_propertyAccessor_extensionOverride_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { int get foo => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1356,23 +1584,28 @@ main(A a) { E(a).foo; } '''); - var propertyAccess = findNode.propertyAccess('foo'); - assertType(propertyAccess, 'int*'); + var propertyAccess = findNode.propertyAccess('foo'); + assertType(propertyAccess, 'int*'); - var identifier = propertyAccess.propertyName; - assertType(identifier, 'int*'); + var identifier = propertyAccess.propertyName; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_propertyAccessor_superTarget() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1382,23 +1615,28 @@ class B extends A { } } '''); - var propertyAccess = findNode.propertyAccess('foo'); - assertType(propertyAccess, 'int*'); + var propertyAccess = findNode.propertyAccess('foo'); + assertType(propertyAccess, 'int*'); - var identifier = propertyAccess.propertyName; - assertType(identifier, 'int*'); + var identifier = propertyAccess.propertyName; + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_simpleIdentifier_class_field() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo = 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1408,20 +1646,25 @@ class B extends A { } } '''); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_simpleIdentifier_class_method() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1431,21 +1674,26 @@ class B extends A { } } '''); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_simpleIdentifier_extension_getter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { int get foo => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1455,21 +1703,26 @@ class B extends A { } } '''); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.getter('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.getter('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_simpleIdentifier_extension_method() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} extension E on A { int foo(int a) => 0; } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1479,18 +1732,23 @@ class B extends A { } } '''); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int* Function(int*)*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int* Function(int*)*'); - var element = identifier.staticElement as MethodElement; - _assertLegacyMember(element, _import_a.method('foo')); + var element = identifier.staticElement as MethodElement; + _assertLegacyMember(element, _import_a.method('foo')); + } finally { + noSoundNullSafety = true; + } } test_read_simpleIdentifier_topLevelVariable() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' int foo = 0; '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1498,20 +1756,25 @@ main() { foo; } '''); - var identifier = findNode.simple('foo'); - assertType(identifier, 'int*'); + var identifier = findNode.simple('foo'); + assertType(identifier, 'int*'); - var element = identifier.staticElement as PropertyAccessorElement; - _assertLegacyMember(element, _import_a.topGet('foo')); + var element = identifier.staticElement as PropertyAccessorElement; + _assertLegacyMember(element, _import_a.topGet('foo')); + } finally { + noSoundNullSafety = true; + } } test_superConstructorInvocation() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { A(int a, int? b); } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart = 2.5 import 'a.dart'; @@ -1519,12 +1782,15 @@ class B extends A { B() : super(null, null); } '''); - var instanceCreation = findNode.superConstructorInvocation('super('); + var instanceCreation = findNode.superConstructorInvocation('super('); - _assertLegacyMember( - instanceCreation.staticElement, - _import_a.unnamedConstructor('A'), - ); + _assertLegacyMember( + instanceCreation.staticElement, + _import_a.unnamedConstructor('A'), + ); + } finally { + noSoundNullSafety = true; + } } void _assertLegacyMember( diff --git a/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart b/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart index 5e9409dbd9b..90b423ff6a0 100644 --- a/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart +++ b/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/dart/error/hint_codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -36,7 +37,9 @@ void f() { } test_legacy() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart=2.9 import 'dart:async'; @@ -46,6 +49,9 @@ void f() { c.complete(null); } '''); + } finally { + noSoundNullSafety = true; + } } test_null() async { @@ -98,13 +104,18 @@ void f() { } test_legacy() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart=2.9 void f() { Future.value(); Future.value(null); } '''); + } finally { + noSoundNullSafety = true; + } } test_null() async { diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart index 320049afd79..ac9a99571c2 100644 --- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart +++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -109,7 +110,9 @@ class A { } test_optOut() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.7 void f() { @@ -118,5 +121,8 @@ void f() { } } '''); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart index 7f871f87e1d..f7c7922b44e 100644 --- a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart +++ b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -24,12 +25,17 @@ Never foo = (throw 42); } test_experimentEnabled_libraryOptedOut() async { - await verifyVersion('2.7.0', r''' + try { + noSoundNullSafety = false; + await verifyVersion('2.7.0', r''' // @dart = 2.7 Never foo = (throw 42); ''', expectedErrors: [ - error(StaticWarningCode.SDK_VERSION_NEVER, 15, 5), - ]); + error(StaticWarningCode.SDK_VERSION_NEVER, 15, 5), + ]); + } finally { + noSoundNullSafety = true; + } } } diff --git a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart index b373ca83f28..0b1fe1c210f 100644 --- a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart +++ b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -49,25 +50,32 @@ enum E { } test_extends_optIn_fromOptOut_Null() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.6 import 'a.dart'; class A1 extends A {} '''); + } finally { + noSoundNullSafety = true; + } } test_extends_optIn_fromOptOut_otherTypeParameter() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' void foo() { } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.6 import 'a.dart'; @@ -78,21 +86,29 @@ main() { foo(); } '''); + } finally { + noSoundNullSafety = true; + } } test_extensionOverride_optIn_fromOptOut_Null() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' extension E on List { void m() {} } '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.6 import 'a.dart'; f() => E([]).m(); '''); + } finally { + noSoundNullSafety = true; + } } test_functionReference() async { @@ -146,16 +162,21 @@ void f(CB a) {} } test_instanceCreation_optIn_fromOptOut_Null() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.6 import 'a.dart'; f() => A(); '''); + } finally { + noSoundNullSafety = true; + } } test_metadata_matching() async { @@ -222,17 +243,22 @@ void g() { } test_methodInvocation_optIn_fromOptOut_Null() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' class A { void m() {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.6 import 'a.dart'; f() => A().m(); '''); + } finally { + noSoundNullSafety = true; + } } test_nonFunctionTypeAlias_body_typeArgument_mismatch() async { @@ -340,13 +366,15 @@ foo(G g) {} } test_redirectingConstructor_optIn_fromOptOut_Null() async { - newFile('$testPackageLibPath/a.dart', r''' + try { + noSoundNullSafety = false; + newFile('$testPackageLibPath/a.dart', r''' import 'test.dart'; class A implements B {} '''); - await assertNoErrorsInCode(r''' + await assertNoErrorsInCode(r''' // @dart=2.6 import 'a.dart'; @@ -354,6 +382,9 @@ class B { factory B() = A; } '''); + } finally { + noSoundNullSafety = true; + } } test_regression_42196() async { diff --git a/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart index 6b5bc62a314..2cb678f63b3 100644 --- a/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart +++ b/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -153,12 +154,17 @@ class C { } test_leastUpperBoundWithNull() async { - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' // @dart = 2.9 f(bool b, int i) => (b ? null : i).foo(); ''', [ - error(CompileTimeErrorCode.UNDEFINED_METHOD, 50, 3), - ]); + error(CompileTimeErrorCode.UNDEFINED_METHOD, 50, 3), + ]); + } finally { + noSoundNullSafety = true; + } } test_method_undefined() async { @@ -216,15 +222,20 @@ f(M m) { } test_method_undefined_onNull() async { - await assertErrorsInCode(r''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(r''' // @dart = 2.9 Null f(int x) => null; main() { f(42).abs(); } ''', [ - error(CompileTimeErrorCode.UNDEFINED_METHOD, 55, 3), - ]); + error(CompileTimeErrorCode.UNDEFINED_METHOD, 55, 3), + ]); + } finally { + noSoundNullSafety = true; + } } test_static_conditionalAccess_defined() async { diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart index a22d281b635..2af2ffacbca 100644 --- a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart +++ b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -46,13 +47,18 @@ f() { } test_equal_legacyLibrary() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.5 f(int a) { a == null; null == a; } '''); + } finally { + noSoundNullSafety = true; + } } test_equal_notNullable() async { @@ -109,13 +115,18 @@ f() { } test_notEqual_legacyLibrary() async { - await assertNoErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertNoErrorsInCode(''' // @dart = 2.5 f(int a) { a != null; null != a; } '''); + } finally { + noSoundNullSafety = true; + } } test_notEqual_notNullable() async { diff --git a/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart b/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart index 9069e428947..f446a426c94 100644 --- a/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart +++ b/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; @@ -39,7 +40,9 @@ class WrongNumberOfParametersForOperatorTest extends PubPackageResolutionTest { // attempting to use a binary operator with no args as part of a compound // assignment would crash the analyzer. Check that that doesn't happen // anymore. - await assertErrorsInCode(''' + try { + noSoundNullSafety = false; + await assertErrorsInCode(''' // @dart=2.9 class C { C operator+() => C(); @@ -49,9 +52,12 @@ void f(C c) { c += 1; } ''', [ - error( - CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, 35, 1), - ]); + error(CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, 35, + 1), + ]); + } finally { + noSoundNullSafety = true; + } } test_correct_number_of_parameters_binary() async { diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart index 2849d8fca39..be6d543e5c1 100644 --- a/pkg/analyzer/test/verify_diagnostics_test.dart +++ b/pkg/analyzer/test/verify_diagnostics_test.dart @@ -84,6 +84,12 @@ class DocumentationValidator { 'CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT', // Produces multiple diagnostic because of poor recovery. 'CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR', + + // This is not reported after 2.12, and the examples don't compile after 3.0. + 'FfiCode.FIELD_INITIALIZER_IN_STRUCT', + // This is not reported after 2.12, and the examples don't compile after 3.0. + 'FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER', + // This no longer works in 3.0. 'HintCode.DEPRECATED_COLON_FOR_DEFAULT_VALUE', // The code has been replaced but is not yet removed. @@ -96,6 +102,7 @@ class DocumentationValidator { // Produces two diagnostics when it should only produce one (see // https://github.com/dart-lang/sdk/issues/43051) 'HintCode.UNNECESSARY_NULL_COMPARISON_FALSE', + // Produces two diagnostics when it should only produce one (see // https://github.com/dart-lang/sdk/issues/43263) 'StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION', diff --git a/pkg/analyzer/test/verify_docs_test.dart b/pkg/analyzer/test/verify_docs_test.dart index bcba4078571..a34537a6dc9 100644 --- a/pkg/analyzer/test/verify_docs_test.dart +++ b/pkg/analyzer/test/verify_docs_test.dart @@ -92,7 +92,6 @@ class SnippetTester { // API, write code to compute the list of imports so that new public API // will automatically be allowed. String imports = ''' -// @dart = 2.9 import 'dart:math' as math; import 'package:analyzer/dart/analysis/analysis_context.dart'; @@ -105,7 +104,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/visitor.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; -void assertNoErrorsInCode(String s) {} +Future assertNoErrorsInCode(String s) async {} void test(String s, void Function() f) {} void group(String s, void Function() f) {} '''; diff --git a/pkg/analyzer/tool/diagnostics/diagnostics.md b/pkg/analyzer/tool/diagnostics/diagnostics.md index 535d11b288a..89209061ba6 100644 --- a/pkg/analyzer/tool/diagnostics/diagnostics.md +++ b/pkg/analyzer/tool/diagnostics/diagnostics.md @@ -7619,7 +7619,7 @@ the one being used for the library to which the part belongs. Given a [part file][] named `part.dart` that contains the following: {% prettify dart tag=pre+code %} -// @dart = 2.6 +// @dart = 2.14 part of 'test.dart'; {% endprettify %} @@ -7627,7 +7627,7 @@ The following code produces this diagnostic because the parts of a library must have the same language version as the defining compilation unit: {% prettify dart tag=pre+code %} -// @dart = 2.5 +// @dart = 2.15 part [!'part.dart'!]; {% endprettify %} @@ -9001,7 +9001,7 @@ be lowercase in such a comment and because there's no equal sign between the word `dart` and the version number: {% prettify dart tag=pre+code %} -[!// @Dart 2.9!] +[!// @Dart 2.13!] {% endprettify %} #### Common fixes @@ -9010,7 +9010,7 @@ If the comment is intended to be a language version override, then change the comment to follow the correct format: {% prettify dart tag=pre+code %} -// @dart = 2.9 +// @dart = 2.13 {% endprettify %} ### invalid_literal_annotation diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart index a8884600adc..c2176f799da 100644 --- a/pkg/analyzer_cli/lib/src/driver.dart +++ b/pkg/analyzer_cli/lib/src/driver.dart @@ -28,6 +28,7 @@ import 'package:analyzer/src/source/path_filter.dart'; import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/util/yaml.dart'; +import 'package:analyzer/src/utilities/legacy.dart'; import 'package:analyzer_cli/src/analyzer_impl.dart'; import 'package:analyzer_cli/src/batch_mode.dart'; import 'package:analyzer_cli/src/error_formatter.dart'; @@ -94,6 +95,7 @@ class Driver implements CommandLineStarter { } _isStarted = true; var startTime = DateTime.now().millisecondsSinceEpoch; + noSoundNullSafety = false; linter.registerLintRules(); diff --git a/pkg/compiler/analysis_options.yaml b/pkg/compiler/analysis_options.yaml index ee3a90d1b34..4bb3f1bb865 100644 --- a/pkg/compiler/analysis_options.yaml +++ b/pkg/compiler/analysis_options.yaml @@ -7,6 +7,7 @@ analyzer: todo: ignore # Allow deprecated calls from within the same package deprecated_member_use_from_same_package: ignore + illegal_language_version_override: ignore linter: rules: diff --git a/pkg/compiler/test/analysis_options.yaml b/pkg/compiler/test/analysis_options.yaml index 7926857cadc..7d40a1a38cd 100644 --- a/pkg/compiler/test/analysis_options.yaml +++ b/pkg/compiler/test/analysis_options.yaml @@ -6,6 +6,7 @@ analyzer: errors: todo: ignore deprecated_member_use: ignore + illegal_language_version_override: ignore exclude: - '**/data/*' diff --git a/pkg/compiler/test/codesize/swarm/analysis_options.yaml b/pkg/compiler/test/codesize/swarm/analysis_options.yaml index 08f06619e95..596db12752a 100644 --- a/pkg/compiler/test/codesize/swarm/analysis_options.yaml +++ b/pkg/compiler/test/codesize/swarm/analysis_options.yaml @@ -6,6 +6,7 @@ analyzer: errors: todo: ignore deprecated_member_use: ignore + illegal_language_version_override: ignore unused_local_variable: ignore unused_field: ignore unused_element: ignore diff --git a/pkg/dartdev/test/utils.dart b/pkg/dartdev/test/utils.dart index 6688b54e554..de0ba4ff157 100644 --- a/pkg/dartdev/test/utils.dart +++ b/pkg/dartdev/test/utils.dart @@ -18,7 +18,10 @@ const Timeout longTimeout = Timeout(Duration(minutes: 5)); /// This version of dart is the last guaranteed pre-null safety language /// version: -const String dartVersionFilePrefix2_9 = '// @dart = 2.9\n'; +const String dartVersionFilePrefix2_9 = ''' +// ignore: illegal_language_version_override +// @dart = 2.9 +'''; void initGlobalState() { log = Logger.standard(); diff --git a/pkg/front_end/analysis_options.yaml b/pkg/front_end/analysis_options.yaml index 907c5044d46..771fe354bca 100644 --- a/pkg/front_end/analysis_options.yaml +++ b/pkg/front_end/analysis_options.yaml @@ -4,6 +4,10 @@ include: analysis_options_no_lints.yaml +analyzer: + errors: + illegal_language_version_override: ignore + linter: rules: - curly_braces_in_flow_control_structures diff --git a/pkg/language_versioning_2_7_test/analysis_options.yaml b/pkg/language_versioning_2_7_test/analysis_options.yaml index 9cd4fca51fd..3e707e8601a 100644 --- a/pkg/language_versioning_2_7_test/analysis_options.yaml +++ b/pkg/language_versioning_2_7_test/analysis_options.yaml @@ -1,6 +1,8 @@ include: package:lints/recommended.yaml analyzer: + errors: + illegal_language_version_override: ignore exclude: # These files have intentional errors. - test/lib_ex2.7_test.dart diff --git a/pkg/nnbd_migration/test/fix_aggregator_test.dart b/pkg/nnbd_migration/test/fix_aggregator_test.dart index 9c6668177c8..8de269f18ed 100644 --- a/pkg/nnbd_migration/test/fix_aggregator_test.dart +++ b/pkg/nnbd_migration/test/fix_aggregator_test.dart @@ -1721,6 +1721,7 @@ class C { Future test_removeLanguageVersion() async { await analyze(''' +// ignore: illegal_language_version_override //@dart=2.6 void main() {} '''); @@ -1729,7 +1730,11 @@ void main() {} ..removeLanguageVersionComment = true })!; // TODO(mfairhurst): Remove beginning \n once it renders properly in preview - expect(previewInfo.applyTo(code!), '\nvoid main() {}\n'); + expect(previewInfo.applyTo(code!), ''' +// ignore: illegal_language_version_override + +void main() {} +'''); } Future test_removeLanguageVersion_after_license() async { @@ -1737,6 +1742,7 @@ void main() {} // Some licensing stuff here... // Some copyrighting stuff too... // etc... +// ignore: illegal_language_version_override // @dart = 2.6 void main() {} '''); @@ -1749,6 +1755,7 @@ void main() {} // Some licensing stuff here... // Some copyrighting stuff too... // etc... +// ignore: illegal_language_version_override void main() {} '''); @@ -1756,6 +1763,7 @@ void main() {} Future test_removeLanguageVersion_spaces() async { await analyze(''' +// ignore: illegal_language_version_override // @dart = 2.6 void main() {} '''); @@ -1764,11 +1772,16 @@ void main() {} ..removeLanguageVersionComment = true })!; // TODO(mfairhurst): Remove beginning \n once it renders properly in preview - expect(previewInfo.applyTo(code!), '\nvoid main() {}\n'); + expect(previewInfo.applyTo(code!), ''' +// ignore: illegal_language_version_override + +void main() {} +'''); } Future test_removeLanguageVersion_withOtherChanges() async { await analyze(''' +// ignore: illegal_language_version_override //@dart=2.6 int f() => null; '''); @@ -1782,7 +1795,11 @@ int f() => null; true) })!; // TODO(mfairhurst): Remove beginning \n once it renders properly in preview - expect(previewInfo.applyTo(code!), '\nint? f() => null;\n'); + expect(previewInfo.applyTo(code!), ''' +// ignore: illegal_language_version_override + +int? f() => null; +'''); } Future test_removeNullAwarenessFromMethodInvocation() async { diff --git a/pkg/nnbd_migration/test/fix_builder_test.dart b/pkg/nnbd_migration/test/fix_builder_test.dart index 697bd79c4dd..5f000a3a3f9 100644 --- a/pkg/nnbd_migration/test/fix_builder_test.dart +++ b/pkg/nnbd_migration/test/fix_builder_test.dart @@ -3329,6 +3329,7 @@ _f(_C c) => (c).x; Future test_removeLanguageVersionComment() async { await analyze(''' +// ignore: illegal_language_version_override // @dart = 2.6 void main() {} '''); @@ -3338,6 +3339,7 @@ void main() {} Future test_removeLanguageVersionComment_withCopyright() async { await analyze(''' // Some copyright notice here... +// ignore: illegal_language_version_override // @dart = 2.6 void main() {} '''); diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart index fe320695f22..7b55b86cbb6 100644 --- a/pkg/nnbd_migration/test/migration_cli_test.dart +++ b/pkg/nnbd_migration/test/migration_cli_test.dart @@ -575,7 +575,11 @@ int${migrated ? '?' : ''} f() => null; test_lifecycle_already_migrated_file() async { Map createProject({bool migrated = false}) { var projectContents = simpleProject(sourceText: ''' -${migrated ? '' : '// @dart = 2.6'} +${migrated ? ''' +// ignore: illegal_language_version_override +''' : ''' +// ignore: illegal_language_version_override +// @dart = 2.6'''} import 'already_migrated.dart'; int${migrated ? '?' : ''} x = y; ''', migrated: true); @@ -1876,16 +1880,17 @@ name: test expect( logger.stdoutBuffer.toString(), contains('Please run `dart pub get`')); // The Dart source code should still be migrated. - assertProjectContents( - projectDir, simpleProject(migrated: true, sourceText: ''' + assertProjectContents(projectDir, simpleProject( + migrated: true, + sourceText: ''' import 'package:collection/collection.dart' show IterableExtension; int? firstEven(Iterable x) => x.firstWhereOrNull((x) => x.isEven); ''', - // Note: section order is weird, but it's valid and this is a rare use - // case. - pubspecText: ''' + // Note: section order is weird, but it's valid and this is a rare use + // case. + pubspecText: ''' environment: sdk: '>=2.12.0 <3.0.0' dependencies: @@ -1906,7 +1911,9 @@ int firstEven(Iterable x) expect( logger.stdoutBuffer.toString(), contains('Please run `dart pub get`')); // The Dart source code should still be migrated. - assertProjectContents(projectDir, simpleProject(migrated: true, sourceText: ''' + assertProjectContents(projectDir, simpleProject( + migrated: true, + sourceText: ''' import 'package:collection/collection.dart' show IterableExtension; int? firstEven(Iterable x)