Version 2.18.0-142.0.dev
Merge commit 'd10f740398c6ee512aaad1ca06b38319a216b7c5' into 'dev'
diff --git a/pkg/compiler/lib/src/js_backend/annotations.dart b/pkg/compiler/lib/src/js_backend/annotations.dart
index d1942e9..fe70a94 100644
--- a/pkg/compiler/lib/src/js_backend/annotations.dart
+++ b/pkg/compiler/lib/src/js_backend/annotations.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.10
-
library js_backend.backend.annotations;
import 'package:kernel/ast.dart' as ir;
@@ -14,7 +12,7 @@
import '../ir/util.dart';
import '../kernel/dart2js_target.dart';
import '../options.dart';
-import '../serialization/serialization.dart';
+import '../serialization/serialization_interfaces.dart';
import '../util/enumset.dart';
class PragmaAnnotation {
@@ -213,7 +211,7 @@
Map<PragmaAnnotation, EnumSet<PragmaAnnotation>> reportedExclusions = {};
for (PragmaAnnotation annotation
in annotations.iterable(PragmaAnnotation.values)) {
- Set<PragmaAnnotation> implies = PragmaAnnotation.implies[annotation];
+ Set<PragmaAnnotation>? implies = PragmaAnnotation.implies[annotation];
if (implies != null) {
for (PragmaAnnotation other in implies) {
if (annotations.contains(other)) {
@@ -225,7 +223,7 @@
}
}
}
- Set<PragmaAnnotation> excludes = PragmaAnnotation.excludes[annotation];
+ Set<PragmaAnnotation>? excludes = PragmaAnnotation.excludes[annotation];
if (excludes != null) {
for (PragmaAnnotation other in excludes) {
if (annotations.contains(other) &&
@@ -239,7 +237,7 @@
}
}
}
- Set<PragmaAnnotation> requires = PragmaAnnotation.requires[annotation];
+ Set<PragmaAnnotation>? requires = PragmaAnnotation.requires[annotation];
if (requires != null) {
for (PragmaAnnotation other in requires) {
if (!annotations.contains(other)) {
@@ -309,30 +307,30 @@
/// What should the compiler do with parameter type assertions in [member].
///
/// If [member] is `null`, the default policy is returned.
- CheckPolicy getParameterCheckPolicy(MemberEntity member);
+ CheckPolicy getParameterCheckPolicy(MemberEntity? member);
/// What should the compiler do with implicit downcasts in [member].
///
/// If [member] is `null`, the default policy is returned.
- CheckPolicy getImplicitDowncastCheckPolicy(MemberEntity member);
+ CheckPolicy getImplicitDowncastCheckPolicy(MemberEntity? member);
/// What the compiler should do with a boolean value in a condition context
/// in [member] when the language specification says it is a runtime error for
/// it to be null.
///
/// If [member] is `null`, the default policy is returned.
- CheckPolicy getConditionCheckPolicy(MemberEntity member);
+ CheckPolicy getConditionCheckPolicy(MemberEntity? member);
/// Whether should the compiler do with explicit casts in [member].
///
/// If [member] is `null`, the default policy is returned.
- CheckPolicy getExplicitCastCheckPolicy(MemberEntity member);
+ CheckPolicy getExplicitCastCheckPolicy(MemberEntity? member);
/// What should the compiler do with index bounds checks `[]`, `[]=` and
/// `removeLast()` operations in the body of [member].
///
/// If [member] is `null`, the default policy is returned.
- CheckPolicy getIndexBoundsCheckPolicy(MemberEntity member);
+ CheckPolicy getIndexBoundsCheckPolicy(MemberEntity? member);
}
class AnnotationsDataImpl implements AnnotationsData {
@@ -378,7 +376,7 @@
}
bool _hasPragma(MemberEntity member, PragmaAnnotation annotation) {
- EnumSet<PragmaAnnotation> set = pragmaAnnotations[member];
+ EnumSet<PragmaAnnotation>? set = pragmaAnnotations[member];
return set != null && set.contains(annotation);
}
@@ -415,7 +413,7 @@
pragmaAnnotations
.forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
if (set.contains(PragmaAnnotation.noInline)) {
- f(member);
+ f(member as FunctionEntity);
}
});
}
@@ -425,7 +423,7 @@
pragmaAnnotations
.forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
if (set.contains(PragmaAnnotation.tryInline)) {
- f(member);
+ f(member as FunctionEntity);
}
});
}
@@ -435,7 +433,7 @@
pragmaAnnotations
.forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
if (set.contains(PragmaAnnotation.noThrows)) {
- f(member);
+ f(member as FunctionEntity);
}
});
}
@@ -445,15 +443,15 @@
pragmaAnnotations
.forEach((MemberEntity member, EnumSet<PragmaAnnotation> set) {
if (set.contains(PragmaAnnotation.noSideEffects)) {
- f(member);
+ f(member as FunctionEntity);
}
});
}
@override
- CheckPolicy getParameterCheckPolicy(MemberEntity member) {
+ CheckPolicy getParameterCheckPolicy(MemberEntity? member) {
if (member != null) {
- EnumSet<PragmaAnnotation> annotations = pragmaAnnotations[member];
+ EnumSet<PragmaAnnotation>? annotations = pragmaAnnotations[member];
if (annotations != null) {
if (annotations.contains(PragmaAnnotation.typesTrust)) {
return CheckPolicy.trusted;
@@ -470,9 +468,9 @@
}
@override
- CheckPolicy getImplicitDowncastCheckPolicy(MemberEntity member) {
+ CheckPolicy getImplicitDowncastCheckPolicy(MemberEntity? member) {
if (member != null) {
- EnumSet<PragmaAnnotation> annotations = pragmaAnnotations[member];
+ EnumSet<PragmaAnnotation>? annotations = pragmaAnnotations[member];
if (annotations != null) {
if (annotations.contains(PragmaAnnotation.typesTrust)) {
return CheckPolicy.trusted;
@@ -489,9 +487,9 @@
}
@override
- CheckPolicy getConditionCheckPolicy(MemberEntity member) {
+ CheckPolicy getConditionCheckPolicy(MemberEntity? member) {
if (member != null) {
- EnumSet<PragmaAnnotation> annotations = pragmaAnnotations[member];
+ EnumSet<PragmaAnnotation>? annotations = pragmaAnnotations[member];
if (annotations != null) {
if (annotations.contains(PragmaAnnotation.typesTrust)) {
return CheckPolicy.trusted;
@@ -508,9 +506,9 @@
}
@override
- CheckPolicy getExplicitCastCheckPolicy(MemberEntity member) {
+ CheckPolicy getExplicitCastCheckPolicy(MemberEntity? member) {
if (member != null) {
- EnumSet<PragmaAnnotation> annotations = pragmaAnnotations[member];
+ EnumSet<PragmaAnnotation>? annotations = pragmaAnnotations[member];
if (annotations != null) {
if (annotations.contains(PragmaAnnotation.asTrust)) {
return CheckPolicy.trusted;
@@ -523,9 +521,9 @@
}
@override
- CheckPolicy getIndexBoundsCheckPolicy(MemberEntity member) {
+ CheckPolicy getIndexBoundsCheckPolicy(MemberEntity? member) {
if (member != null) {
- EnumSet<PragmaAnnotation> annotations = pragmaAnnotations[member];
+ EnumSet<PragmaAnnotation>? annotations = pragmaAnnotations[member];
if (annotations != null) {
if (annotations.contains(PragmaAnnotation.indexBoundsTrust)) {
return CheckPolicy.trusted;
diff --git a/pkg/compiler/lib/src/serialization/serialization_interfaces.dart b/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
index ccb047e..5fac8e9 100644
--- a/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
+++ b/pkg/compiler/lib/src/serialization/serialization_interfaces.dart
@@ -61,6 +61,10 @@
void writeTypeVariable(
covariant TypeVariableEntity value); // IndexedTypeVariable
+ void writeMemberMap<V>(
+ Map<MemberEntity, V>? map, void f(MemberEntity member, V value),
+ {bool allowNull = false});
+
void writeLibrary(covariant LibraryEntity value); // IndexedLibrary
void writeLibraryOrNull(covariant LibraryEntity? value); // IndexedLibrary
@@ -101,6 +105,10 @@
ClassEntity? readClassOrNull(); // IndexedClass
TypeVariableEntity readTypeVariable(); // IndexedTypeVariable
+ Map<K, V> readMemberMap<K extends MemberEntity, V>(V f(MemberEntity member));
+ Map<K, V>? readMemberMapOrNull<K extends MemberEntity, V>(
+ V f(MemberEntity member));
+
LibraryEntity readLibrary(); // IndexedLibrary;
LibraryEntity? readLibraryOrNull(); // IndexedLibrary;
diff --git a/pkg/compiler/lib/src/serialization/sink.dart b/pkg/compiler/lib/src/serialization/sink.dart
index 8c5e1ba..cc836b4 100644
--- a/pkg/compiler/lib/src/serialization/sink.dart
+++ b/pkg/compiler/lib/src/serialization/sink.dart
@@ -810,6 +810,7 @@
///
/// This is a convenience method to be used together with
/// [DataSourceReader.readMemberMap].
+ @override
void writeMemberMap<V>(
Map<MemberEntity, V> map, void f(MemberEntity member, V value),
{bool allowNull = false}) {
diff --git a/pkg/compiler/lib/src/serialization/source.dart b/pkg/compiler/lib/src/serialization/source.dart
index b09e780..a0e4284 100644
--- a/pkg/compiler/lib/src/serialization/source.dart
+++ b/pkg/compiler/lib/src/serialization/source.dart
@@ -975,15 +975,26 @@
}
/// Reads a map from indexed members to [V] values from this data source,
- /// calling [f] to read each value from the data source. If [emptyAsNull] is
- /// `true`, `null` is returned instead of an empty map.
+ /// calling [f] to read each value from the data source.
///
/// This is a convenience method to be used together with
/// [DataSinkWriter.writeMemberMap].
- Map<K, V> readMemberMap<K extends MemberEntity, V>(V f(MemberEntity member),
- {bool emptyAsNull = false}) {
+ @override
+ Map<K, V> readMemberMap<K extends MemberEntity, V>(V f(MemberEntity member)) {
+ return readMemberMapOrNull<K, V>(f) ?? {};
+ }
+
+ /// Reads a map from indexed members to [V] values from this data source,
+ /// calling [f] to read each value from the data source.
+ /// `null` is returned instead of an empty map.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSinkWriter.writeMemberMap].
+ @override
+ Map<K, V> readMemberMapOrNull<K extends MemberEntity, V>(
+ V f(MemberEntity member)) {
int count = readInt();
- if (count == 0 && emptyAsNull) return null;
+ if (count == 0) return null;
Map<K, V> map = {};
for (int i = 0; i < count; i++) {
MemberEntity member = readMember();
diff --git a/tools/VERSION b/tools/VERSION
index 2157b84..5affc37 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 141
+PRERELEASE 142
PRERELEASE_PATCH 0
\ No newline at end of file