Version 2.13.0-18.0.dev

Merge commit 'cb89632bdcc85124f575a5bc3222e5fcf727d986' into 'dev'
diff --git a/pkg/front_end/test/vm_service_heap_helper.dart b/pkg/front_end/test/vm_service_heap_helper.dart
index c011aea..9b44284 100644
--- a/pkg/front_end/test/vm_service_heap_helper.dart
+++ b/pkg/front_end/test/vm_service_heap_helper.dart
@@ -218,7 +218,7 @@
       vmService.HeapSnapshotGraph graph) {
     for (vmService.HeapSnapshotField field in class_.fields) {
       if (field.name == name) {
-        int index = o.references[field.index] - 1;
+        int index = o.references[field.index];
         if (index < 0) {
           // Sentinel object.
           return null;
@@ -233,10 +233,10 @@
       vmService.HeapSnapshotObject o,
       vmService.HeapSnapshotGraph graph,
       Map<Uri, Map<String, List<String>>> prettyPrints) {
-    if (o.classId == 0) {
+    if (o.classId <= 0) {
       return "Class sentinel";
     }
-    vmService.HeapSnapshotClass class_ = graph.classes[o.classId - 1];
+    vmService.HeapSnapshotClass class_ = o.klass;
 
     if (class_.name == "_OneByteString") {
       return '"${o.data}"';
@@ -293,7 +293,7 @@
         new List<bool>.filled(graph.classes.length, false);
     for (int i = 0; i < graph.objects.length; i++) {
       vmService.HeapSnapshotObject o = graph.objects[i];
-      if (o.classId == 0) {
+      if (o.classId <= 0) {
         // Sentinel.
         continue;
       }
@@ -301,7 +301,7 @@
         // Class is not interesting.
         continue;
       }
-      vmService.HeapSnapshotClass c = graph.classes[o.classId - 1];
+      vmService.HeapSnapshotClass c = o.klass;
       Map<String, List<String>> interests = _interests[c.libraryUri];
       if (interests == null || interests.isEmpty) {
         // Not an object we care about.
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml b/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml
new file mode 100644
index 0000000..a6d4c36
--- /dev/null
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml
@@ -0,0 +1,59 @@
+# Copyright (c) 2021, 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.md file.
+
+type: newworld
+target: VM
+worlds:
+  - entry: main.dart
+    sources:
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "flutter",
+              "rootUri": "../flutter",
+              "languageVersion": "2.12"
+            }
+          ]
+        }
+      main.dart: |
+        import 'package:flutter/object.dart';
+        import 'lib1.dart';
+
+        class AdaptorElement extends RenderObject {
+          Adaptor get renderObject => super.renderObject;
+          void foo() {
+            print(renderObject.constraints.axis);
+          }
+        }
+      lib1.dart: |
+        import 'package:flutter/object.dart';
+        import 'lib2.dart';
+        abstract class Adaptor extends RenderFoo with LibMixin {}
+      lib2.dart: |
+        import 'package:flutter/object.dart';
+        mixin LibMixin on RenderObject {}
+      flutter/object.dart: |
+        class RenderFoo extends RenderObject {
+          FooConstraints get constraints => super.constraints as FooConstraints;
+        }
+        class FooConstraints extends Constraints {
+          String get axis => "hello";
+        }
+        class Constraints {}
+        class RenderObject {
+          Constraints get constraints => new Constraints();
+          RenderObject get renderObject => this;
+        }
+    expectedLibraryCount: 4
+
+  - entry: main.dart
+    errors: true
+    worldType: updated
+    expectInitializeFromDill: false
+    invalidate:
+      - main.dart
+    expectedLibraryCount: 4
+
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml.world.1.expect
new file mode 100644
index 0000000..372791d
--- /dev/null
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml.world.1.expect
@@ -0,0 +1,106 @@
+main = <No Member>;
+library from "package:flutter/object.dart" as obj {
+
+  class RenderFoo extends obj::RenderObject {
+    synthetic constructor •() → obj::RenderFoo
+      : super obj::RenderObject::•()
+      ;
+    get constraints() → obj::FooConstraints
+      return super.{obj::RenderObject::constraints} as{ForNonNullableByDefault} obj::FooConstraints;
+  }
+  class FooConstraints extends obj::Constraints {
+    synthetic constructor •() → obj::FooConstraints
+      : super obj::Constraints::•()
+      ;
+    get axis() → dart.core::String
+      return "hello";
+  }
+  class Constraints extends dart.core::Object {
+    synthetic constructor •() → obj::Constraints
+      : super dart.core::Object::•()
+      ;
+  }
+  class RenderObject extends dart.core::Object {
+    synthetic constructor •() → obj::RenderObject
+      : super dart.core::Object::•()
+      ;
+    get constraints() → obj::Constraints
+      return new obj::Constraints::•();
+    get renderObject() → obj::RenderObject
+      return this;
+  }
+}
+library from "org-dartlang-test:///lib1.dart" as lib1 {
+
+  import "package:flutter/object.dart";
+  import "org-dartlang-test:///lib2.dart";
+
+  abstract class _Adaptor&RenderFoo&LibMixin extends obj::RenderFoo implements lib2::LibMixin /*isAnonymousMixin,isEliminatedMixin*/  {
+    synthetic constructor •() → lib1::_Adaptor&RenderFoo&LibMixin*
+      : super obj::RenderFoo::•()
+      ;
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ constraints() → obj::Constraints*; -> obj::RenderObject::constraints
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ renderObject() → obj::RenderObject*; -> obj::RenderObject::renderObject
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator /* from org-dartlang-test:///lib2.dart */ ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+  abstract class Adaptor extends lib1::_Adaptor&RenderFoo&LibMixin {
+    synthetic constructor •() → lib1::Adaptor*
+      : super lib1::_Adaptor&RenderFoo&LibMixin::•()
+      ;
+  }
+}
+library from "org-dartlang-test:///lib2.dart" as lib2 {
+
+  import "package:flutter/object.dart";
+
+  abstract class LibMixin extends obj::RenderObject /*isMixinDeclaration*/  {
+    abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
+    abstract member-signature get renderObject() → obj::RenderObject*; -> obj::RenderObject::renderObject
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "package:flutter/object.dart";
+  import "org-dartlang-test:///lib1.dart";
+
+  class AdaptorElement extends obj::RenderObject {
+    synthetic constructor •() → main::AdaptorElement*
+      : super obj::RenderObject::•()
+      ;
+    get renderObject() → lib1::Adaptor*
+      return super.{obj::RenderObject::renderObject} as{TypeError} lib1::Adaptor*;
+    method foo() → void {
+      dart.core::print(this.{main::AdaptorElement::renderObject}.{lib1::_Adaptor&RenderFoo&LibMixin::constraints}.{obj::FooConstraints::axis});
+    }
+    abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+}
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml.world.2.expect
new file mode 100644
index 0000000..d241b60
--- /dev/null
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/error_on_recompile_with_no_change_02.yaml.world.2.expect
@@ -0,0 +1,115 @@
+main = <No Member>;
+library from "package:flutter/object.dart" as obj {
+
+  class RenderFoo extends obj::RenderObject {
+    synthetic constructor •() → obj::RenderFoo
+      : super obj::RenderObject::•()
+      ;
+    get constraints() → obj::FooConstraints
+      return super.{obj::RenderObject::constraints} as{ForNonNullableByDefault} obj::FooConstraints;
+  }
+  class FooConstraints extends obj::Constraints {
+    synthetic constructor •() → obj::FooConstraints
+      : super obj::Constraints::•()
+      ;
+    get axis() → dart.core::String
+      return "hello";
+  }
+  class Constraints extends dart.core::Object {
+    synthetic constructor •() → obj::Constraints
+      : super dart.core::Object::•()
+      ;
+  }
+  class RenderObject extends dart.core::Object {
+    synthetic constructor •() → obj::RenderObject
+      : super dart.core::Object::•()
+      ;
+    get constraints() → obj::Constraints
+      return new obj::Constraints::•();
+    get renderObject() → obj::RenderObject
+      return this;
+  }
+}
+library from "org-dartlang-test:///lib1.dart" as lib1 {
+
+  import "package:flutter/object.dart";
+  import "org-dartlang-test:///lib2.dart";
+
+  abstract class _Adaptor&RenderFoo&LibMixin extends obj::RenderFoo implements lib2::LibMixin /*isAnonymousMixin,isEliminatedMixin*/  {
+    synthetic constructor •() → lib1::_Adaptor&RenderFoo&LibMixin*
+      : super obj::RenderFoo::•()
+      ;
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ constraints() → obj::Constraints*; -> obj::RenderObject::constraints
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ renderObject() → obj::RenderObject*; -> obj::RenderObject::renderObject
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator /* from org-dartlang-test:///lib2.dart */ ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method /* from org-dartlang-test:///lib2.dart */ noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get /* from org-dartlang-test:///lib2.dart */ runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+  abstract class Adaptor extends lib1::_Adaptor&RenderFoo&LibMixin {
+    synthetic constructor •() → lib1::Adaptor*
+      : super lib1::_Adaptor&RenderFoo&LibMixin::•()
+      ;
+  }
+}
+library from "org-dartlang-test:///lib2.dart" as lib2 {
+
+  import "package:flutter/object.dart";
+
+  abstract class LibMixin extends obj::RenderObject /*isMixinDeclaration*/  {
+    abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
+    abstract member-signature get renderObject() → obj::RenderObject*; -> obj::RenderObject::renderObject
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+//
+// Problems in library:
+//
+// org-dartlang-test:///main.dart:7:36: Error: The getter 'axis' isn't defined for the class 'Constraints'.
+//  - 'Constraints' is from 'package:flutter/object.dart' ('org-dartlang-test:///flutter/object.dart').
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'axis'.
+//     print(renderObject.constraints.axis);
+//                                    ^^^^
+//
+
+  import "package:flutter/object.dart";
+  import "org-dartlang-test:///lib1.dart";
+
+  class AdaptorElement extends obj::RenderObject {
+    synthetic constructor •() → main::AdaptorElement*
+      : super obj::RenderObject::•()
+      ;
+    get renderObject() → lib1::Adaptor*
+      return super.{obj::RenderObject::renderObject} as{TypeError} lib1::Adaptor*;
+    method foo() → void {
+      dart.core::print(invalid-expression "org-dartlang-test:///main.dart:7:36: Error: The getter 'axis' isn't defined for the class 'Constraints'.\n - 'Constraints' is from 'package:flutter/object.dart' ('org-dartlang-test:///flutter/object.dart').\nTry correcting the name to the name of an existing getter, or defining a getter or field named 'axis'.\n    print(renderObject.constraints.axis);\n                                   ^^^^");
+    }
+    abstract member-signature get constraints() → obj::Constraints*; -> obj::RenderObject::constraints
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+}
diff --git a/tools/VERSION b/tools/VERSION
index e152219..c79fbca 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 17
+PRERELEASE 18
 PRERELEASE_PATCH 0
\ No newline at end of file