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