Version 2.12.0-36.0.dev

Merge commit '4b3840d01ddfed57374b872927a03921077614b0' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 139cd68..548f1a9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -98,6 +98,9 @@
   ```
 
   See [#44072][].
+
+  For legacy dependencies without an sdk constraint pub will now assume a
+  default language version of 2.7.
 * The top level `pub` executable has been deprecated. Use `dart pub` instead.
   See [dart tool][].
 * New command `dart pub add` that adds  new dependencies to your `pubspec.yaml`.
diff --git a/DEPS b/DEPS
index bb39333..73717bf 100644
--- a/DEPS
+++ b/DEPS
@@ -132,7 +132,7 @@
   "ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
   "pool_rev": "eedbd5fde84f9a1a8da643b475305a81841da599",
   "protobuf_rev": "3746c8fd3f2b0147623a8e3db89c3ff4330de760",
-  "pub_rev": "b10966c6a8ad7d95c2023b7842fa2697001d2fdf",
+  "pub_rev": "c00d4b4abf5b4ff265a7ce6282b748551f1b5b1f",
   "pub_semver_tag": "v1.4.4",
   "resource_rev": "6b79867d0becf5395e5819a75720963b8298e9a7",
   "root_certificates_rev": "7e5ec82c99677a2e5b95ce296c4d68b0d3378ed8",
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 6bce0eb..e40a4fc 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -8714,13 +8714,12 @@
             _names)> templateStrongModeNNBDPackageOptOut = const Template<
         Message Function(List<String> _names)>(
     messageTemplate:
-        r"""This project cannot run with sound null safety, because one or more project dependencies do not
-support null safety:
+        r"""Cannot run with sound null safety, because the following dependencies
+don't support null safety:
 
 #names
 
-Run 'pub outdated --mode=null-safety' to determine if versions of your
-dependencies supporting null safety are available.""",
+For solutions, see https://dart.dev/go/unsound-null-safety""",
     withArguments: _withArgumentsStrongModeNNBDPackageOptOut);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -8737,13 +8736,12 @@
   String names = itemizeNames(_names);
   return new Message(codeStrongModeNNBDPackageOptOut,
       message:
-          """This project cannot run with sound null safety, because one or more project dependencies do not
-support null safety:
+          """Cannot run with sound null safety, because the following dependencies
+don't support null safety:
 
 ${names}
 
-Run 'pub outdated --mode=null-safety' to determine if versions of your
-dependencies supporting null safety are available.""",
+For solutions, see https://dart.dev/go/unsound-null-safety""",
       arguments: {'names': _names});
 }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 4cd7a7e..56a9123 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -749,7 +749,15 @@
 
     Class cls = classBuilder.cls;
     Constructor constructor = memberBuilder.member;
-    bool isConst = constructor.isConst && mixin.fields.isEmpty;
+    bool isConst = constructor.isConst;
+    if (isConst && mixin.fields.isNotEmpty) {
+      for (Field field in mixin.fields) {
+        if (!field.isStatic) {
+          isConst = false;
+          break;
+        }
+      }
+    }
     List<VariableDeclaration> positionalParameters = <VariableDeclaration>[];
     List<VariableDeclaration> namedParameters = <VariableDeclaration>[];
     List<Expression> positional = <Expression>[];
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 4e6e901..ae4a9e7 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1325,13 +1325,12 @@
 
 StrongModeNNBDPackageOptOut:
   template:  |
-    This project cannot run with sound null safety, because one or more project dependencies do not
-    support null safety:
+    Cannot run with sound null safety, because the following dependencies
+    don't support null safety:
 
     #names
 
-    Run 'pub outdated --mode=null-safety' to determine if versions of your
-    dependencies supporting null safety are available.
+    For solutions, see https://dart.dev/go/unsound-null-safety
 
 WeakWithStrongDillLibrary:
   template: "Loaded library is compiled with sound null safety and cannot be used in compilation for unsound null safety."
diff --git a/pkg/front_end/test/spell_checking_list_messages.txt b/pkg/front_end/test/spell_checking_list_messages.txt
index 324b76d..debea18 100644
--- a/pkg/front_end/test/spell_checking_list_messages.txt
+++ b/pkg/front_end/test/spell_checking_list_messages.txt
@@ -19,6 +19,7 @@
 constructor(s)
 count.#count
 d
+dart.dev
 dart2js_server
 dart:ffi
 dart_runner
@@ -30,6 +31,7 @@
 flutter_runner
 futureor
 h
+https
 interop
 libraries.json
 list.filled
@@ -51,6 +53,7 @@
 pubspec.yaml
 re
 sdksummary
+solutions
 stacktrace
 stringokempty
 struct<#name
diff --git a/pkg/front_end/testcases/general/issue40982.dart b/pkg/front_end/testcases/general/issue40982.dart
new file mode 100644
index 0000000..ed06fc3
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue40982.dart
@@ -0,0 +1,37 @@
+// 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 {
+  const A();
+}
+
+mixin B {
+  static const int value = 1;
+}
+
+class C1 extends A with B {
+  const C1();
+}
+
+class C2 = A with B;
+
+class C3 extends C2 {
+  const C3();
+}
+
+mixin D {
+  int value = 1;
+}
+
+class E1 extends A with D {
+  const E1();
+}
+
+class E2 = A with D;
+
+class E3 extends E2 {
+  const E3();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue40982.dart.outline.expect b/pkg/front_end/testcases/general/issue40982.dart.outline.expect
new file mode 100644
index 0000000..642ab52
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue40982.dart.outline.expect
@@ -0,0 +1,98 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue40982.dart:28:9: Error: A constant constructor can't call a non-constant super constructor.
+//   const E1();
+//         ^
+//
+// pkg/front_end/testcases/general/issue40982.dart:34:9: Error: A constant constructor can't call a non-constant super constructor.
+//   const E3();
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::A*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class B extends core::Object /*isMixinDeclaration*/  {
+  static const field core::int* value = 1;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class _C1&A&B = self::A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_C1&A&B*
+    : super self::A::•()
+    ;
+}
+class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
+  const constructor •() → self::C1*
+    : super self::_C1&A&B::•()
+    ;
+}
+class C2 = self::A with self::B /*hasConstConstructor*/  {
+  const synthetic constructor •() → self::C2*
+    : super self::A::•()
+    ;
+}
+class C3 extends self::C2 /*hasConstConstructor*/  {
+  const constructor •() → self::C3*
+    : super self::C2::•()
+    ;
+}
+abstract class D extends core::Object /*isMixinDeclaration*/  {
+  field core::int* value;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class _E1&A&D = self::A with self::D /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_E1&A&D*
+    : super self::A::•()
+    ;
+}
+class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
+  const constructor •() → self::E1*
+    : super self::_E1&A&D::•()
+    ;
+}
+class E2 = self::A with self::D {
+  synthetic constructor •() → self::E2*
+    : super self::A::•()
+    ;
+}
+class E3 extends self::E2 /*hasConstConstructor*/  {
+  const constructor •() → self::E3*
+    : super self::E2::•()
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/issue40982.dart.strong.expect b/pkg/front_end/testcases/general/issue40982.dart.strong.expect
new file mode 100644
index 0000000..d5bdf49
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue40982.dart.strong.expect
@@ -0,0 +1,101 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue40982.dart:28:9: Error: A constant constructor can't call a non-constant super constructor.
+//   const E1();
+//         ^
+//
+// pkg/front_end/testcases/general/issue40982.dart:34:9: Error: A constant constructor can't call a non-constant super constructor.
+//   const E3();
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::A*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class B extends core::Object /*isMixinDeclaration*/  {
+  static const field core::int* value = #C1;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class _C1&A&B = self::A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_C1&A&B*
+    : super self::A::•()
+    ;
+}
+class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
+  const constructor •() → self::C1*
+    : super self::_C1&A&B::•()
+    ;
+}
+class C2 = self::A with self::B /*hasConstConstructor*/  {
+  const synthetic constructor •() → self::C2*
+    : super self::A::•()
+    ;
+}
+class C3 extends self::C2 /*hasConstConstructor*/  {
+  const constructor •() → self::C3*
+    : super self::C2::•()
+    ;
+}
+abstract class D extends core::Object /*isMixinDeclaration*/  {
+  field core::int* value = 1;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class _E1&A&D = self::A with self::D /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_E1&A&D*
+    : super self::A::•()
+    ;
+}
+class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
+  const constructor •() → self::E1*
+    : super self::_E1&A&D::•()
+    ;
+}
+class E2 = self::A with self::D {
+  synthetic constructor •() → self::E2*
+    : super self::A::•()
+    ;
+}
+class E3 extends self::E2 /*hasConstConstructor*/  {
+  const constructor •() → self::E3*
+    : super self::E2::•()
+    ;
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+}
diff --git a/pkg/front_end/testcases/general/issue40982.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue40982.dart.strong.transformed.expect
new file mode 100644
index 0000000..a903a15
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue40982.dart.strong.transformed.expect
@@ -0,0 +1,145 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue40982.dart:28:9: Error: A constant constructor can't call a non-constant super constructor.
+//   const E1();
+//         ^
+//
+// pkg/front_end/testcases/general/issue40982.dart:34:9: Error: A constant constructor can't call a non-constant super constructor.
+//   const E3();
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::A*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class B extends core::Object /*isMixinDeclaration*/  {
+  static const field core::int* value = #C1;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class _C1&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  static const field core::int* value = #C1;
+  const synthetic constructor •() → self::_C1&A&B*
+    : super self::A::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
+  const constructor •() → self::C1*
+    : super self::_C1&A&B::•()
+    ;
+}
+class C2 extends self::A implements self::B /*isEliminatedMixin,hasConstConstructor*/  {
+  static const field core::int* value = #C1;
+  const synthetic constructor •() → self::C2*
+    : super self::A::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+class C3 extends self::C2 /*hasConstConstructor*/  {
+  const constructor •() → self::C3*
+    : super self::C2::•()
+    ;
+}
+abstract class D extends core::Object /*isMixinDeclaration*/  {
+  field core::int* value = 1;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+abstract class _E1&A&D extends self::A implements self::D /*isAnonymousMixin,isEliminatedMixin*/  {
+  field core::int* value = 1;
+  synthetic constructor •() → self::_E1&A&D*
+    : super self::A::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
+  const constructor •() → self::E1*
+    : super self::_E1&A&D::•()
+    ;
+}
+class E2 extends self::A implements self::D /*isEliminatedMixin*/  {
+  field core::int* value = 1;
+  synthetic constructor •() → self::E2*
+    : super self::A::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+class E3 extends self::E2 /*hasConstConstructor*/  {
+  const constructor •() → self::E3*
+    : super self::E2::•()
+    ;
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+}
diff --git a/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect
new file mode 100644
index 0000000..d0c04bf
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect
@@ -0,0 +1,33 @@
+class A {
+  const A();
+}
+
+mixin B {
+  static const int value = 1;
+}
+
+class C1 extends A with B {
+  const C1();
+}
+
+class C2 = A with B;
+
+class C3 extends C2 {
+  const C3();
+}
+
+mixin D {
+  int value = 1;
+}
+
+class E1 extends A with D {
+  const E1();
+}
+
+class E2 = A with D;
+
+class E3 extends E2 {
+  const E3();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..eeaccee
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect
@@ -0,0 +1,31 @@
+class A {
+  const A();
+}
+
+class C1 extends A with B {
+  const C1();
+}
+
+class C2 = A with B;
+
+class C3 extends C2 {
+  const C3();
+}
+
+class E1 extends A with D {
+  const E1();
+}
+
+class E2 = A with D;
+
+class E3 extends E2 {
+  const E3();
+}
+
+main() {}
+mixin B {
+  static const int value = 1;
+}
+mixin D {
+  int value = 1;
+}
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.1.expect
index cdbc8c9..c60e92f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.1.expect
@@ -2,14 +2,13 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:foo
 //  - package:bar
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 library from "package:bar/bar.dart" as bar {
 
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.2.expect
index d574728..8d45bc5 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.2.expect
@@ -2,14 +2,13 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:foo
 //  - package:bar
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 library from "package:bar/bar.dart" as bar {
 
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.3.expect
index caa2322..4c66e26 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/can_get_rid_of_nnbd_issue_error.yaml.world.3.expect
@@ -2,13 +2,12 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:bar
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 library from "package:bar/bar.dart" as bar {
 
diff --git a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.outline.expect b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.outline.expect
index a0f941d..6f3562f 100644
--- a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.outline.expect
@@ -1,14 +1,13 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:opt_in_package/opt_out_lib.dart
 //  - package:opt_out_package
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 // pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/opt_in_package/lib/opt_in_lib.dart: Error: Loaded library is compiled with unsound null safety and cannot be used in compilation for sound null safety.
 //
diff --git a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.expect b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.expect
index d72b9a7..5600de5 100644
--- a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.expect
@@ -1,14 +1,13 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:opt_in_package/opt_out_lib.dart
 //  - package:opt_out_package
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 // pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/opt_in_package/lib/opt_in_lib.dart: Error: Loaded library is compiled with unsound null safety and cannot be used in compilation for sound null safety.
 //
diff --git a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.transformed.expect
index d72b9a7..5600de5 100644
--- a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/strong.dart.strong.transformed.expect
@@ -1,14 +1,13 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:opt_in_package/opt_out_lib.dart
 //  - package:opt_out_package
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 // pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/opt_in_package/lib/opt_in_lib.dart: Error: Loaded library is compiled with unsound null safety and cannot be used in compilation for sound null safety.
 //
diff --git a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.outline.expect b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.outline.expect
index 59a5039..967b08d 100644
--- a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.outline.expect
@@ -8,13 +8,12 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:opt_out_package
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 library /*isNonNullableByDefault*/;
 import self as self;
diff --git a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.expect b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.expect
index d834f3b..874184d 100644
--- a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.expect
@@ -8,13 +8,12 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:opt_out_package
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 library /*isNonNullableByDefault*/;
 import self as self;
diff --git a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.transformed.expect
index 95f7dc1..fda0ef7 100644
--- a/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/strong.dart.strong.transformed.expect
@@ -1,13 +1,12 @@
 //
 // Problems in component:
 //
-// Error: This project cannot run with sound null safety, because one or more project dependencies do not
-// support null safety:
+// Error: Cannot run with sound null safety, because the following dependencies
+// don't support null safety:
 //
 //  - package:opt_out_package
 //
-// Run 'pub outdated --mode=null-safety' to determine if versions of your
-// dependencies supporting null safety are available.
+// For solutions, see https://dart.dev/go/unsound-null-safety
 //
 library /*isNonNullableByDefault*/;
 import self as self;
diff --git a/tools/VERSION b/tools/VERSION
index 5a2abd7..517c0f1 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 12
 PATCH 0
-PRERELEASE 35
+PRERELEASE 36
 PRERELEASE_PATCH 0
\ No newline at end of file