[fasta] Allow const constructors in mixin applications

Closes #33644, closes #33645, closes #32223.

Bug: http://dartbug.com/33644
Bug: http://dartbug.com/33645
Bug: http://dartbug.com/32223
Change-Id: Ia30efb8f450e62bfeb65c8b7fd7e23871ef0e87e
Reviewed-on: https://dart-review.googlesource.com/c/68368
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
index bdee95c..8381a1e 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -923,18 +923,6 @@
         r"""Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s).""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Null> codeConstConstructorInSubclassOfMixinApplication =
-    messageConstConstructorInSubclassOfMixinApplication;
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const MessageCode messageConstConstructorInSubclassOfMixinApplication =
-    const MessageCode("ConstConstructorInSubclassOfMixinApplication",
-        analyzerCodes: <String>[
-      "CONST_CONSTRUCTOR_IN_SUBCLASS_OF_MIXIN_APPLICATION"
-    ],
-        message: r"""Can't extend a mixin application and be 'const'.""");
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeConstConstructorNonFinalField =
     messageConstConstructorNonFinalField;
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index a6659ff..8c8c133 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -599,11 +599,6 @@
     ProcedureBuilder<TypeBuilder> member = this.member;
     scope = member.computeFormalParameterInitializerScope(scope);
     if (member is KernelConstructorBuilder) {
-      if (member.isConst &&
-          (classBuilder.cls.superclass?.isMixinApplication ?? false)) {
-        addProblem(fasta.messageConstConstructorInSubclassOfMixinApplication,
-            member.charOffset, member.name.length);
-      }
       if (member.formals != null) {
         for (KernelFormalParameterBuilder formal in member.formals) {
           if (formal.isInitializingFormal) {
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 7a62b1a..3fc17fc 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -533,7 +533,8 @@
     return new Constructor(function,
         name: constructor.name,
         initializers: <Initializer>[initializer],
-        isSynthetic: true);
+        isSynthetic: true,
+        isConst: constructor.isConst && mixin.fields.isEmpty);
   }
 
   void finishClonedParameters() {
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 5f6e9b5..3876a46 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -2665,10 +2665,6 @@
   template: "Field isn't final, but constructor is 'const'."
   severity: CONTEXT
 
-ConstConstructorInSubclassOfMixinApplication:
-  template: "Can't extend a mixin application and be 'const'."
-  analyzerCode: CONST_CONSTRUCTOR_IN_SUBCLASS_OF_MIXIN_APPLICATION
-
 ConstConstructorRedirectionToNonConst:
   template: "A constant constructor can't call a non-constant constructor."
   script:
diff --git a/pkg/front_end/testcases/bug33099.dart.outline.expect b/pkg/front_end/testcases/bug33099.dart.outline.expect
index 176f728..94c81bb 100644
--- a/pkg/front_end/testcases/bug33099.dart.outline.expect
+++ b/pkg/front_end/testcases/bug33099.dart.outline.expect
@@ -14,7 +14,7 @@
     ;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest {
-  synthetic constructor •() → self::_MyTest2&Object&MyTest
+  const synthetic constructor •() → self::_MyTest2&Object&MyTest
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/bug33099.dart.strong.expect b/pkg/front_end/testcases/bug33099.dart.strong.expect
index c745439..4fb89b3 100644
--- a/pkg/front_end/testcases/bug33099.dart.strong.expect
+++ b/pkg/front_end/testcases/bug33099.dart.strong.expect
@@ -16,7 +16,7 @@
   method foo() → void {}
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest {
-  synthetic constructor •() → self::_MyTest2&Object&MyTest
+  const synthetic constructor •() → self::_MyTest2&Object&MyTest
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect b/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
index a2f4a98..5ad81b8 100644
--- a/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
   method foo() → void {}
 }
 abstract class _MyTest2&Object&MyTest extends core::Object implements self::MyTest {
-  synthetic constructor •() → self::_MyTest2&Object&MyTest
+  const synthetic constructor •() → self::_MyTest2&Object&MyTest
     : super core::Object::•()
     ;
   @self::failingTest
diff --git a/pkg/front_end/testcases/bug34511.dart.legacy.expect b/pkg/front_end/testcases/bug34511.dart.legacy.expect
index c3b2cc5..4ba96c3 100644
--- a/pkg/front_end/testcases/bug34511.dart.legacy.expect
+++ b/pkg/front_end/testcases/bug34511.dart.legacy.expect
@@ -8,7 +8,7 @@
     ;
 }
 abstract class _B&Object&A<Z extends core::Object = dynamic> = core::Object with self::A<() → self::_B&Object&A::Z> {
-  synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/bug34511.dart.legacy.transformed.expect b/pkg/front_end/testcases/bug34511.dart.legacy.transformed.expect
index 2f2a19d..fe93483 100644
--- a/pkg/front_end/testcases/bug34511.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/bug34511.dart.legacy.transformed.expect
@@ -8,7 +8,7 @@
     ;
 }
 abstract class _B&Object&A<Z extends core::Object = dynamic> extends core::Object implements self::A<() → self::_B&Object&A::Z> {
-  synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/bug34511.dart.outline.expect b/pkg/front_end/testcases/bug34511.dart.outline.expect
index 0291dc5..1d6dbda 100644
--- a/pkg/front_end/testcases/bug34511.dart.outline.expect
+++ b/pkg/front_end/testcases/bug34511.dart.outline.expect
@@ -7,7 +7,7 @@
     ;
 }
 abstract class _B&Object&A<Z extends core::Object = dynamic> = core::Object with self::A<() → self::_B&Object&A::Z> {
-  synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/bug34511.dart.strong.expect b/pkg/front_end/testcases/bug34511.dart.strong.expect
index c3b2cc5..4ba96c3 100644
--- a/pkg/front_end/testcases/bug34511.dart.strong.expect
+++ b/pkg/front_end/testcases/bug34511.dart.strong.expect
@@ -8,7 +8,7 @@
     ;
 }
 abstract class _B&Object&A<Z extends core::Object = dynamic> = core::Object with self::A<() → self::_B&Object&A::Z> {
-  synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/bug34511.dart.strong.transformed.expect b/pkg/front_end/testcases/bug34511.dart.strong.transformed.expect
index 2f2a19d..fe93483 100644
--- a/pkg/front_end/testcases/bug34511.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug34511.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
     ;
 }
 abstract class _B&Object&A<Z extends core::Object = dynamic> extends core::Object implements self::A<() → self::_B&Object&A::Z> {
-  synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/clone_function_type.dart.legacy.expect b/pkg/front_end/testcases/clone_function_type.dart.legacy.expect
index 52b22ab..ef2a4c6 100644
--- a/pkg/front_end/testcases/clone_function_type.dart.legacy.expect
+++ b/pkg/front_end/testcases/clone_function_type.dart.legacy.expect
@@ -70,7 +70,7 @@
     ;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Bm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -80,7 +80,7 @@
     ;
 }
 abstract class _Cm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Cm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -90,7 +90,7 @@
     ;
 }
 abstract class _Dm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → core::int, self::_Dm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -100,7 +100,7 @@
     ;
 }
 abstract class _Em1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::_Em1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -110,7 +110,7 @@
     ;
 }
 abstract class _Fm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::_Fm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -120,7 +120,7 @@
     ;
 }
 abstract class _Gm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::_Gm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -130,7 +130,7 @@
     ;
 }
 abstract class _Hm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Hm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -140,7 +140,7 @@
     ;
 }
 abstract class _Im1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Im1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -150,7 +150,7 @@
     ;
 }
 abstract class _Jm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<core::Function, self::_Jm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -160,7 +160,7 @@
     ;
 }
 abstract class _Km1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::_Km1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -170,7 +170,7 @@
     ;
 }
 abstract class _Lm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::_Lm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -180,57 +180,57 @@
     ;
 }
 class Mm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Mm1::Z> {
-  synthetic constructor •() → self::Mm1<self::Mm1::Z>
+  const synthetic constructor •() → self::Mm1<self::Mm1::Z>
     : super core::Object::•()
     ;
 }
 class Nm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Nm1::Z> {
-  synthetic constructor •() → self::Nm1<self::Nm1::Z>
+  const synthetic constructor •() → self::Nm1<self::Nm1::Z>
     : super core::Object::•()
     ;
 }
 class Om1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → core::int, self::Om1::Z> {
-  synthetic constructor •() → self::Om1<self::Om1::Z>
+  const synthetic constructor •() → self::Om1<self::Om1::Z>
     : super core::Object::•()
     ;
 }
 class Pm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::Pm1::Z> {
-  synthetic constructor •() → self::Pm1<self::Pm1::Z>
+  const synthetic constructor •() → self::Pm1<self::Pm1::Z>
     : super core::Object::•()
     ;
 }
 class Qm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::Qm1::Z> {
-  synthetic constructor •() → self::Qm1<self::Qm1::Z>
+  const synthetic constructor •() → self::Qm1<self::Qm1::Z>
     : super core::Object::•()
     ;
 }
 class Rm1<Z extends core::Object = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::Rm1::Z> {
-  synthetic constructor •() → self::Rm1<self::Rm1::Z>
+  const synthetic constructor •() → self::Rm1<self::Rm1::Z>
     : super core::Object::•()
     ;
 }
 class Sm1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Sm1::Z> {
-  synthetic constructor •() → self::Sm1<self::Sm1::Z>
+  const synthetic constructor •() → self::Sm1<self::Sm1::Z>
     : super core::Object::•()
     ;
 }
 class Tm1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Tm1::Z> {
-  synthetic constructor •() → self::Tm1<self::Tm1::Z>
+  const synthetic constructor •() → self::Tm1<self::Tm1::Z>
     : super core::Object::•()
     ;
 }
 class Um1<Z extends core::Object = dynamic> = core::Object with self::Am1<core::Function, self::Um1::Z> {
-  synthetic constructor •() → self::Um1<self::Um1::Z>
+  const synthetic constructor •() → self::Um1<self::Um1::Z>
     : super core::Object::•()
     ;
 }
 class Vm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::Vm1::Z> {
-  synthetic constructor •() → self::Vm1<self::Vm1::Z>
+  const synthetic constructor •() → self::Vm1<self::Vm1::Z>
     : super core::Object::•()
     ;
 }
 class Wm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::Wm1::Z> {
-  synthetic constructor •() → self::Wm1<self::Wm1::Z>
+  const synthetic constructor •() → self::Wm1<self::Wm1::Z>
     : super core::Object::•()
     ;
 }
@@ -240,7 +240,7 @@
     ;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Bm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -250,7 +250,7 @@
     ;
 }
 abstract class _Cm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Cm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -260,7 +260,7 @@
     ;
 }
 abstract class _Dm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → core::int, self::_Dm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -270,7 +270,7 @@
     ;
 }
 abstract class _Em2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::_Em2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -280,7 +280,7 @@
     ;
 }
 abstract class _Fm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::_Fm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -290,7 +290,7 @@
     ;
 }
 abstract class _Gm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::_Gm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -300,7 +300,7 @@
     ;
 }
 abstract class _Hm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Hm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -310,7 +310,7 @@
     ;
 }
 abstract class _Im2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Im2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -320,7 +320,7 @@
     ;
 }
 abstract class _Jm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<core::Function, self::_Jm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -330,7 +330,7 @@
     ;
 }
 abstract class _Km2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::_Km2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -340,7 +340,7 @@
     ;
 }
 abstract class _Lm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::_Lm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -350,57 +350,57 @@
     ;
 }
 class Mm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Mm2::Z> {
-  synthetic constructor •() → self::Mm2<self::Mm2::Z>
+  const synthetic constructor •() → self::Mm2<self::Mm2::Z>
     : super core::Object::•()
     ;
 }
 class Nm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Nm2::Z> {
-  synthetic constructor •() → self::Nm2<self::Nm2::Z>
+  const synthetic constructor •() → self::Nm2<self::Nm2::Z>
     : super core::Object::•()
     ;
 }
 class Om2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → core::int, self::Om2::Z> {
-  synthetic constructor •() → self::Om2<self::Om2::Z>
+  const synthetic constructor •() → self::Om2<self::Om2::Z>
     : super core::Object::•()
     ;
 }
 class Pm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::Pm2::Z> {
-  synthetic constructor •() → self::Pm2<self::Pm2::Z>
+  const synthetic constructor •() → self::Pm2<self::Pm2::Z>
     : super core::Object::•()
     ;
 }
 class Qm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::Qm2::Z> {
-  synthetic constructor •() → self::Qm2<self::Qm2::Z>
+  const synthetic constructor •() → self::Qm2<self::Qm2::Z>
     : super core::Object::•()
     ;
 }
 class Rm2<Z extends core::Object = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::Rm2::Z> {
-  synthetic constructor •() → self::Rm2<self::Rm2::Z>
+  const synthetic constructor •() → self::Rm2<self::Rm2::Z>
     : super core::Object::•()
     ;
 }
 class Sm2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Sm2::Z> {
-  synthetic constructor •() → self::Sm2<self::Sm2::Z>
+  const synthetic constructor •() → self::Sm2<self::Sm2::Z>
     : super core::Object::•()
     ;
 }
 class Tm2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Tm2::Z> {
-  synthetic constructor •() → self::Tm2<self::Tm2::Z>
+  const synthetic constructor •() → self::Tm2<self::Tm2::Z>
     : super core::Object::•()
     ;
 }
 class Um2<Z extends core::Object = dynamic> = core::Object with self::Am2<core::Function, self::Um2::Z> {
-  synthetic constructor •() → self::Um2<self::Um2::Z>
+  const synthetic constructor •() → self::Um2<self::Um2::Z>
     : super core::Object::•()
     ;
 }
 class Vm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::Vm2::Z> {
-  synthetic constructor •() → self::Vm2<self::Vm2::Z>
+  const synthetic constructor •() → self::Vm2<self::Vm2::Z>
     : super core::Object::•()
     ;
 }
 class Wm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::Wm2::Z> {
-  synthetic constructor •() → self::Wm2<self::Wm2::Z>
+  const synthetic constructor •() → self::Wm2<self::Wm2::Z>
     : super core::Object::•()
     ;
 }
@@ -410,7 +410,7 @@
     ;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Bm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -420,7 +420,7 @@
     ;
 }
 abstract class _Cm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Cm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -430,7 +430,7 @@
     ;
 }
 abstract class _Dm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → core::int, self::_Dm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -440,7 +440,7 @@
     ;
 }
 abstract class _Em3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → dynamic, self::_Em3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -450,7 +450,7 @@
     ;
 }
 abstract class _Fm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → dynamic, self::_Fm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -460,7 +460,7 @@
     ;
 }
 abstract class _Gm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<({x: core::int}) → dynamic, self::_Gm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -470,7 +470,7 @@
     ;
 }
 abstract class _Hm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Hm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -480,7 +480,7 @@
     ;
 }
 abstract class _Im3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Im3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -490,7 +490,7 @@
     ;
 }
 abstract class _Jm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::Function) → dynamic, self::_Jm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -500,7 +500,7 @@
     ;
 }
 abstract class _Km3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → (() → core::Function) → dynamic, self::_Km3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/clone_function_type.dart.legacy.transformed.expect b/pkg/front_end/testcases/clone_function_type.dart.legacy.transformed.expect
index e33af86..5523c08 100644
--- a/pkg/front_end/testcases/clone_function_type.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/clone_function_type.dart.legacy.transformed.expect
@@ -44,7 +44,7 @@
     ;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::_Bm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -54,7 +54,7 @@
     ;
 }
 abstract class _Cm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::_Cm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -64,7 +64,7 @@
     ;
 }
 abstract class _Dm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → core::int, self::_Dm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -74,7 +74,7 @@
     ;
 }
 abstract class _Em1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::_Em1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -84,7 +84,7 @@
     ;
 }
 abstract class _Fm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::_Fm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -94,7 +94,7 @@
     ;
 }
 abstract class _Gm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<({x: core::int}) → dynamic, self::_Gm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -104,7 +104,7 @@
     ;
 }
 abstract class _Hm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::_Hm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -114,7 +114,7 @@
     ;
 }
 abstract class _Im1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::_Im1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -124,7 +124,7 @@
     ;
 }
 abstract class _Jm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<core::Function, self::_Jm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -134,7 +134,7 @@
     ;
 }
 abstract class _Km1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::Function) → dynamic, self::_Km1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -144,7 +144,7 @@
     ;
 }
 abstract class _Lm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → (() → core::Function) → dynamic, self::_Lm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -154,57 +154,57 @@
     ;
 }
 class Mm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::Mm1::Z> {
-  synthetic constructor •() → self::Mm1<self::Mm1::Z>
+  const synthetic constructor •() → self::Mm1<self::Mm1::Z>
     : super core::Object::•()
     ;
 }
 class Nm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::Nm1::Z> {
-  synthetic constructor •() → self::Nm1<self::Nm1::Z>
+  const synthetic constructor •() → self::Nm1<self::Nm1::Z>
     : super core::Object::•()
     ;
 }
 class Om1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → core::int, self::Om1::Z> {
-  synthetic constructor •() → self::Om1<self::Om1::Z>
+  const synthetic constructor •() → self::Om1<self::Om1::Z>
     : super core::Object::•()
     ;
 }
 class Pm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::Pm1::Z> {
-  synthetic constructor •() → self::Pm1<self::Pm1::Z>
+  const synthetic constructor •() → self::Pm1<self::Pm1::Z>
     : super core::Object::•()
     ;
 }
 class Qm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::Qm1::Z> {
-  synthetic constructor •() → self::Qm1<self::Qm1::Z>
+  const synthetic constructor •() → self::Qm1<self::Qm1::Z>
     : super core::Object::•()
     ;
 }
 class Rm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<({x: core::int}) → dynamic, self::Rm1::Z> {
-  synthetic constructor •() → self::Rm1<self::Rm1::Z>
+  const synthetic constructor •() → self::Rm1<self::Rm1::Z>
     : super core::Object::•()
     ;
 }
 class Sm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::Sm1::Z> {
-  synthetic constructor •() → self::Sm1<self::Sm1::Z>
+  const synthetic constructor •() → self::Sm1<self::Sm1::Z>
     : super core::Object::•()
     ;
 }
 class Tm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::Tm1::Z> {
-  synthetic constructor •() → self::Tm1<self::Tm1::Z>
+  const synthetic constructor •() → self::Tm1<self::Tm1::Z>
     : super core::Object::•()
     ;
 }
 class Um1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<core::Function, self::Um1::Z> {
-  synthetic constructor •() → self::Um1<self::Um1::Z>
+  const synthetic constructor •() → self::Um1<self::Um1::Z>
     : super core::Object::•()
     ;
 }
 class Vm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::Function) → dynamic, self::Vm1::Z> {
-  synthetic constructor •() → self::Vm1<self::Vm1::Z>
+  const synthetic constructor •() → self::Vm1<self::Vm1::Z>
     : super core::Object::•()
     ;
 }
 class Wm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → (() → core::Function) → dynamic, self::Wm1::Z> {
-  synthetic constructor •() → self::Wm1<self::Wm1::Z>
+  const synthetic constructor •() → self::Wm1<self::Wm1::Z>
     : super core::Object::•()
     ;
 }
@@ -214,7 +214,7 @@
     ;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::_Bm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -224,7 +224,7 @@
     ;
 }
 abstract class _Cm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::_Cm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -234,7 +234,7 @@
     ;
 }
 abstract class _Dm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → core::int, self::_Dm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -244,7 +244,7 @@
     ;
 }
 abstract class _Em2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::_Em2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -254,7 +254,7 @@
     ;
 }
 abstract class _Fm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::_Fm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -264,7 +264,7 @@
     ;
 }
 abstract class _Gm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<({x: core::int}) → dynamic, self::_Gm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -274,7 +274,7 @@
     ;
 }
 abstract class _Hm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::_Hm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -284,7 +284,7 @@
     ;
 }
 abstract class _Im2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::_Im2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -294,7 +294,7 @@
     ;
 }
 abstract class _Jm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<core::Function, self::_Jm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -304,7 +304,7 @@
     ;
 }
 abstract class _Km2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::Function) → dynamic, self::_Km2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -314,7 +314,7 @@
     ;
 }
 abstract class _Lm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → (() → core::Function) → dynamic, self::_Lm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -324,57 +324,57 @@
     ;
 }
 class Mm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::Mm2::Z> {
-  synthetic constructor •() → self::Mm2<self::Mm2::Z>
+  const synthetic constructor •() → self::Mm2<self::Mm2::Z>
     : super core::Object::•()
     ;
 }
 class Nm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::Nm2::Z> {
-  synthetic constructor •() → self::Nm2<self::Nm2::Z>
+  const synthetic constructor •() → self::Nm2<self::Nm2::Z>
     : super core::Object::•()
     ;
 }
 class Om2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → core::int, self::Om2::Z> {
-  synthetic constructor •() → self::Om2<self::Om2::Z>
+  const synthetic constructor •() → self::Om2<self::Om2::Z>
     : super core::Object::•()
     ;
 }
 class Pm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::Pm2::Z> {
-  synthetic constructor •() → self::Pm2<self::Pm2::Z>
+  const synthetic constructor •() → self::Pm2<self::Pm2::Z>
     : super core::Object::•()
     ;
 }
 class Qm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::Qm2::Z> {
-  synthetic constructor •() → self::Qm2<self::Qm2::Z>
+  const synthetic constructor •() → self::Qm2<self::Qm2::Z>
     : super core::Object::•()
     ;
 }
 class Rm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<({x: core::int}) → dynamic, self::Rm2::Z> {
-  synthetic constructor •() → self::Rm2<self::Rm2::Z>
+  const synthetic constructor •() → self::Rm2<self::Rm2::Z>
     : super core::Object::•()
     ;
 }
 class Sm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::Sm2::Z> {
-  synthetic constructor •() → self::Sm2<self::Sm2::Z>
+  const synthetic constructor •() → self::Sm2<self::Sm2::Z>
     : super core::Object::•()
     ;
 }
 class Tm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::Tm2::Z> {
-  synthetic constructor •() → self::Tm2<self::Tm2::Z>
+  const synthetic constructor •() → self::Tm2<self::Tm2::Z>
     : super core::Object::•()
     ;
 }
 class Um2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<core::Function, self::Um2::Z> {
-  synthetic constructor •() → self::Um2<self::Um2::Z>
+  const synthetic constructor •() → self::Um2<self::Um2::Z>
     : super core::Object::•()
     ;
 }
 class Vm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::Function) → dynamic, self::Vm2::Z> {
-  synthetic constructor •() → self::Vm2<self::Vm2::Z>
+  const synthetic constructor •() → self::Vm2<self::Vm2::Z>
     : super core::Object::•()
     ;
 }
 class Wm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → (() → core::Function) → dynamic, self::Wm2::Z> {
-  synthetic constructor •() → self::Wm2<self::Wm2::Z>
+  const synthetic constructor •() → self::Wm2<self::Wm2::Z>
     : super core::Object::•()
     ;
 }
@@ -384,7 +384,7 @@
     ;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<(core::int) → dynamic, self::_Bm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -394,7 +394,7 @@
     ;
 }
 abstract class _Cm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<(core::int) → dynamic, self::_Cm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -404,7 +404,7 @@
     ;
 }
 abstract class _Dm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → core::int, self::_Dm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -414,7 +414,7 @@
     ;
 }
 abstract class _Em3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → dynamic, self::_Em3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -424,7 +424,7 @@
     ;
 }
 abstract class _Fm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → dynamic, self::_Fm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -434,7 +434,7 @@
     ;
 }
 abstract class _Gm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<({x: core::int}) → dynamic, self::_Gm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -444,7 +444,7 @@
     ;
 }
 abstract class _Hm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<([core::int]) → dynamic, self::_Hm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -454,7 +454,7 @@
     ;
 }
 abstract class _Im3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<([core::int]) → dynamic, self::_Im3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -464,7 +464,7 @@
     ;
 }
 abstract class _Jm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<(core::Function) → dynamic, self::_Jm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -474,7 +474,7 @@
     ;
 }
 abstract class _Km3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → (() → core::Function) → dynamic, self::_Km3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/clone_function_type.dart.outline.expect b/pkg/front_end/testcases/clone_function_type.dart.outline.expect
index 7b8504c..6d46fb3 100644
--- a/pkg/front_end/testcases/clone_function_type.dart.outline.expect
+++ b/pkg/front_end/testcases/clone_function_type.dart.outline.expect
@@ -43,7 +43,7 @@
     ;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Bm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -52,7 +52,7 @@
     ;
 }
 abstract class _Cm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Cm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -61,7 +61,7 @@
     ;
 }
 abstract class _Dm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → core::int, self::_Dm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -70,7 +70,7 @@
     ;
 }
 abstract class _Em1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::_Em1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -79,7 +79,7 @@
     ;
 }
 abstract class _Fm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::_Fm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -88,7 +88,7 @@
     ;
 }
 abstract class _Gm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::_Gm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -97,7 +97,7 @@
     ;
 }
 abstract class _Hm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Hm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -106,7 +106,7 @@
     ;
 }
 abstract class _Im1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Im1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -115,7 +115,7 @@
     ;
 }
 abstract class _Jm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<core::Function, self::_Jm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -124,7 +124,7 @@
     ;
 }
 abstract class _Km1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::_Km1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -133,7 +133,7 @@
     ;
 }
 abstract class _Lm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::_Lm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -142,57 +142,57 @@
     ;
 }
 class Mm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Mm1::Z> {
-  synthetic constructor •() → self::Mm1<self::Mm1::Z>
+  const synthetic constructor •() → self::Mm1<self::Mm1::Z>
     : super core::Object::•()
     ;
 }
 class Nm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Nm1::Z> {
-  synthetic constructor •() → self::Nm1<self::Nm1::Z>
+  const synthetic constructor •() → self::Nm1<self::Nm1::Z>
     : super core::Object::•()
     ;
 }
 class Om1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → core::int, self::Om1::Z> {
-  synthetic constructor •() → self::Om1<self::Om1::Z>
+  const synthetic constructor •() → self::Om1<self::Om1::Z>
     : super core::Object::•()
     ;
 }
 class Pm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::Pm1::Z> {
-  synthetic constructor •() → self::Pm1<self::Pm1::Z>
+  const synthetic constructor •() → self::Pm1<self::Pm1::Z>
     : super core::Object::•()
     ;
 }
 class Qm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::Qm1::Z> {
-  synthetic constructor •() → self::Qm1<self::Qm1::Z>
+  const synthetic constructor •() → self::Qm1<self::Qm1::Z>
     : super core::Object::•()
     ;
 }
 class Rm1<Z extends core::Object = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::Rm1::Z> {
-  synthetic constructor •() → self::Rm1<self::Rm1::Z>
+  const synthetic constructor •() → self::Rm1<self::Rm1::Z>
     : super core::Object::•()
     ;
 }
 class Sm1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Sm1::Z> {
-  synthetic constructor •() → self::Sm1<self::Sm1::Z>
+  const synthetic constructor •() → self::Sm1<self::Sm1::Z>
     : super core::Object::•()
     ;
 }
 class Tm1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Tm1::Z> {
-  synthetic constructor •() → self::Tm1<self::Tm1::Z>
+  const synthetic constructor •() → self::Tm1<self::Tm1::Z>
     : super core::Object::•()
     ;
 }
 class Um1<Z extends core::Object = dynamic> = core::Object with self::Am1<core::Function, self::Um1::Z> {
-  synthetic constructor •() → self::Um1<self::Um1::Z>
+  const synthetic constructor •() → self::Um1<self::Um1::Z>
     : super core::Object::•()
     ;
 }
 class Vm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::Vm1::Z> {
-  synthetic constructor •() → self::Vm1<self::Vm1::Z>
+  const synthetic constructor •() → self::Vm1<self::Vm1::Z>
     : super core::Object::•()
     ;
 }
 class Wm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::Wm1::Z> {
-  synthetic constructor •() → self::Wm1<self::Wm1::Z>
+  const synthetic constructor •() → self::Wm1<self::Wm1::Z>
     : super core::Object::•()
     ;
 }
@@ -201,7 +201,7 @@
     ;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Bm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -210,7 +210,7 @@
     ;
 }
 abstract class _Cm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Cm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -219,7 +219,7 @@
     ;
 }
 abstract class _Dm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → core::int, self::_Dm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -228,7 +228,7 @@
     ;
 }
 abstract class _Em2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::_Em2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -237,7 +237,7 @@
     ;
 }
 abstract class _Fm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::_Fm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -246,7 +246,7 @@
     ;
 }
 abstract class _Gm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::_Gm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -255,7 +255,7 @@
     ;
 }
 abstract class _Hm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Hm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -264,7 +264,7 @@
     ;
 }
 abstract class _Im2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Im2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -273,7 +273,7 @@
     ;
 }
 abstract class _Jm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<core::Function, self::_Jm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -282,7 +282,7 @@
     ;
 }
 abstract class _Km2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::_Km2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -291,7 +291,7 @@
     ;
 }
 abstract class _Lm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::_Lm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -300,57 +300,57 @@
     ;
 }
 class Mm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Mm2::Z> {
-  synthetic constructor •() → self::Mm2<self::Mm2::Z>
+  const synthetic constructor •() → self::Mm2<self::Mm2::Z>
     : super core::Object::•()
     ;
 }
 class Nm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Nm2::Z> {
-  synthetic constructor •() → self::Nm2<self::Nm2::Z>
+  const synthetic constructor •() → self::Nm2<self::Nm2::Z>
     : super core::Object::•()
     ;
 }
 class Om2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → core::int, self::Om2::Z> {
-  synthetic constructor •() → self::Om2<self::Om2::Z>
+  const synthetic constructor •() → self::Om2<self::Om2::Z>
     : super core::Object::•()
     ;
 }
 class Pm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::Pm2::Z> {
-  synthetic constructor •() → self::Pm2<self::Pm2::Z>
+  const synthetic constructor •() → self::Pm2<self::Pm2::Z>
     : super core::Object::•()
     ;
 }
 class Qm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::Qm2::Z> {
-  synthetic constructor •() → self::Qm2<self::Qm2::Z>
+  const synthetic constructor •() → self::Qm2<self::Qm2::Z>
     : super core::Object::•()
     ;
 }
 class Rm2<Z extends core::Object = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::Rm2::Z> {
-  synthetic constructor •() → self::Rm2<self::Rm2::Z>
+  const synthetic constructor •() → self::Rm2<self::Rm2::Z>
     : super core::Object::•()
     ;
 }
 class Sm2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Sm2::Z> {
-  synthetic constructor •() → self::Sm2<self::Sm2::Z>
+  const synthetic constructor •() → self::Sm2<self::Sm2::Z>
     : super core::Object::•()
     ;
 }
 class Tm2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Tm2::Z> {
-  synthetic constructor •() → self::Tm2<self::Tm2::Z>
+  const synthetic constructor •() → self::Tm2<self::Tm2::Z>
     : super core::Object::•()
     ;
 }
 class Um2<Z extends core::Object = dynamic> = core::Object with self::Am2<core::Function, self::Um2::Z> {
-  synthetic constructor •() → self::Um2<self::Um2::Z>
+  const synthetic constructor •() → self::Um2<self::Um2::Z>
     : super core::Object::•()
     ;
 }
 class Vm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::Vm2::Z> {
-  synthetic constructor •() → self::Vm2<self::Vm2::Z>
+  const synthetic constructor •() → self::Vm2<self::Vm2::Z>
     : super core::Object::•()
     ;
 }
 class Wm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::Wm2::Z> {
-  synthetic constructor •() → self::Wm2<self::Wm2::Z>
+  const synthetic constructor •() → self::Wm2<self::Wm2::Z>
     : super core::Object::•()
     ;
 }
@@ -359,7 +359,7 @@
     ;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Bm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -368,7 +368,7 @@
     ;
 }
 abstract class _Cm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Cm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -377,7 +377,7 @@
     ;
 }
 abstract class _Dm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → core::int, self::_Dm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -386,7 +386,7 @@
     ;
 }
 abstract class _Em3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → dynamic, self::_Em3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -395,7 +395,7 @@
     ;
 }
 abstract class _Fm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → dynamic, self::_Fm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -404,7 +404,7 @@
     ;
 }
 abstract class _Gm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<({x: core::int}) → dynamic, self::_Gm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -413,7 +413,7 @@
     ;
 }
 abstract class _Hm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Hm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -422,7 +422,7 @@
     ;
 }
 abstract class _Im3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Im3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -431,7 +431,7 @@
     ;
 }
 abstract class _Jm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::Function) → dynamic, self::_Jm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -440,7 +440,7 @@
     ;
 }
 abstract class _Km3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → (() → core::Function) → dynamic, self::_Km3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/clone_function_type.dart.strong.expect b/pkg/front_end/testcases/clone_function_type.dart.strong.expect
index 5b19c6c..993f5a8 100644
--- a/pkg/front_end/testcases/clone_function_type.dart.strong.expect
+++ b/pkg/front_end/testcases/clone_function_type.dart.strong.expect
@@ -182,7 +182,7 @@
     ;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Bm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -192,7 +192,7 @@
     ;
 }
 abstract class _Cm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Cm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -202,7 +202,7 @@
     ;
 }
 abstract class _Dm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → core::int, self::_Dm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -212,7 +212,7 @@
     ;
 }
 abstract class _Em1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::_Em1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -222,7 +222,7 @@
     ;
 }
 abstract class _Fm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::_Fm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -232,7 +232,7 @@
     ;
 }
 abstract class _Gm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::_Gm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -242,7 +242,7 @@
     ;
 }
 abstract class _Hm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Hm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -252,7 +252,7 @@
     ;
 }
 abstract class _Im1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Im1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -262,7 +262,7 @@
     ;
 }
 abstract class _Jm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<core::Function, self::_Jm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -272,7 +272,7 @@
     ;
 }
 abstract class _Km1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::_Km1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -282,7 +282,7 @@
     ;
 }
 abstract class _Lm1&Object&Am1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::_Lm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -292,57 +292,57 @@
     ;
 }
 class Mm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Mm1::Z> {
-  synthetic constructor •() → self::Mm1<self::Mm1::Z>
+  const synthetic constructor •() → self::Mm1<self::Mm1::Z>
     : super core::Object::•()
     ;
 }
 class Nm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Nm1::Z> {
-  synthetic constructor •() → self::Nm1<self::Nm1::Z>
+  const synthetic constructor •() → self::Nm1<self::Nm1::Z>
     : super core::Object::•()
     ;
 }
 class Om1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → core::int, self::Om1::Z> {
-  synthetic constructor •() → self::Om1<self::Om1::Z>
+  const synthetic constructor •() → self::Om1<self::Om1::Z>
     : super core::Object::•()
     ;
 }
 class Pm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::Pm1::Z> {
-  synthetic constructor •() → self::Pm1<self::Pm1::Z>
+  const synthetic constructor •() → self::Pm1<self::Pm1::Z>
     : super core::Object::•()
     ;
 }
 class Qm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → dynamic, self::Qm1::Z> {
-  synthetic constructor •() → self::Qm1<self::Qm1::Z>
+  const synthetic constructor •() → self::Qm1<self::Qm1::Z>
     : super core::Object::•()
     ;
 }
 class Rm1<Z extends core::Object = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::Rm1::Z> {
-  synthetic constructor •() → self::Rm1<self::Rm1::Z>
+  const synthetic constructor •() → self::Rm1<self::Rm1::Z>
     : super core::Object::•()
     ;
 }
 class Sm1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Sm1::Z> {
-  synthetic constructor •() → self::Sm1<self::Sm1::Z>
+  const synthetic constructor •() → self::Sm1<self::Sm1::Z>
     : super core::Object::•()
     ;
 }
 class Tm1<Z extends core::Object = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Tm1::Z> {
-  synthetic constructor •() → self::Tm1<self::Tm1::Z>
+  const synthetic constructor •() → self::Tm1<self::Tm1::Z>
     : super core::Object::•()
     ;
 }
 class Um1<Z extends core::Object = dynamic> = core::Object with self::Am1<core::Function, self::Um1::Z> {
-  synthetic constructor •() → self::Um1<self::Um1::Z>
+  const synthetic constructor •() → self::Um1<self::Um1::Z>
     : super core::Object::•()
     ;
 }
 class Vm1<Z extends core::Object = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::Vm1::Z> {
-  synthetic constructor •() → self::Vm1<self::Vm1::Z>
+  const synthetic constructor •() → self::Vm1<self::Vm1::Z>
     : super core::Object::•()
     ;
 }
 class Wm1<Z extends core::Object = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::Wm1::Z> {
-  synthetic constructor •() → self::Wm1<self::Wm1::Z>
+  const synthetic constructor •() → self::Wm1<self::Wm1::Z>
     : super core::Object::•()
     ;
 }
@@ -352,7 +352,7 @@
     ;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Bm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -362,7 +362,7 @@
     ;
 }
 abstract class _Cm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Cm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -372,7 +372,7 @@
     ;
 }
 abstract class _Dm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → core::int, self::_Dm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -382,7 +382,7 @@
     ;
 }
 abstract class _Em2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::_Em2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -392,7 +392,7 @@
     ;
 }
 abstract class _Fm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::_Fm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -402,7 +402,7 @@
     ;
 }
 abstract class _Gm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::_Gm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -412,7 +412,7 @@
     ;
 }
 abstract class _Hm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Hm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -422,7 +422,7 @@
     ;
 }
 abstract class _Im2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Im2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -432,7 +432,7 @@
     ;
 }
 abstract class _Jm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<core::Function, self::_Jm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -442,7 +442,7 @@
     ;
 }
 abstract class _Km2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::_Km2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -452,7 +452,7 @@
     ;
 }
 abstract class _Lm2&Object&Am2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::_Lm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -462,57 +462,57 @@
     ;
 }
 class Mm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Mm2::Z> {
-  synthetic constructor •() → self::Mm2<self::Mm2::Z>
+  const synthetic constructor •() → self::Mm2<self::Mm2::Z>
     : super core::Object::•()
     ;
 }
 class Nm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Nm2::Z> {
-  synthetic constructor •() → self::Nm2<self::Nm2::Z>
+  const synthetic constructor •() → self::Nm2<self::Nm2::Z>
     : super core::Object::•()
     ;
 }
 class Om2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → core::int, self::Om2::Z> {
-  synthetic constructor •() → self::Om2<self::Om2::Z>
+  const synthetic constructor •() → self::Om2<self::Om2::Z>
     : super core::Object::•()
     ;
 }
 class Pm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::Pm2::Z> {
-  synthetic constructor •() → self::Pm2<self::Pm2::Z>
+  const synthetic constructor •() → self::Pm2<self::Pm2::Z>
     : super core::Object::•()
     ;
 }
 class Qm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → dynamic, self::Qm2::Z> {
-  synthetic constructor •() → self::Qm2<self::Qm2::Z>
+  const synthetic constructor •() → self::Qm2<self::Qm2::Z>
     : super core::Object::•()
     ;
 }
 class Rm2<Z extends core::Object = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::Rm2::Z> {
-  synthetic constructor •() → self::Rm2<self::Rm2::Z>
+  const synthetic constructor •() → self::Rm2<self::Rm2::Z>
     : super core::Object::•()
     ;
 }
 class Sm2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Sm2::Z> {
-  synthetic constructor •() → self::Sm2<self::Sm2::Z>
+  const synthetic constructor •() → self::Sm2<self::Sm2::Z>
     : super core::Object::•()
     ;
 }
 class Tm2<Z extends core::Object = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Tm2::Z> {
-  synthetic constructor •() → self::Tm2<self::Tm2::Z>
+  const synthetic constructor •() → self::Tm2<self::Tm2::Z>
     : super core::Object::•()
     ;
 }
 class Um2<Z extends core::Object = dynamic> = core::Object with self::Am2<core::Function, self::Um2::Z> {
-  synthetic constructor •() → self::Um2<self::Um2::Z>
+  const synthetic constructor •() → self::Um2<self::Um2::Z>
     : super core::Object::•()
     ;
 }
 class Vm2<Z extends core::Object = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::Vm2::Z> {
-  synthetic constructor •() → self::Vm2<self::Vm2::Z>
+  const synthetic constructor •() → self::Vm2<self::Vm2::Z>
     : super core::Object::•()
     ;
 }
 class Wm2<Z extends core::Object = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::Wm2::Z> {
-  synthetic constructor •() → self::Wm2<self::Wm2::Z>
+  const synthetic constructor •() → self::Wm2<self::Wm2::Z>
     : super core::Object::•()
     ;
 }
@@ -522,7 +522,7 @@
     ;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Bm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -532,7 +532,7 @@
     ;
 }
 abstract class _Cm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Cm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -542,7 +542,7 @@
     ;
 }
 abstract class _Dm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → core::int, self::_Dm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -552,7 +552,7 @@
     ;
 }
 abstract class _Em3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → dynamic, self::_Em3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -562,7 +562,7 @@
     ;
 }
 abstract class _Fm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → dynamic, self::_Fm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -572,7 +572,7 @@
     ;
 }
 abstract class _Gm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<({x: core::int}) → dynamic, self::_Gm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -582,7 +582,7 @@
     ;
 }
 abstract class _Hm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Hm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -592,7 +592,7 @@
     ;
 }
 abstract class _Im3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Im3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -602,7 +602,7 @@
     ;
 }
 abstract class _Jm3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<(core::Function) → dynamic, self::_Jm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -612,7 +612,7 @@
     ;
 }
 abstract class _Km3&Object&Am3<Z extends core::Object = dynamic> = core::Object with self::Am3<() → (() → core::Function) → dynamic, self::_Km3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/clone_function_type.dart.strong.transformed.expect b/pkg/front_end/testcases/clone_function_type.dart.strong.transformed.expect
index 78889cf..6c6a057 100644
--- a/pkg/front_end/testcases/clone_function_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/clone_function_type.dart.strong.transformed.expect
@@ -88,7 +88,7 @@
     ;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::_Bm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -98,7 +98,7 @@
     ;
 }
 abstract class _Cm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::_Cm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -108,7 +108,7 @@
     ;
 }
 abstract class _Dm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → core::int, self::_Dm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -118,7 +118,7 @@
     ;
 }
 abstract class _Em1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::_Em1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -128,7 +128,7 @@
     ;
 }
 abstract class _Fm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::_Fm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -138,7 +138,7 @@
     ;
 }
 abstract class _Gm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<({x: core::int}) → dynamic, self::_Gm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -148,7 +148,7 @@
     ;
 }
 abstract class _Hm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::_Hm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -158,7 +158,7 @@
     ;
 }
 abstract class _Im1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::_Im1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -168,7 +168,7 @@
     ;
 }
 abstract class _Jm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<core::Function, self::_Jm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -178,7 +178,7 @@
     ;
 }
 abstract class _Km1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::Function) → dynamic, self::_Km1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -188,7 +188,7 @@
     ;
 }
 abstract class _Lm1&Object&Am1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → (() → core::Function) → dynamic, self::_Lm1&Object&Am1::Z> {
-  synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
+  const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z>
     : super core::Object::•()
     ;
 }
@@ -198,57 +198,57 @@
     ;
 }
 class Mm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::Mm1::Z> {
-  synthetic constructor •() → self::Mm1<self::Mm1::Z>
+  const synthetic constructor •() → self::Mm1<self::Mm1::Z>
     : super core::Object::•()
     ;
 }
 class Nm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::int) → dynamic, self::Nm1::Z> {
-  synthetic constructor •() → self::Nm1<self::Nm1::Z>
+  const synthetic constructor •() → self::Nm1<self::Nm1::Z>
     : super core::Object::•()
     ;
 }
 class Om1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → core::int, self::Om1::Z> {
-  synthetic constructor •() → self::Om1<self::Om1::Z>
+  const synthetic constructor •() → self::Om1<self::Om1::Z>
     : super core::Object::•()
     ;
 }
 class Pm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::Pm1::Z> {
-  synthetic constructor •() → self::Pm1<self::Pm1::Z>
+  const synthetic constructor •() → self::Pm1<self::Pm1::Z>
     : super core::Object::•()
     ;
 }
 class Qm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → dynamic, self::Qm1::Z> {
-  synthetic constructor •() → self::Qm1<self::Qm1::Z>
+  const synthetic constructor •() → self::Qm1<self::Qm1::Z>
     : super core::Object::•()
     ;
 }
 class Rm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<({x: core::int}) → dynamic, self::Rm1::Z> {
-  synthetic constructor •() → self::Rm1<self::Rm1::Z>
+  const synthetic constructor •() → self::Rm1<self::Rm1::Z>
     : super core::Object::•()
     ;
 }
 class Sm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::Sm1::Z> {
-  synthetic constructor •() → self::Sm1<self::Sm1::Z>
+  const synthetic constructor •() → self::Sm1<self::Sm1::Z>
     : super core::Object::•()
     ;
 }
 class Tm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<([core::int]) → dynamic, self::Tm1::Z> {
-  synthetic constructor •() → self::Tm1<self::Tm1::Z>
+  const synthetic constructor •() → self::Tm1<self::Tm1::Z>
     : super core::Object::•()
     ;
 }
 class Um1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<core::Function, self::Um1::Z> {
-  synthetic constructor •() → self::Um1<self::Um1::Z>
+  const synthetic constructor •() → self::Um1<self::Um1::Z>
     : super core::Object::•()
     ;
 }
 class Vm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<(core::Function) → dynamic, self::Vm1::Z> {
-  synthetic constructor •() → self::Vm1<self::Vm1::Z>
+  const synthetic constructor •() → self::Vm1<self::Vm1::Z>
     : super core::Object::•()
     ;
 }
 class Wm1<Z extends core::Object = dynamic> extends core::Object implements self::Am1<() → (() → core::Function) → dynamic, self::Wm1::Z> {
-  synthetic constructor •() → self::Wm1<self::Wm1::Z>
+  const synthetic constructor •() → self::Wm1<self::Wm1::Z>
     : super core::Object::•()
     ;
 }
@@ -258,7 +258,7 @@
     ;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::_Bm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -268,7 +268,7 @@
     ;
 }
 abstract class _Cm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::_Cm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -278,7 +278,7 @@
     ;
 }
 abstract class _Dm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → core::int, self::_Dm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -288,7 +288,7 @@
     ;
 }
 abstract class _Em2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::_Em2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -298,7 +298,7 @@
     ;
 }
 abstract class _Fm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::_Fm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -308,7 +308,7 @@
     ;
 }
 abstract class _Gm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<({x: core::int}) → dynamic, self::_Gm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -318,7 +318,7 @@
     ;
 }
 abstract class _Hm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::_Hm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -328,7 +328,7 @@
     ;
 }
 abstract class _Im2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::_Im2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -338,7 +338,7 @@
     ;
 }
 abstract class _Jm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<core::Function, self::_Jm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -348,7 +348,7 @@
     ;
 }
 abstract class _Km2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::Function) → dynamic, self::_Km2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -358,7 +358,7 @@
     ;
 }
 abstract class _Lm2&Object&Am2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → (() → core::Function) → dynamic, self::_Lm2&Object&Am2::Z> {
-  synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
+  const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z>
     : super core::Object::•()
     ;
 }
@@ -368,57 +368,57 @@
     ;
 }
 class Mm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::Mm2::Z> {
-  synthetic constructor •() → self::Mm2<self::Mm2::Z>
+  const synthetic constructor •() → self::Mm2<self::Mm2::Z>
     : super core::Object::•()
     ;
 }
 class Nm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::int) → dynamic, self::Nm2::Z> {
-  synthetic constructor •() → self::Nm2<self::Nm2::Z>
+  const synthetic constructor •() → self::Nm2<self::Nm2::Z>
     : super core::Object::•()
     ;
 }
 class Om2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → core::int, self::Om2::Z> {
-  synthetic constructor •() → self::Om2<self::Om2::Z>
+  const synthetic constructor •() → self::Om2<self::Om2::Z>
     : super core::Object::•()
     ;
 }
 class Pm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::Pm2::Z> {
-  synthetic constructor •() → self::Pm2<self::Pm2::Z>
+  const synthetic constructor •() → self::Pm2<self::Pm2::Z>
     : super core::Object::•()
     ;
 }
 class Qm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → dynamic, self::Qm2::Z> {
-  synthetic constructor •() → self::Qm2<self::Qm2::Z>
+  const synthetic constructor •() → self::Qm2<self::Qm2::Z>
     : super core::Object::•()
     ;
 }
 class Rm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<({x: core::int}) → dynamic, self::Rm2::Z> {
-  synthetic constructor •() → self::Rm2<self::Rm2::Z>
+  const synthetic constructor •() → self::Rm2<self::Rm2::Z>
     : super core::Object::•()
     ;
 }
 class Sm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::Sm2::Z> {
-  synthetic constructor •() → self::Sm2<self::Sm2::Z>
+  const synthetic constructor •() → self::Sm2<self::Sm2::Z>
     : super core::Object::•()
     ;
 }
 class Tm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<([core::int]) → dynamic, self::Tm2::Z> {
-  synthetic constructor •() → self::Tm2<self::Tm2::Z>
+  const synthetic constructor •() → self::Tm2<self::Tm2::Z>
     : super core::Object::•()
     ;
 }
 class Um2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<core::Function, self::Um2::Z> {
-  synthetic constructor •() → self::Um2<self::Um2::Z>
+  const synthetic constructor •() → self::Um2<self::Um2::Z>
     : super core::Object::•()
     ;
 }
 class Vm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<(core::Function) → dynamic, self::Vm2::Z> {
-  synthetic constructor •() → self::Vm2<self::Vm2::Z>
+  const synthetic constructor •() → self::Vm2<self::Vm2::Z>
     : super core::Object::•()
     ;
 }
 class Wm2<Z extends core::Object = dynamic> extends core::Object implements self::Am2<() → (() → core::Function) → dynamic, self::Wm2::Z> {
-  synthetic constructor •() → self::Wm2<self::Wm2::Z>
+  const synthetic constructor •() → self::Wm2<self::Wm2::Z>
     : super core::Object::•()
     ;
 }
@@ -428,7 +428,7 @@
     ;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<(core::int) → dynamic, self::_Bm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -438,7 +438,7 @@
     ;
 }
 abstract class _Cm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<(core::int) → dynamic, self::_Cm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -448,7 +448,7 @@
     ;
 }
 abstract class _Dm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → core::int, self::_Dm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -458,7 +458,7 @@
     ;
 }
 abstract class _Em3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → dynamic, self::_Em3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -468,7 +468,7 @@
     ;
 }
 abstract class _Fm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → dynamic, self::_Fm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -478,7 +478,7 @@
     ;
 }
 abstract class _Gm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<({x: core::int}) → dynamic, self::_Gm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -488,7 +488,7 @@
     ;
 }
 abstract class _Hm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<([core::int]) → dynamic, self::_Hm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -498,7 +498,7 @@
     ;
 }
 abstract class _Im3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<([core::int]) → dynamic, self::_Im3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -508,7 +508,7 @@
     ;
 }
 abstract class _Jm3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<(core::Function) → dynamic, self::_Jm3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
@@ -518,7 +518,7 @@
     ;
 }
 abstract class _Km3&Object&Am3<Z extends core::Object = dynamic> extends core::Object implements self::Am3<() → (() → core::Function) → dynamic, self::_Km3&Object&Am3::Z> {
-  synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
+  const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.expect
index bd70fa0..72b90ee 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.expect
@@ -40,7 +40,7 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.transformed.expect
index e3ffc47..31c9fee 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.legacy.transformed.expect
@@ -40,7 +40,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   get x() → core::int
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
index 56851ab..b627b29 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
@@ -34,7 +34,7 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
index 5c9403f..9f9de47 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
@@ -40,7 +40,7 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
index 10315d8..9f7817b 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
@@ -40,7 +40,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   get x() → core::int
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.expect
index 97bdc20..8baaa28 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.expect
@@ -39,7 +39,7 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.transformed.expect
index a8ed431..1a36773 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.legacy.transformed.expect
@@ -39,7 +39,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   set x(core::int value) → void {}
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
index f5711a5..02e0c2b 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
@@ -34,7 +34,7 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
index a2a01da..3c16ce0 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
@@ -39,7 +39,7 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
index 8cf587d..e3da27e 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
@@ -39,7 +39,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → self::_G&Object&B
+  const synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   set x(core::int value) → void {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.expect
index c581250..397be08 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.expect
@@ -42,12 +42,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.transformed.expect
index f81e503..2c73250 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.legacy.transformed.expect
@@ -30,12 +30,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<core::int> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
index bba1d1d..51eab20 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
@@ -27,12 +27,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
index c581250..397be08 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
@@ -42,12 +42,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.expect
index 75fb900..31db2ea 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.expect
@@ -32,12 +32,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.transformed.expect
index 06fa1b8..6042159 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.legacy.transformed.expect
@@ -25,12 +25,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
index a697e67..b9461de 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
@@ -22,12 +22,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
index 75fb900..31db2ea 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
@@ -32,12 +32,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.expect
index d2e6040..7583b60 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.expect
@@ -42,12 +42,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.transformed.expect
index a22753f..30ac8b5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.legacy.transformed.expect
@@ -30,12 +30,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
index d48c58a..365b0b9 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
@@ -27,12 +27,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
index d2e6040..7583b60 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
@@ -42,12 +42,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.expect
index 153ce4a..2da56f2 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.expect
@@ -46,12 +46,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.transformed.expect
index 826e6a3..04b8a12 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.legacy.transformed.expect
@@ -32,12 +32,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
index 793af88..738f378 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
@@ -29,12 +29,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
index 153ce4a..2da56f2 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
@@ -46,12 +46,12 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0
+  const synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
-  synthetic constructor •() → self::_A&Object&M0&M1
+  const synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/mixin.dart.legacy.expect b/pkg/front_end/testcases/mixin.dart.legacy.expect
index c47eaf2..0213797 100644
--- a/pkg/front_end/testcases/mixin.dart.legacy.expect
+++ b/pkg/front_end/testcases/mixin.dart.legacy.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 {
-  synthetic constructor •() → self::_B&Object&M1
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 {
-  synthetic constructor •() → self::_B&Object&M1&M2
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
 }
@@ -32,12 +32,12 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 = core::Object with self::M1 {
-  synthetic constructor •() → self::_C&Object&M1
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 {
-  synthetic constructor •() → self::_C&Object&M1&M2
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
 }
@@ -54,7 +54,7 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> = core::Object with self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/mixin.dart.legacy.transformed.expect b/pkg/front_end/testcases/mixin.dart.legacy.transformed.expect
index 7af4162..874cadf 100644
--- a/pkg/front_end/testcases/mixin.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/mixin.dart.legacy.transformed.expect
@@ -3,14 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → self::_B&Object&M1
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _B&Object&M1&M2 extends self::_B&Object&M1 implements self::M2 {
-  synthetic constructor •() → self::_B&Object&M1&M2
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   method m() → dynamic
@@ -36,14 +36,14 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → self::_C&Object&M1
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 {
-  synthetic constructor •() → self::_C&Object&M1&M2
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   method m() → dynamic
@@ -62,7 +62,7 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
   method m() → dynamic
diff --git a/pkg/front_end/testcases/mixin.dart.outline.expect b/pkg/front_end/testcases/mixin.dart.outline.expect
index 989554e..2ab6aaa 100644
--- a/pkg/front_end/testcases/mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/mixin.dart.outline.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 {
-  synthetic constructor •() → self::_B&Object&M1
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 {
-  synthetic constructor •() → self::_B&Object&M1&M2
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
 }
@@ -29,12 +29,12 @@
     ;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 {
-  synthetic constructor •() → self::_C&Object&M1
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 {
-  synthetic constructor •() → self::_C&Object&M1&M2
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
 }
@@ -49,7 +49,7 @@
     ;
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> = core::Object with self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/mixin.dart.strong.expect b/pkg/front_end/testcases/mixin.dart.strong.expect
index f8971a4..3325ecd 100644
--- a/pkg/front_end/testcases/mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin.dart.strong.expect
@@ -3,12 +3,12 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 {
-  synthetic constructor •() → self::_B&Object&M1
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 {
-  synthetic constructor •() → self::_B&Object&M1&M2
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
 }
@@ -32,12 +32,12 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 = core::Object with self::M1 {
-  synthetic constructor •() → self::_C&Object&M1
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 {
-  synthetic constructor •() → self::_C&Object&M1&M2
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
 }
@@ -54,7 +54,7 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> = core::Object with self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/mixin.dart.strong.transformed.expect
index 13bbc5e..124f59c 100644
--- a/pkg/front_end/testcases/mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/mixin.dart.strong.transformed.expect
@@ -3,14 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → self::_B&Object&M1
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _B&Object&M1&M2 extends self::_B&Object&M1 implements self::M2 {
-  synthetic constructor •() → self::_B&Object&M1&M2
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   method m() → dynamic
@@ -36,14 +36,14 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → self::_C&Object&M1
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 {
-  synthetic constructor •() → self::_C&Object&M1&M2
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   method m() → dynamic
@@ -62,7 +62,7 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
   method m() → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect
index 75331f8..0e0e756 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect
@@ -22,7 +22,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_C&Object&B
+  const synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect
index b3fc1ec..e0f993c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect
@@ -22,7 +22,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → self::_C&Object&B
+  const synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
   method noSuchMethod(dynamic i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
index 563fd5e..d92df10 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
@@ -18,7 +18,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_C&Object&B
+  const synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
index 00d48b8..44c8cbf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
@@ -22,7 +22,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B = core::Object with self::B {
-  synthetic constructor •() → self::_C&Object&B
+  const synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
index 8ec90ad..0685d8a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → self::_C&Object&B
+  const synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect
index 43df9dd..d4ed912 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect
@@ -18,7 +18,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A = core::Object with self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect
index df41d65..a14c6c9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect
@@ -18,7 +18,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
index a8727f8..93b22a1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
@@ -16,7 +16,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A = core::Object with self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
index 43df9dd..d4ed912 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
@@ -18,7 +18,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A = core::Object with self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
index df41d65..a14c6c9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect
index 3bbf6e3..3dfcd26 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect
@@ -19,7 +19,7 @@
     return null;
 }
 abstract class _A&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
 }
@@ -31,7 +31,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_B&Object&M
+  const synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect
index 95e785d..4fcf0c6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect
@@ -19,7 +19,7 @@
     return null;
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
@@ -33,7 +33,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → self::_B&Object&M
+  const synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
index bcda192..a887c64 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
@@ -17,7 +17,7 @@
     ;
 }
 abstract class _A&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
 }
@@ -28,7 +28,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_B&Object&M
+  const synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
index 3bbf6e3..3dfcd26 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
@@ -19,7 +19,7 @@
     return null;
 }
 abstract class _A&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
 }
@@ -31,7 +31,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_B&Object&M
+  const synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
index 95e785d..4fcf0c6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
@@ -19,7 +19,7 @@
     return null;
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
@@ -33,7 +33,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → self::_B&Object&M
+  const synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect
index 5b8657c..3ca45b1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect
@@ -11,7 +11,7 @@
   }
 }
 abstract class _B&Object&A = core::Object with self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect
index f8720a6..f9187d1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect
@@ -11,7 +11,7 @@
   }
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
index 3ea742b..7cfd576 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
@@ -9,7 +9,7 @@
     ;
 }
 abstract class _B&Object&A = core::Object with self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
index 5b8657c..3ca45b1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
@@ -11,7 +11,7 @@
   }
 }
 abstract class _B&Object&A = core::Object with self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
index f8720a6..f9187d1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
   }
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → self::_B&Object&A
+  const synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect
index 7e77cf6..7711967 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect
@@ -17,7 +17,7 @@
   }
 }
 abstract class _A&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect
index a02303e..eb168b2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect
@@ -17,7 +17,7 @@
   }
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
index 199bd26..d96e5bd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
@@ -14,7 +14,7 @@
     ;
 }
 abstract class _A&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
index 7e77cf6..7711967 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
@@ -17,7 +17,7 @@
   }
 }
 abstract class _A&Object&M = core::Object with self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
index a02303e..eb168b2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
   }
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → self::_A&Object&M
+  const synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.expect
index 73a23ec..504291a 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.expect
@@ -1,18 +1,69 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:9:7: Error: The type 'Missing' can't be mixed in.
+// class C = Object with Missing;
+//       ^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:5:17: Error: Type 'Missing' not found.
+// class A extends Missing {}
+//                 ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:7:20: Error: Type 'Missing' not found.
+// class B implements Missing {}
+//                    ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:9:23: Error: Type 'Missing' not found.
+// class C = Object with Missing;
+//                       ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:12:17: Warning: Couldn't find constructor 'Missing'.
+//   factory D() = Missing;
+//                 ^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:12:11: Warning: Redirection constructor target not found: 'Missing'
+//   factory D() = Missing;
+//           ^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:12:11: Warning: Method not found: 'Missing'.
+//   factory D() = Missing;
+//           ^^^^^^^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:9:7: Error: The type 'Missing' can't be mixed in.
+// class C = Object with Missing;
+//       ^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:5:17: Error: Type 'Missing' not found.
+// class A extends Missing {}
+//                 ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:7:20: Error: Type 'Missing' not found.
+// class B implements Missing {}
+//                    ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:9:23: Error: Type 'Missing' not found.
+// class C = Object with Missing;
+//                       ^^^^^^^
+
 library;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
   synthetic constructor •() → self::A
-    : invalid-initializer;
+    : super core::Object::•()
+    ;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B
-    : invalid-initializer;
+    : super core::Object::•()
+    ;
 }
 class C extends core::Object {
-  constructor •() → dynamic
-    : invalid-initializer;
+  const synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
 }
 class D extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::D::•];
@@ -23,5 +74,5 @@
   new self::A::•();
   new self::B::•();
   new self::C::•();
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Missing, 32, null, <dynamic>[].toList(growable: false), <dynamic, dynamic>{}));
+  let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Missing, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.transformed.expect
new file mode 100644
index 0000000..2574251
--- /dev/null
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.legacy.transformed.expect
@@ -0,0 +1,48 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:9:7: Error: The type 'Missing' can't be mixed in.
+// class C = Object with Missing;
+//       ^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:5:17: Error: Type 'Missing' not found.
+// class A extends Missing {}
+//                 ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:7:20: Error: Type 'Missing' not found.
+// class B implements Missing {}
+//                    ^^^^^^^
+//
+// pkg/front_end/testcases/rasta/class_hierarchy.dart:9:23: Error: Type 'Missing' not found.
+// class C = Object with Missing;
+//                       ^^^^^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+class C extends core::Object {
+  const synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+class D extends core::Object {
+  static field dynamic _redirecting# = <dynamic>[self::D::•];
+  static factory •() → self::D
+    let dynamic #redirecting_factory = "Missing" in invalid-expression;
+}
+static method main() → void {
+  new self::A::•();
+  new self::B::•();
+  new self::C::•();
+  let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Missing, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+}
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
index 85e236b..e9ad29f 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
@@ -37,7 +37,7 @@
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C
+  const synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
index 1a0ccc3..6ea6019 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
@@ -69,7 +69,7 @@
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C
+  const synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
index 0c4e6ad..7426197 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
@@ -39,7 +39,7 @@
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C
+  const synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 1edba47..c38a4b3 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -20,8 +20,6 @@
 call_method_must_not_be_getter_test/03: RuntimeError # Issue 32155
 config_import_corelib_test: CompileTimeError # we need a special platform.dill file for categories=all. Once we fix that, all dart:* are supported when using '--categories=all' so this will become a RuntimeError, OK.
 config_import_test: RuntimeError # Test flag is not passed to the compiler.
-const_constructor_mixin3_test: CompileTimeError # Issue 33644.
-const_constructor_mixin_test: CompileTimeError # Issue 33644.
 const_constructor_nonconst_param_test/01: MissingCompileTimeError
 const_dynamic_type_literal_test/03: Pass # but it shouldn't until we fix issue 17207
 deopt_inlined_function_lazy_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index a2fea50..1228430 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -30,8 +30,6 @@
 const_cast2_test/01: CompileTimeError
 const_cast2_test/none: CompileTimeError
 const_constructor3_test/04: MissingCompileTimeError # Side-effect of working around issue 33441 for int-to-double
-const_constructor_mixin3_test/01: MissingCompileTimeError # Issue 33644
-const_constructor_mixin_test/01: MissingCompileTimeError # Issue 33644
 covariant_override/tear_off_type_test: RuntimeError # Issue 28395
 covariant_subtyping_with_mixin_test: CompileTimeError # Issue 34329
 deferred_load_library_wrong_args_test/01: MissingRuntimeError, RuntimeError # Issue 29920
@@ -180,8 +178,6 @@
 config_import_test: RuntimeError
 const_cast1_test/02: MissingCompileTimeError
 const_constructor3_test/04: MissingCompileTimeError
-const_constructor_mixin3_test: CompileTimeError # Issue 33644.
-const_constructor_mixin_test: CompileTimeError # Issue 33644.
 const_constructor_nonconst_field_test/01: MissingCompileTimeError
 const_constructor_nonconst_param_test/01: MissingCompileTimeError
 const_dynamic_type_literal_test/02: MissingCompileTimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index a2e8d78..4ce61f3 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -206,8 +206,6 @@
 async_return_types_test/nestedFuture: MissingCompileTimeError # Issue 33068
 const_cast2_test/01: CompileTimeError # Issue 32517
 const_cast2_test/none: CompileTimeError # Issue 32517
-const_constructor_mixin3_test: CompileTimeError # Issue 33644.
-const_constructor_mixin_test: CompileTimeError # Issue 33644.
 deferred_inheritance_constraints_test/extends: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
 deferred_inheritance_constraints_test/implements: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
 deferred_inheritance_constraints_test/mixin: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
@@ -1058,8 +1056,6 @@
 conditional_import_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 30273.
 config_import_corelib_test: CompileTimeError # Issue 31533
 config_import_test: RuntimeError # KernelVM bug: Configurable imports.
-const_constructor_mixin3_test: CompileTimeError # Issue 33644.
-const_constructor_mixin_test: CompileTimeError # Issue 33644.
 const_dynamic_type_literal_test/02: RuntimeError # KernelVM bug: Constant map duplicated key.
 const_list_test: RuntimeError
 const_locals_test: RuntimeError