Generate a diagnostic for language overrides prior to 2.12
Change-Id: Ia10cf89443208ef133dd1ce8d68ee7c6b4129fbb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276800
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/basic.dart b/pkg/_fe_analyzer_shared/test/constants/data/basic.dart
index 49749ff..fc4098e 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 bfd5e95..0487ff5 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 5e1d35d..c9d0f42 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) => t;
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/list.dart b/pkg/_fe_analyzer_shared/test/constants/data/list.dart
index 6af31a0..651d13c 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<dynamic>()*/ [];
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/map.dart b/pkg/_fe_analyzer_shared/test/constants/data/map.dart
index cb84ad3..e014923 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<dynamic,dynamic>()*/ {};
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/set.dart b/pkg/_fe_analyzer_shared/test/constants/data/set.dart
index 1e5ecb9..4dbdae7 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 3a0c909..b09f516 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 73cf78d..6d71d8d 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 a2c10241..1c67de3 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 cb18ecf..c305637 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) => 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 aec2913..050d72d 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<dynamic>()*/ [];
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 b3b762e..92601db 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<dynamic,dynamic>()*/ {};
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 7c4eed7..a0c9ba8 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 6754f1c..e71a0a9 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 53dbe5f..9094c96 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 4d2422d..c1a6cc1 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 18b183d..74e1565 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 3857d0f..1486295 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 929793b..1afd1d8 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<K*, V*>,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 c232f64..7bd4472 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 12302cc..bf30516 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 dbb6996..3fda4f6 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 05862b6..6529c4a 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 8930b99..b7afa8e 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 47f208f..58f89ab 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 91c879e..db60a44 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 0573a97..c0dea96 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<T*>,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 0a692fa..6c48423 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 07fb2cf..8317824 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 fbeccca..f5781da 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 9fe23d6..7a88fd3 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 4ef3e61..a18806e 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 022c702..ea932fb 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 65fc5c0..0001dd7 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 ccf00fe..9903752 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 7137f1a..e4aaf9e 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 77a5afa..3251d00 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 339e9a4..8bf9271 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 051358b..263af0e 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 3099cb7..dc97452 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 4602bbc..d96411d 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 6a8903e..50b7019 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<T*>*/
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 ae77091..7385a2f 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 f4b1faf..eaeb87b 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 @@
}
Future<void> 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 @@
print(a);
}
''');
- await assertHasFix('''
+ await assertHasFix('''
// @dart = 2.8
import 'package:test/a.dart';
@@ -313,6 +316,9 @@
print(a);
}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
Future<void> 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 6434447..402198f 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 @@
}
Future<void> 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 @@
int foo() => super.foo();
}
''');
- await assertHasFix('''
+ await assertHasFix('''
// @dart = 2.7
import 'a.dart';
class B extends A {
}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
Future<void> 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 b61e5f6..fd37777 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 @@
Future<void> test_topLevel_languageVersion_dartDoc() async {
await resolveTestCode('''
-// @dart = 2.8
+// @dart = 2.19
/// 1
int foo = 1; // 2
@@ -595,7 +595,7 @@
Future<void> 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 c3e275c..7471bb2 100644
--- a/pkg/analyzer/doc/tutorial/ast.md
+++ b/pkg/analyzer/doc/tutorial/ast.md
@@ -54,7 +54,7 @@
the AST:
```dart
-void processFile(AnalysisSession session, String path) async {
+Future<void> processFile(AnalysisSession session, String path) async {
var result = session.getParsedUnit(path);
if (result is ParsedUnitResult) {
CompilationUnit unit = result.unit;
@@ -66,7 +66,7 @@
method to access it:
```dart
-void processFile(AnalysisSession session, String path) async {
+Future<void> processFile(AnalysisSession session, String path) async {
var result = await session.getResolvedUnit(path);
if (result is ResolvedUnitResult) {
CompilationUnit unit = result.unit;
@@ -102,7 +102,7 @@
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 912d65b..fe603ea7 100644
--- a/pkg/analyzer/doc/tutorial/element.md
+++ b/pkg/analyzer/doc/tutorial/element.md
@@ -75,11 +75,7 @@
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 0fc9372..05a5515 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/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 @@
/// 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 c01d2e0..d8f2f2c 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -2851,13 +2851,6 @@
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 efea28a..98bbb0c 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/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 @@
@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 @@
}
}
- 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 b21a0f6..3ae4c3c 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -6112,7 +6112,7 @@
```dart
%uri="lib/part.dart"
- // @dart = 2.6
+ // @dart = 2.14
part of 'test.dart';
```
@@ -6120,7 +6120,7 @@
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 @@
the word `dart` and the version number:
```dart
- [!// @Dart 2.9!]
+ [!// @Dart 2.13!]
```
#### Common fixes
@@ -19113,7 +19113,7 @@
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 4e71a84..2a5f92c 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/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 @@
}
test_genericTypeAlias_castsAndTypeChecks_hasTypeParameters() async {
- await assertNoErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertNoErrorsInCode('''
// @dart = 2.9
typedef Foo<S> = S Function<T>(T x);
@@ -1507,10 +1510,15 @@
}
}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_genericTypeAlias_castsAndTypeChecks_noTypeParameters() async {
- await assertNoErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertNoErrorsInCode('''
// @dart = 2.9
typedef Foo = T Function<T>(T x);
@@ -1521,6 +1529,9 @@
}
}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_genericTypeAlias_fieldAndReturnType_noTypeParameters() async {
@@ -3123,7 +3134,9 @@
}
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 @@
}
}
''');
+ } 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 f1928a5..c93dd1a 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/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 @@
@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<Object> a);
}
@@ -33,7 +36,7 @@
}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.8
import 'a.dart';
@@ -41,19 +44,24 @@
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<Object> a) : this(a);
const A.second(List<Object> a);
}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.8
import 'a.dart';
@@ -61,8 +69,11 @@
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 @@
}
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 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 @@
/// 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 @@
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 b7c00565..194fdfa 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 @@
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<int> {
Iterator<int> iterator => throw 0;
}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.7
import 'a.dart';
@@ -33,6 +36,9 @@
}
}
''');
+ } 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 67fc64d..197327e 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 @@
}
test_jsonConfigDisablesExtensions_languageOverrideEnables() async {
- _configureTestWithJsonConfig('''
+ try {
+ noSoundNullSafety = false;
+ _configureTestWithJsonConfig('''
{
"configVersion": 2,
"packages": [
@@ -139,10 +142,13 @@
}
''');
- 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 f048c77..3e2cc88 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/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 @@
}
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@A'), r'''
+ assertResolvedNodeText(findNode.annotation('@A'), r'''
Annotation
atSign: @
name: SimpleIdentifier
@@ -374,17 +377,22 @@
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 @@
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 @@
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 @@
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 @@
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@A'), r'''
+ assertResolvedNodeText(findNode.annotation('@A'), r'''
Annotation
atSign: @
name: PrefixedIdentifier
@@ -524,19 +542,24 @@
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@foo'), r'''
+ assertResolvedNodeText(findNode.annotation('@foo'), r'''
Annotation
atSign: @
name: SimpleIdentifier
@@ -558,21 +581,26 @@
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@a.A'), r'''
+ assertResolvedNodeText(findNode.annotation('@a.A'), r'''
Annotation
atSign: @
name: PrefixedIdentifier
@@ -609,16 +637,21 @@
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@a.A'), r'''
+ assertResolvedNodeText(findNode.annotation('@a.A'), r'''
Annotation
atSign: @
name: PrefixedIdentifier
@@ -662,16 +695,21 @@
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@a.A'), r'''
+ assertResolvedNodeText(findNode.annotation('@a.A'), r'''
Annotation
atSign: @
name: PrefixedIdentifier
@@ -705,14 +743,19 @@
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 @@
void f() {}
''');
- assertResolvedNodeText(findNode.annotation('@a'), r'''
+ assertResolvedNodeText(findNode.annotation('@a'), r'''
Annotation
atSign: @
name: PrefixedIdentifier
@@ -743,6 +786,9 @@
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 bfebef9..f0c8cba 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 @@
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 @@
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 @@
staticInvokeType: Future<dynamic>* Function()*
staticType: Future<dynamic>*
''');
+ } 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 828f515..7147f70 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 @@
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 @@
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<dynamic>* Function()*',
- );
+ assertPrefixedIdentifier(
+ findNode.prefixed('a.loadLibrary'),
+ element: elementMatcher(
+ import.importedLibrary.loadLibraryFunction,
+ isLegacy: true,
+ ),
+ type: 'Future<dynamic>* 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 85fdc46..c677160 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 @@
}
test_functionReference() async {
- await assertErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertErrorsInCode('''
// @dart = 2.7
import 'dart:math';
@@ -46,18 +49,21 @@
@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 extends num*>(T*, T*)*');
+ var identifier = findNode.simple('min]');
+ assertElement(
+ identifier,
+ elementMatcher(
+ findElement.importFind('dart:math').topFunction('min'),
+ isLegacy: true,
+ ),
+ );
+ assertType(identifier, 'T* Function<T extends num*>(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 5c3ff04..136178f 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 @@
}
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<T extends num> {}
''');
- 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<num*>*',
- );
+ assertNamedType(
+ findNode.namedType('A a'),
+ import_a.class_('A'),
+ 'A<num*>*',
+ );
+ } 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<T> {}
''');
- 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<dynamic>*',
- );
+ assertNamedType(
+ findNode.namedType('A a'),
+ import_a.class_('A'),
+ 'A<dynamic>*',
+ );
+ } 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<T> {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.7
import 'a.dart';
f(A<int> a) {}
''');
- assertNamedType(
- findNode.namedType('A<int> a'),
- import_a.class_('A'),
- 'A<int*>*',
- );
+ assertNamedType(
+ findNode.namedType('A<int> a'),
+ import_a.class_('A'),
+ 'A<int*>*',
+ );
+ } 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> = 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 extends num> = 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> = T Function(bool);
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.7
import 'a.dart';
f(F<int> a) {}
''');
- var element = import_a.typeAlias('F');
+ var element = import_a.typeAlias('F');
- var typeName = findNode.namedType('F<int> a');
- assertNamedType(typeName, element, 'int* Function(bool*)*');
+ var typeName = findNode.namedType('F<int> 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<T extends num> {}
''');
- 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<num*>',
- );
+ assertNamedType(
+ findNode.namedType('A a'),
+ import_a.class_('A'),
+ 'A<num*>',
+ );
+ } 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<T> {}
''');
- 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<dynamic>',
- );
+ assertNamedType(
+ findNode.namedType('A a'),
+ import_a.class_('A'),
+ 'A<dynamic>',
+ );
+ } 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<T> {}
''');
- await assertErrorsInCode(r'''
+ await assertErrorsInCode(r'''
import 'a.dart';
f(A<int> 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<int> a'),
- import_a.class_('A'),
- 'A<int>',
- );
+ assertNamedType(
+ findNode.namedType('A<int> a'),
+ import_a.class_('A'),
+ 'A<int>',
+ );
+ } 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 extends num> = 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> = 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> = T Function();
''');
- await assertErrorsInCode(r'''
+ await assertErrorsInCode(r'''
import 'a.dart';
f(F<int> 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<int> a'),
- import_a.typeAlias('F'),
- 'int* Function()',
- );
+ assertNamedType(
+ findNode.namedType('F<int> a'),
+ import_a.typeAlias('F'),
+ 'int* Function()',
+ );
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_typeAlias_asInstanceCreation_explicitNew_typeArguments_interfaceType_none() async {
@@ -437,20 +518,25 @@
}
test_typeAlias_asParameterType_interfaceType_none_inLegacy() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
typedef X<T> = Map<int, T>;
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.9
import 'a.dart';
void f(X<String> a) {}
''');
- assertNamedType(
- findNode.namedType('X<String>'),
- findElement.importFind('package:test/a.dart').typeAlias('X'),
- 'Map<int*, String*>*',
- );
+ assertNamedType(
+ findNode.namedType('X<String>'),
+ findElement.importFind('package:test/a.dart').typeAlias('X'),
+ 'Map<int*, String*>*',
+ );
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_typeAlias_asParameterType_interfaceType_question() async {
@@ -473,20 +559,25 @@
}
test_typeAlias_asParameterType_interfaceType_question_inLegacy() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
typedef X<T> = List<T?>;
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.9
import 'a.dart';
void f(X<int> a) {}
''');
- assertNamedType(
- findNode.namedType('X<int>'),
- findElement.importFind('package:test/a.dart').typeAlias('X'),
- 'List<int*>*',
- );
+ assertNamedType(
+ findNode.namedType('X<int>'),
+ findElement.importFind('package:test/a.dart').typeAlias('X'),
+ 'List<int*>*',
+ );
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_typeAlias_asParameterType_Never_none() async {
@@ -509,20 +600,25 @@
}
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 0d7369b..ffb5bde 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 @@
}
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 9bf45bb..f39ea41 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 @@
}
test_class_extends_implements_optOut() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
class I<T> {}
class A implements I<int> {}
class B implements I<int?> {}
''');
- 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<T> {}
class B extends A<int> {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.5
import 'a.dart';
class C extends B implements A<int> {}
''');
+ } 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 0526a6f..e5ffe47 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 @@
}
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 79cb199..46a6a5a 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 @@
@reflectiveTest
class CouldNotInferTest extends PubPackageResolutionTest {
test_constructor_nullSafe_fromLegacy() async {
- newFile('$testPackageLibPath/a.dart', '''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', '''
class C<T extends Object> {
C(T t);
}
''');
- await assertNoErrorsInCode('''
+ await assertNoErrorsInCode('''
// @dart = 2.8
import 'a.dart';
@@ -33,6 +36,9 @@
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 1dbc6ff..eff7852 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_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 @@
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 @@
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 @@
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 @@
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 4dbaeab..9f952d71 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 @@
}
test_constructor_tearoffs_disabled_grammar_pre_nnbd() async {
- await assertErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertErrorsInCode('''
// @dart=2.9
class Foo<X> {
const Foo.bar();
@@ -43,9 +46,12 @@
Foo<int>.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 dc6b3de..3654285 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 @@
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 b0027ed..9b0c71d 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 @@
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 994c09b..efc7c23 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 @@
}
test_hasOverride_less() async {
+ noSoundNullSafety = true;
await assertErrorsInCode(r'''
// @dart = 2.9
int a = null;
@@ -43,43 +41,15 @@
}
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 ed32222..f3f81de 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 @@
@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 @@
}
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 f0abbbc..c6dd4f23 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 @@
''');
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 c67f418..c387f9f 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 @@
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 @@
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 @@
}
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 67c1c08..27191d5 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 @@
}
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 d6b76ce..5700538 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 @@
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 @@
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 @@
test_location_beforeDeclaration() async {
await assertNoErrorsInCode(r'''
-// @dart = 2.5
+// @dart = 2.19
class A {}
''');
}
@@ -198,7 +198,7 @@
test_noWhitespace() async {
await assertNoErrorsInCode(r'''
-//@dart=2.0
+//@dart=2.19
int i = 0;
''');
}
@@ -213,7 +213,7 @@
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 7a6a04d..619593b 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 @@
}
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 @@
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 @@
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 77ac7e9..eb66e03 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 @@
}
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 7ef82a2..8d2122f 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 @@
}
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 @@
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 @@
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 @@
}
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 @@
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 @@
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 @@
}
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 @@
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 @@
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 bcc6ccde..86ec7b6 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 @@
}
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 @@
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 3b2bdfa..73411bd 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 @@
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<T> {}
mixin B<T> on A<T> {}
mixin C<T> on A<T> {}
''');
- await assertNoErrorsInCode('''
+ await assertNoErrorsInCode('''
// @dart=2.8
import 'a.dart';
class D extends A<int> with B<int>, C {}
''');
- assertType(findNode.namedType('B<int>'), 'B<int*>*');
- assertType(findNode.namedType('C {}'), 'C<int*>*');
+ assertType(findNode.namedType('B<int>'), 'B<int*>*');
+ assertType(findNode.namedType('C {}'), 'C<int*>*');
+ } 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 800c284..4e46e6f 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 @@
}
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 @@
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 @@
}
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 @@
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 e02e36a..d8b98cb 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/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 @@
}
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
}
''');
- 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 @@
staticElement: <null>
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 @@
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 @@
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 @@
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 @@
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 @@
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<T> {
A(T a, T? b);
}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.5
import 'a.dart';
@@ -708,38 +791,48 @@
A<int>(null, null);
}
''');
- var instanceCreation = findNode.instanceCreation('A<int>(null');
- assertType(instanceCreation, 'A<int*>*');
+ var instanceCreation = findNode.instanceCreation('A<int>(null');
+ assertType(instanceCreation, 'A<int*>*');
- _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<T extends num> {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart = 2.5
import 'a.dart';
var v = A();
''');
- var v = findElement.topVar('v');
- assertType(v.type, 'A<num*>*');
+ var v = findElement.topVar('v');
+ assertType(v.type, 'A<num*>*');
+ } 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 @@
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 @@
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 @@
}
}
''');
- 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
}
}
''');
- 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 @@
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 @@
}
}
''');
- 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 @@
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 @@
-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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
}
}
''');
- 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 @@
}
}
''');
- 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 @@
}
}
''');
- 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 @@
}
}
''');
- 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 @@
}
}
''');
- 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 @@
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 @@
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 5e9409d..90b423f 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 @@
}
test_legacy() async {
- await assertNoErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertNoErrorsInCode('''
// @dart=2.9
import 'dart:async';
@@ -46,6 +49,9 @@
c.complete(null);
}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_null() async {
@@ -98,13 +104,18 @@
}
test_legacy() async {
- await assertNoErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertNoErrorsInCode('''
// @dart=2.9
void f() {
Future<int>.value();
Future<int>.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 320049a..ac9a995 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 @@
}
test_optOut() async {
- await assertNoErrorsInCode('''
+ try {
+ noSoundNullSafety = false;
+ await assertNoErrorsInCode('''
// @dart = 2.7
void f() {
@@ -118,5 +121,8 @@
}
}
''');
+ } 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 7f871f8..f7c7922 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 @@
}
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 b373ca8..0b1fe1c 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 @@
}
test_extends_optIn_fromOptOut_Null() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
class A<X extends int> {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart=2.6
import 'a.dart';
class A1<T extends Null> extends A<T> {}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_extends_optIn_fromOptOut_otherTypeParameter() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
void foo<T extends U, U>() {
}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart=2.6
import 'a.dart';
@@ -78,21 +86,29 @@
foo<B, A>();
}
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_extensionOverride_optIn_fromOptOut_Null() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
extension E<X extends int> on List<X> {
void m() {}
}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart=2.6
import 'a.dart';
f() => E<Null>([]).m();
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_functionReference() async {
@@ -146,16 +162,21 @@
}
test_instanceCreation_optIn_fromOptOut_Null() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
class A<X extends int> {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart=2.6
import 'a.dart';
f() => A<Null>();
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_metadata_matching() async {
@@ -222,17 +243,22 @@
}
test_methodInvocation_optIn_fromOptOut_Null() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
class A {
void m<X extends int>() {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart=2.6
import 'a.dart';
f() => A().m<Null>();
''');
+ } finally {
+ noSoundNullSafety = true;
+ }
}
test_nonFunctionTypeAlias_body_typeArgument_mismatch() async {
@@ -340,13 +366,15 @@
}
test_redirectingConstructor_optIn_fromOptOut_Null() async {
- newFile('$testPackageLibPath/a.dart', r'''
+ try {
+ noSoundNullSafety = false;
+ newFile('$testPackageLibPath/a.dart', r'''
import 'test.dart';
class A<X extends int> implements B {}
''');
- await assertNoErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
// @dart=2.6
import 'a.dart';
@@ -354,6 +382,9 @@
factory B() = A<Null>;
}
''');
+ } 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 6b5bc62..2cb678f 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 @@
}
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 @@
}
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 a22d281..2af2ffa 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 @@
}
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 @@
}
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 9069e42..f446a42 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 @@
// 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 @@
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 2849d8f..be6d543 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -84,6 +84,12 @@
'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 @@
// 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 bcba407..a34537a 100644
--- a/pkg/analyzer/test/verify_docs_test.dart
+++ b/pkg/analyzer/test/verify_docs_test.dart
@@ -92,7 +92,6 @@
// 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/visitor.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
-void assertNoErrorsInCode(String s) {}
+Future<void> 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 535d11b..8920906 100644
--- a/pkg/analyzer/tool/diagnostics/diagnostics.md
+++ b/pkg/analyzer/tool/diagnostics/diagnostics.md
@@ -7619,7 +7619,7 @@
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 @@
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 @@
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 @@
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 a888460..c2176f7 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/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 @@
}
_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 ee3a90d..4bb3f1b 100644
--- a/pkg/compiler/analysis_options.yaml
+++ b/pkg/compiler/analysis_options.yaml
@@ -7,6 +7,7 @@
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 7926857..7d40a1a 100644
--- a/pkg/compiler/test/analysis_options.yaml
+++ b/pkg/compiler/test/analysis_options.yaml
@@ -6,6 +6,7 @@
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 08f0661..596db12 100644
--- a/pkg/compiler/test/codesize/swarm/analysis_options.yaml
+++ b/pkg/compiler/test/codesize/swarm/analysis_options.yaml
@@ -6,6 +6,7 @@
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 6688b54..de0ba4f 100644
--- a/pkg/dartdev/test/utils.dart
+++ b/pkg/dartdev/test/utils.dart
@@ -18,7 +18,10 @@
/// 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 907c504..771fe35 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 9cd4fca..3e707e8 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 9c66681..8de269f 100644
--- a/pkg/nnbd_migration/test/fix_aggregator_test.dart
+++ b/pkg/nnbd_migration/test/fix_aggregator_test.dart
@@ -1721,6 +1721,7 @@
Future<void> test_removeLanguageVersion() async {
await analyze('''
+// ignore: illegal_language_version_override
//@dart=2.6
void main() {}
''');
@@ -1729,7 +1730,11 @@
..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<void> test_removeLanguageVersion_after_license() async {
@@ -1737,6 +1742,7 @@
// Some licensing stuff here...
// Some copyrighting stuff too...
// etc...
+// ignore: illegal_language_version_override
// @dart = 2.6
void main() {}
''');
@@ -1749,6 +1755,7 @@
// Some licensing stuff here...
// Some copyrighting stuff too...
// etc...
+// ignore: illegal_language_version_override
void main() {}
''');
@@ -1756,6 +1763,7 @@
Future<void> test_removeLanguageVersion_spaces() async {
await analyze('''
+// ignore: illegal_language_version_override
// @dart = 2.6
void main() {}
''');
@@ -1764,11 +1772,16 @@
..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<void> test_removeLanguageVersion_withOtherChanges() async {
await analyze('''
+// ignore: illegal_language_version_override
//@dart=2.6
int f() => null;
''');
@@ -1782,7 +1795,11 @@
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<void> test_removeNullAwarenessFromMethodInvocation() async {
diff --git a/pkg/nnbd_migration/test/fix_builder_test.dart b/pkg/nnbd_migration/test/fix_builder_test.dart
index 697bd79..5f000a3 100644
--- a/pkg/nnbd_migration/test/fix_builder_test.dart
+++ b/pkg/nnbd_migration/test/fix_builder_test.dart
@@ -3329,6 +3329,7 @@
Future<void> test_removeLanguageVersionComment() async {
await analyze('''
+// ignore: illegal_language_version_override
// @dart = 2.6
void main() {}
''');
@@ -3338,6 +3339,7 @@
Future<void> 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 fe32069..7b55b86 100644
--- a/pkg/nnbd_migration/test/migration_cli_test.dart
+++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -575,7 +575,11 @@
test_lifecycle_already_migrated_file() async {
Map<String, String?> 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 @@
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<int> 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 @@
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<int> x)