Version 2.13.0-184.0.dev
Merge commit '628e630ca267514d810110169e95014894a35e71' into 'dev'
diff --git a/pkg/analysis_server/lib/src/collections.dart b/pkg/analysis_server/lib/src/collections.dart
index 80a5a22..b2e4fa3 100644
--- a/pkg/analysis_server/lib/src/collections.dart
+++ b/pkg/analysis_server/lib/src/collections.dart
@@ -2,14 +2,9 @@
// 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.
-// @dart = 2.9
-
/// Returns the given [list] if it is not empty, or `null` otherwise.
-List<E> nullIfEmpty<E>(List<E> list) {
- if (list == null) {
- return null;
- }
- if (list.isEmpty) {
+List<E>? nullIfEmpty<E>(List<E>? list) {
+ if (list == null || list.isEmpty) {
return null;
}
return list;
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/ast.dart b/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
index d7eaa90..fd493a4 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart = 2.9
-
import 'package:analysis_server/src/utilities/extensions/element.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
@@ -45,6 +43,8 @@
var parent = body.parent;
if (parent is ConstructorDeclaration || parent is MethodDeclaration) {
return true;
+ } else if (parent == null) {
+ return false;
}
node = parent;
}
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/element.dart b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
index b9f85ed..440d3ef 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/element.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
@@ -2,28 +2,24 @@
// 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.
-// @dart = 2.9
-
import 'package:analyzer/dart/element/element.dart';
extension ClassElementExtensions on ClassElement {
/// Return `true` if this element represents the class `Iterable` from
/// `dart:core`.
- bool get isDartCoreIterable =>
- this != null && name == 'Iterable' && library.isDartCore;
+ bool get isDartCoreIterable => name == 'Iterable' && library.isDartCore;
/// Return `true` if this element represents the class `List` from
/// `dart:core`.
- bool get isDartCoreList =>
- this != null && name == 'List' && library.isDartCore;
+ bool get isDartCoreList => name == 'List' && library.isDartCore;
/// Return `true` if this element represents the class `Map` from
/// `dart:core`.
- bool get isDartCoreMap => this != null && name == 'Map' && library.isDartCore;
+ bool get isDartCoreMap => name == 'Map' && library.isDartCore;
/// Return `true` if this element represents the class `Set` from
/// `dart:core`.
- bool get isDartCoreSet => this != null && name == 'Set' && library.isDartCore;
+ bool get isDartCoreSet => name == 'Set' && library.isDartCore;
}
extension ElementExtension on Element {
@@ -53,7 +49,10 @@
if (name != 'cast') {
return false;
}
- ClassElement definingClass = enclosingElement;
+ var definingClass = enclosingElement;
+ if (definingClass is! ClassElement) {
+ return false;
+ }
return definingClass.isDartCoreIterable ||
definingClass.isDartCoreList ||
definingClass.isDartCoreMap ||
@@ -66,7 +65,10 @@
if (name != 'toList') {
return false;
}
- ClassElement definingClass = enclosingElement;
+ var definingClass = enclosingElement;
+ if (definingClass is! ClassElement) {
+ return false;
+ }
return definingClass.isDartCoreIterable || definingClass.isDartCoreList;
}
}
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart b/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart
index b4f7f78..005763f 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart = 2.9
-
extension DoubleExtensions on double {
/// Return `true` if this value is between the [lower] and [upper] bound,
/// inclusive.
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/yaml.dart b/pkg/analysis_server/lib/src/utilities/extensions/yaml.dart
index d3bf132..dfe4983 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/yaml.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/yaml.dart
@@ -2,14 +2,12 @@
// 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.
-// @dart = 2.9
-
import 'package:yaml/yaml.dart';
extension YamlNodeExtensions on YamlNode {
/// Return the child of this node that contains the given [offset], or `null`
/// if none of the children contains the offset.
- YamlNode childContainingOffset(int offset) {
+ YamlNode? childContainingOffset(int offset) {
var node = this;
if (node is YamlList) {
for (var element in node.nodes) {
diff --git a/pkg/analysis_server/lib/src/utilities/file_string_sink.dart b/pkg/analysis_server/lib/src/utilities/file_string_sink.dart
index a81ef8f..81f8c37 100644
--- a/pkg/analysis_server/lib/src/utilities/file_string_sink.dart
+++ b/pkg/analysis_server/lib/src/utilities/file_string_sink.dart
@@ -2,25 +2,22 @@
// 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.
-// @dart = 2.9
-
import 'dart:io';
/// A string sink that write into a file.
class FileStringSink implements StringSink {
- IOSink _sink;
+ final IOSink _sink;
- FileStringSink(String path) {
- _sink = File(path).openWrite(mode: FileMode.append);
- }
+ FileStringSink(String path)
+ : _sink = File(path).openWrite(mode: FileMode.append);
@override
- void write(Object obj) {
+ void write(Object? obj) {
throw UnimplementedError();
}
@override
- void writeAll(Iterable objects, [String separator = '']) {
+ void writeAll(Iterable<dynamic> objects, [String separator = '']) {
throw UnimplementedError();
}
@@ -30,7 +27,7 @@
}
@override
- void writeln([Object obj = '']) {
+ void writeln([Object? obj = '']) {
var currentTimeMillis = DateTime.now().millisecondsSinceEpoch;
_sink.writeln('$currentTimeMillis $obj');
}
diff --git a/pkg/analysis_server/lib/src/utilities/null_string_sink.dart b/pkg/analysis_server/lib/src/utilities/null_string_sink.dart
index 9fb109c..3af2f4a 100644
--- a/pkg/analysis_server/lib/src/utilities/null_string_sink.dart
+++ b/pkg/analysis_server/lib/src/utilities/null_string_sink.dart
@@ -2,16 +2,17 @@
// 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.
-// @dart = 2.9
-
/// A string sink that ignores everything written to it.
class NullStringSink implements StringSink {
@override
- void write(Object obj) {}
+ void write(Object? obj) {}
+
@override
- void writeAll(Iterable objects, [String separator = '']) {}
+ void writeAll(Iterable<dynamic> objects, [String separator = '']) {}
+
@override
void writeCharCode(int charCode) {}
+
@override
- void writeln([Object obj = '']) {}
+ void writeln([Object? obj = '']) {}
}
diff --git a/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart b/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart
index bb3be93..2b715c2 100644
--- a/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart
+++ b/pkg/analysis_server/lib/src/utilities/tee_string_sink.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart = 2.9
-
/// A [StringSink] that writes into two other [StringSink]s.
class TeeStringSink implements StringSink {
final StringSink sink1;
@@ -12,13 +10,13 @@
TeeStringSink(this.sink1, this.sink2);
@override
- void write(Object obj) {
+ void write(Object? obj) {
sink1.write(obj);
sink2.write(obj);
}
@override
- void writeAll(Iterable objects, [String separator = '']) {
+ void writeAll(Iterable<dynamic> objects, [String separator = '']) {
sink1.writeAll(objects, separator);
sink2.writeAll(objects, separator);
}
@@ -30,7 +28,7 @@
}
@override
- void writeln([Object obj = '']) {
+ void writeln([Object? obj = '']) {
sink1.writeln(obj);
sink2.writeln(obj);
}
diff --git a/pkg/analysis_server/tool/code_completion/output_utilities.dart b/pkg/analysis_server/tool/code_completion/output_utilities.dart
index 483ba38..aef456c 100644
--- a/pkg/analysis_server/tool/code_completion/output_utilities.dart
+++ b/pkg/analysis_server/tool/code_completion/output_utilities.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart = 2.9
-
import 'dart:math' as math;
/// Print the given [table].
@@ -13,7 +11,7 @@
print(buffer.toString());
}
-/// Return an interable that will produce all of the integer values between
+/// Return an iterable that will produce all of the integer values between
/// [first] and [last] inclusive.
Iterable<int> range(int first, int last) sync* {
for (var i = first; i < last; i++) {
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 6856353..e90e6ad 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -3231,17 +3231,7 @@
// Going through BreakpointLocations of all isolates and debuggers looking
// for those that can be resolved and added code breakpoints at now.
- //
- // When IsolateGroups are enabled assert that we are either only one isolate
- // or in safepoint operation scope because we are updating
- // breakpoint_locations, which normally needs to be under a
- // breakpoint_locations_lock, but we can't acquire that lock because
- // somebody else(who is at a safepoint we inititated) holds it
- // already, can't release it.
- RELEASE_ASSERT(
- (thread->IsMutatorThread() && !IsolateGroup::AreIsolateGroupsEnabled()) ||
- (thread->IsMutatorThread() && isolate_group_->ContainsOnlyOneIsolate()) ||
- isolate_group_->safepoint_handler()->IsOwnedByTheThread(thread));
+ SafepointReadRwLocker sl(thread, breakpoint_locations_lock());
for (intptr_t i = 0; i < breakpoint_locations_.length(); i++) {
BreakpointLocation* location = breakpoint_locations_.At(i);
if (EnsureLocationIsInFunction(zone, function, location)) {
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index f3e2127..8f395a7 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -18,95 +18,6 @@
LibTest/core/List/List_class_A01_t02: Slow, Pass # Does many calls
LibTest/io/RawDatagramSocket/*: Skip # RawDatagramSocket are flacky. Skip them all until rewritten
-[ $fasta ]
-Language/Expressions/Shift/integer_t04/01: Crash
-Language/Expressions/Shift/integer_t04/02: Crash
-Language/Expressions/Shift/integer_t04/03: Crash
-Language/Expressions/Shift/integer_t04/04: Crash
-Language/Expressions/Shift/integer_t04/05: Crash
-Language/Expressions/Shift/integer_t04/06: Crash
-Language/Expressions/Shift/integer_t04/07: Crash
-Language/Expressions/Shift/integer_t04/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/06: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t03/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t04/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t04/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t04/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t04/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t04/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/06: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t05/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t06/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t06/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t06/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t06/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t06/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t06/06: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/06: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t07/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t08/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t08/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t08/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t08/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t08/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t08/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t09: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/06: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t10/none: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t11: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t12/01: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t12/02: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t12/03: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t12/04: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t12/05: Crash
-LanguageFeatures/Constant-update-2018/NewOperators_A01_t12/none: Crash
-LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t01: Crash
-LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t03: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t01: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t01/01: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t01/02: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t01/03: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t01/04: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t01/none: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/01: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/02: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/none: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l1_t04/01: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l1_t04/02: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l1_t04/none: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t04/01: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t04/none: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t08/01: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t08/02: Crash
-LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t08/none: Crash
-LanguageFeatures/Set-literals/disambiguating_A02_t03: Crash
-LanguageFeatures/regression/34803_t01: Crash
-LanguageFeatures/regression/34803_t02: Crash
-
[ $compiler == dartk && $runtime == vm && $system == linux ]
LibTest/isolate/Isolate/spawn_A06_t03: Crash
diff --git a/tools/VERSION b/tools/VERSION
index 13f947d..6f895ad 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 13
PATCH 0
-PRERELEASE 183
+PRERELEASE 184
PRERELEASE_PATCH 0
\ No newline at end of file