Version 2.10.0-23.0.dev
Merge commit 'bc73bb1b2c7cebef0f33959003f4f200f042d4af' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index 76b47a0..42c9895 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -243,17 +243,6 @@
void registerOverrideDependency(ClassMember overriddenMember);
}
-/// Returns true if [a] is a class member conflict with [b]. [a] is assumed to
-/// be declared in the class, [b] is assumed to be inherited.
-///
-/// See the section named "Class Member Conflicts" in [Dart Programming
-/// Language Specification](
-/// ../../../../../../docs/language/dartLangSpec.tex#classMemberConflicts).
-bool isInheritanceConflict(ClassMember a, ClassMember b) {
- if (a.isStatic) return true;
- return a.isProperty != b.isProperty;
-}
-
bool hasSameSignature(FunctionNode a, FunctionNode b) {
List<TypeParameter> aTypeParameters = a.typeParameters;
List<TypeParameter> bTypeParameters = b.typeParameters;
@@ -346,9 +335,6 @@
Types types;
- Map<ClassMember, Map<ClassMember, ClassMember>> inheritanceConflictCache =
- new Map.identity();
-
ClassHierarchyBuilder(this.objectClassBuilder, this.loader, this.coreTypes)
: objectClass = objectClassBuilder.cls,
futureClass = coreTypes.futureClass,
@@ -362,7 +348,6 @@
substitutions.clear();
_overrideChecks.clear();
_delayedTypeComputations.clear();
- inheritanceConflictCache.clear();
_delayedMemberChecks.clear();
}
@@ -651,35 +636,10 @@
classBuilder.library.loader == hierarchy.loader;
ClassMember checkInheritanceConflict(ClassMember a, ClassMember b) {
- hierarchy.inheritanceConflictCache[a] ??= new Map.identity();
- if (hierarchy.inheritanceConflictCache[a].containsKey(b)) {
- return hierarchy.inheritanceConflictCache[a][b];
- }
-
- if (a.hasDeclarations) {
- ClassMember result;
- for (int i = 0; i < a.declarations.length; i++) {
- ClassMember d = checkInheritanceConflict(a.declarations[i], b);
- result ??= d;
- }
- hierarchy.inheritanceConflictCache[a][b] = result;
- return result;
- }
- if (b.hasDeclarations) {
- ClassMember result;
- for (int i = 0; i < b.declarations.length; i++) {
- ClassMember d = checkInheritanceConflict(a, b.declarations[i]);
- result ??= d;
- }
- hierarchy.inheritanceConflictCache[a][b] = result;
- return result;
- }
- if (isInheritanceConflict(a, b)) {
+ if (a.isStatic || a.isProperty != b.isProperty) {
reportInheritanceConflict(a, b);
- hierarchy.inheritanceConflictCache[a][b] = a;
return a;
}
- hierarchy.inheritanceConflictCache[a][b] = null;
return null;
}
@@ -2693,7 +2653,10 @@
final Name name;
DelayedMember(this.classBuilder, this.declarations, this.isProperty,
- this.isSetter, this.modifyKernel, this.isExplicitlyAbstract, this.name);
+ this.isSetter, this.modifyKernel, this.isExplicitlyAbstract, this.name) {
+ assert(declarations.every((element) => element.isProperty == isProperty),
+ "isProperty mismatch for $this");
+ }
@override
bool get isSourceDeclaration => false;
diff --git a/pkg/front_end/testcases/general/instance_setter_conflict.dart b/pkg/front_end/testcases/general/instance_setter_conflict.dart
new file mode 100644
index 0000000..c570aaf
--- /dev/null
+++ b/pkg/front_end/testcases/general/instance_setter_conflict.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A {
+ int v;
+}
+
+class C extends A {
+ static int n;
+ static get v {
+ return n;
+ }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/instance_setter_conflict.dart.outline.expect b/pkg/front_end/testcases/general/instance_setter_conflict.dart.outline.expect
new file mode 100644
index 0000000..75a49e7
--- /dev/null
+++ b/pkg/front_end/testcases/general/instance_setter_conflict.dart.outline.expect
@@ -0,0 +1,38 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/instance_setter_conflict.dart:11:14: Error: Can't declare a member that conflicts with an inherited one.
+// static get v {
+// ^
+// pkg/front_end/testcases/general/instance_setter_conflict.dart:6:7: Context: This is the inherited member.
+// int v;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ field core::int* v;
+ synthetic constructor •() → self::A*
+ ;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class C extends self::A {
+ static field core::int* n;
+ synthetic constructor •() → self::C*
+ ;
+ static get v() → dynamic
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/instance_setter_conflict.dart.strong.expect b/pkg/front_end/testcases/general/instance_setter_conflict.dart.strong.expect
new file mode 100644
index 0000000..98ce703
--- /dev/null
+++ b/pkg/front_end/testcases/general/instance_setter_conflict.dart.strong.expect
@@ -0,0 +1,40 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/instance_setter_conflict.dart:11:14: Error: Can't declare a member that conflicts with an inherited one.
+// static get v {
+// ^
+// pkg/front_end/testcases/general/instance_setter_conflict.dart:6:7: Context: This is the inherited member.
+// int v;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ field core::int* v = null;
+ synthetic constructor •() → self::A*
+ : super core::Object::•()
+ ;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class C extends self::A {
+ static field core::int* n = null;
+ synthetic constructor •() → self::C*
+ : super self::A::•()
+ ;
+ static get v() → dynamic {
+ return self::C::n;
+ }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/instance_setter_conflict.dart.strong.transformed.expect b/pkg/front_end/testcases/general/instance_setter_conflict.dart.strong.transformed.expect
new file mode 100644
index 0000000..98ce703
--- /dev/null
+++ b/pkg/front_end/testcases/general/instance_setter_conflict.dart.strong.transformed.expect
@@ -0,0 +1,40 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/instance_setter_conflict.dart:11:14: Error: Can't declare a member that conflicts with an inherited one.
+// static get v {
+// ^
+// pkg/front_end/testcases/general/instance_setter_conflict.dart:6:7: Context: This is the inherited member.
+// int v;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ field core::int* v = null;
+ synthetic constructor •() → self::A*
+ : super core::Object::•()
+ ;
+ abstract member-signature get _identityHashCode() → core::int*;
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+ abstract member-signature operator ==(dynamic other) → core::bool*;
+ abstract member-signature get hashCode() → core::int*;
+ abstract member-signature method toString() → core::String*;
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+ abstract member-signature get runtimeType() → core::Type*;
+}
+class C extends self::A {
+ static field core::int* n = null;
+ synthetic constructor •() → self::C*
+ : super self::A::•()
+ ;
+ static get v() → dynamic {
+ return self::C::n;
+ }
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/instance_setter_conflict.dart.textual_outline.expect b/pkg/front_end/testcases/general/instance_setter_conflict.dart.textual_outline.expect
new file mode 100644
index 0000000..90576ff
--- /dev/null
+++ b/pkg/front_end/testcases/general/instance_setter_conflict.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+class A {
+ int v;
+}
+
+class C extends A {
+ static int n;
+ static get v {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/instance_setter_conflict.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/instance_setter_conflict.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..e921e15
--- /dev/null
+++ b/pkg/front_end/testcases/general/instance_setter_conflict.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+class A {
+ int v;
+}
+
+class C extends A {
+ static get v {}
+ static int n;
+}
+
+main() {}
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index 68ce685..f4ff221 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -50,10 +50,6 @@
LanguageFeatures/Triple-Shift/*: Skip # Not migrated to NNBD
LanguageFeatures/int-to-double/*: Skip # Not migrated to NNBD
LanguageFeatures/regression/*: Skip # Not migrated to NNBD
-LibTest/collection/ListBase/*: Skip # Not migrated to NNBD
-LibTest/collection/ListMixin/*: Skip # Not migrated to NNBD
-LibTest/core/CyclicInitializationError/*: Skip # Not migrated to NNBD
-LibTest/core/int/*: Skip # Not migrated to NNBD
LibTest/html/CanvasRenderingContext2D/*: Skip # Not migrated to NNBD
LibTest/html/Document/*: Skip # Not migrated to NNBD
LibTest/html/Element/*: Skip # Not migrated to NNBD
diff --git a/tests/co19/co19-kernel.status b/tests/co19/co19-kernel.status
index 8aa80ab..ce7504e 100644
--- a/tests/co19/co19-kernel.status
+++ b/tests/co19/co19-kernel.status
@@ -178,6 +178,10 @@
LanguageFeatures/regression/34803_t01: Crash
LanguageFeatures/regression/34803_t02: Crash
+[ $arch == simarm64 && $runtime == dart_precompiled ]
+LibTest/collection/ListBase/ListBase_class_A01_t01: Skip # Issue 43036
+LibTest/collection/ListMixin/ListMixin_class_A01_t01: Skip # Issue 43036
+
[ $runtime == vm && $system == linux && ($compiler == dartk || $compiler == dartkb) ]
LibTest/isolate/Isolate/spawn_A06_t03: Crash
diff --git a/tools/VERSION b/tools/VERSION
index 771453f..651b696 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 10
PATCH 0
-PRERELEASE 22
+PRERELEASE 23
PRERELEASE_PATCH 0
\ No newline at end of file