diff --git a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
index 20856f3..e66ab21 100644
--- a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
+++ b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
@@ -6,6 +6,7 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/error/hint_codes.dart';
@@ -111,20 +112,15 @@
     var classElement = element.enclosingElement as ClassElement;
     String name = element.name;
 
-    bool isConcrete(ClassElement element) =>
-        element.lookUpConcreteMethod(name, element.library) != null;
-
-    if (classElement.mixins.map((i) => i.element).any(isConcrete)) {
-      return true;
-    }
-    if (classElement.superclassConstraints
-        .map((i) => i.element)
-        .any(isConcrete)) {
+    if (classElement.supertype.isConcrete(name)) {
       return true;
     }
 
-    var supertype = classElement.supertype;
-    if (supertype != null && isConcrete(supertype.element)) {
+    if (classElement.mixins.any((m) => m.isConcrete(name))) {
+      return true;
+    }
+
+    if (classElement.superclassConstraints.any((c) => c.isConcrete(name))) {
       return true;
     }
 
@@ -143,3 +139,12 @@
     return;
   }
 }
+
+extension on InterfaceType? {
+  bool isConcrete(String name) {
+    var self = this;
+    if (self == null) return false;
+    var element = self.element;
+    return element.lookUpConcreteMethod(name, element.library) != null;
+  }
+}
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 392e727..ddd0e28 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -1956,8 +1956,8 @@
       }
       if (sourceClassBuilder is SourceEnumBuilder) {
         assert(constructor.function.positionalParameters.length >= 2 &&
-            constructor.function.positionalParameters[0].name == "index" &&
-            constructor.function.positionalParameters[1].name == "name");
+            constructor.function.positionalParameters[0].name == "#index" &&
+            constructor.function.positionalParameters[1].name == "#name");
         (positionalArguments ??= <Expression>[]).insertAll(0, [
           new VariableGetImpl(constructor.function.positionalParameters[0],
               forNullGuardedAccess: false),
diff --git a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
index 43f0251..a8749da 100644
--- a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
@@ -318,7 +318,7 @@
                     FormalParameterKind.requiredPositional,
                     0,
                     intType,
-                    "index",
+                    "#index",
                     libraryBuilder,
                     charOffset),
                 new FormalParameterBuilder(
@@ -326,7 +326,7 @@
                     FormalParameterKind.requiredPositional,
                     0,
                     stringType,
-                    "name",
+                    "#name",
                     libraryBuilder,
                     charOffset)
               ],
@@ -352,7 +352,7 @@
                   FormalParameterKind.requiredPositional,
                   /* modifiers = */ 0,
                   stringType,
-                  "name",
+                  "#name",
                   libraryBuilder,
                   charOffset));
           member.formals!.insert(
@@ -362,7 +362,7 @@
                   FormalParameterKind.requiredPositional,
                   /* modifiers = */ 0,
                   intType,
-                  "index",
+                  "#index",
                   libraryBuilder,
                   charOffset));
         }
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
index 01185de..51394bf 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
@@ -62,8 +62,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -72,8 +72,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -98,8 +98,8 @@
 class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -113,8 +113,8 @@
 class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -128,8 +128,8 @@
 class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -147,8 +147,8 @@
 class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&MethodImplementation::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&MethodImplementation::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
index 7bc3967..bdb1b7c 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
@@ -62,8 +62,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -72,8 +72,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -98,8 +98,8 @@
 class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -113,8 +113,8 @@
 class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -128,8 +128,8 @@
 class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -146,8 +146,8 @@
 class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&MethodImplementation::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&MethodImplementation::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.expect
index 6548f65..f5c53a3 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.expect
@@ -62,8 +62,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -72,8 +72,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -98,8 +98,8 @@
 class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -113,8 +113,8 @@
 class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -128,8 +128,8 @@
 class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -147,8 +147,8 @@
 class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&MethodImplementation::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&MethodImplementation::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.modular.expect
index 6548f65..f5c53a3 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.modular.expect
@@ -62,8 +62,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -72,8 +72,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -98,8 +98,8 @@
 class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -113,8 +113,8 @@
 class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -128,8 +128,8 @@
 class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -147,8 +147,8 @@
 class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&MethodImplementation::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&MethodImplementation::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.outline.expect
index ea495c1..cb44beb 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.outline.expect
@@ -62,8 +62,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -72,8 +72,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -97,8 +97,8 @@
 class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
   static const field self::E4 element = const self::E4::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -111,8 +111,8 @@
 class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
   static const field self::E5 element = const self::E5::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -125,8 +125,8 @@
 class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/  {
   static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -145,7 +145,7 @@
 class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
+  const constructor •(core::int #index, core::String #name) → self::E7
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.transformed.expect
index 08739b0..e2f05ca 100644
--- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.weak.transformed.expect
@@ -62,8 +62,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -72,8 +72,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -98,8 +98,8 @@
 class E4 extends core::_Enum implements self::InterfaceMethod /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -113,8 +113,8 @@
 class E5 extends core::_Enum implements self::InterfaceGetter /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -128,8 +128,8 @@
 class E6 extends core::_Enum implements self::InterfaceSetter /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -146,8 +146,8 @@
 class E7 extends self::_E7&_Enum&MethodImplementation /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&MethodImplementation::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&MethodImplementation::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
index bac3cd9..ff4003b 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
@@ -75,8 +75,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C1;
   final field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -84,16 +84,16 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C5;
   static const field self::E2 element = #C4;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
 }
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C6;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -101,8 +101,8 @@
 }
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C7;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -111,8 +111,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C8;
   static field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C10;
   static const field self::E6 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -130,8 +130,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C12;
   static const field self::E7 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -153,8 +153,8 @@
 class E8 extends self::_E8&_Enum&A8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C14;
   static const field self::E8 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&A8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&A8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -177,8 +177,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
   static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -199,8 +199,8 @@
 class E10 extends self::_E10&_Enum&A10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C16;
   static const field self::E10 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&A10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&A10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
index 37fade4..b951615 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
@@ -75,8 +75,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C1;
   final field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -84,16 +84,16 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C5;
   static const field self::E2 element = #C4;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
 }
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C6;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -101,8 +101,8 @@
 }
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C7;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -111,8 +111,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C8;
   static field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C10;
   static const field self::E6 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -130,8 +130,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C12;
   static const field self::E7 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E8 extends self::_E8&_Enum&A8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C14;
   static const field self::E8 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&A8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&A8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -173,8 +173,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
   static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -194,8 +194,8 @@
 class E10 extends self::_E10&_Enum&A10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C16;
   static const field self::E10 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&A10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&A10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect
index a1dbcac..c9fbc33 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect
@@ -75,8 +75,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C1;
   final field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -84,16 +84,16 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C5;
   static const field self::E2 element = #C4;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
 }
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C6;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -101,8 +101,8 @@
 }
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C7;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -111,8 +111,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C8;
   static field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C10;
   static const field self::E6 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -130,8 +130,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C12;
   static const field self::E7 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -153,8 +153,8 @@
 class E8 extends self::_E8&_Enum&A8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C14;
   static const field self::E8 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&A8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&A8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -177,8 +177,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
   static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -199,8 +199,8 @@
 class E10 extends self::_E10&_Enum&A10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C16;
   static const field self::E10 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&A10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&A10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect
index a1dbcac..c9fbc33 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect
@@ -75,8 +75,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C1;
   final field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -84,16 +84,16 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C5;
   static const field self::E2 element = #C4;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
 }
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C6;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -101,8 +101,8 @@
 }
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C7;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -111,8 +111,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C8;
   static field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C10;
   static const field self::E6 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -130,8 +130,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C12;
   static const field self::E7 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -153,8 +153,8 @@
 class E8 extends self::_E8&_Enum&A8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C14;
   static const field self::E8 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&A8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&A8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -177,8 +177,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
   static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -199,8 +199,8 @@
 class E10 extends self::_E10&_Enum&A10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C16;
   static const field self::E10 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&A10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&A10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect
index 2f845e4..3095452 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect
@@ -71,8 +71,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[];
   final field core::int element;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -80,16 +80,16 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
 }
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = const <self::E3>[];
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -98,8 +98,8 @@
 }
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[];
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -109,8 +109,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[];
   static field core::int element;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -118,8 +118,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -129,8 +129,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -153,7 +153,7 @@
 class E8 extends self::_E8&_Enum&A8 /*isEnum*/  {
   static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
   static const field self::E8 element = const self::E8::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E8
+  const constructor •(core::int #index, core::String #name) → self::E8
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -175,7 +175,7 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
   static const field self::E9 element = const self::E9::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E9
+  const constructor •(core::int #index, core::String #name) → self::E9
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -196,7 +196,7 @@
 class E10 extends self::_E10&_Enum&A10 /*isEnum*/  {
   static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
   static const field self::E10 element = const self::E10::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E10
+  const constructor •(core::int #index, core::String #name) → self::E10
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect
index 00f7ff2..5d6b8c3 100644
--- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect
@@ -75,8 +75,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C1;
   final field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -84,16 +84,16 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C5;
   static const field self::E2 element = #C4;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
 }
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C6;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -101,8 +101,8 @@
 }
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C7;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -111,8 +111,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C8;
   static field core::int element = null;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C10;
   static const field self::E6 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -130,8 +130,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C12;
   static const field self::E7 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E8 extends self::_E8&_Enum&A8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C14;
   static const field self::E8 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&A8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&A8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -173,8 +173,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
   static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -194,8 +194,8 @@
 class E10 extends self::_E10&_Enum&A10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C16;
   static const field self::E10 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&A10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&A10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.expect
index 3b2e796..5e61e3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.expect
@@ -72,11 +72,11 @@
   four.f2(); // Error.
       ^^";
   static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10]/*isLegacy*/;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name) → self::E
-    : this self::E::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::E
+    : this self::E::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.transformed.expect
index 3b2e796..5e61e3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.strong.transformed.expect
@@ -72,11 +72,11 @@
   four.f2(); // Error.
       ^^";
   static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10]/*isLegacy*/;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name) → self::E
-    : this self::E::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::E
+    : this self::E::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.expect
index 3b2e796..5e61e3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.expect
@@ -72,11 +72,11 @@
   four.f2(); // Error.
       ^^";
   static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10]/*isLegacy*/;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name) → self::E
-    : this self::E::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::E
+    : this self::E::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.modular.expect
index 3b2e796..5e61e3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.modular.expect
@@ -72,11 +72,11 @@
   four.f2(); // Error.
       ^^";
   static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10]/*isLegacy*/;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name) → self::E
-    : this self::E::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::E
+    : this self::E::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.outline.expect
index 220fd42..4e33c2f 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.outline.expect
@@ -37,11 +37,11 @@
   four.f2(); // Error.
       ^^";
   static final field dynamic _redirecting# = <dynamic>[self::E::f3, self::E::f4, self::E::f5, self::E::f6]/*isLegacy*/;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name) → self::E
-    : this self::E::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::E
+    : this self::E::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.transformed.expect
index 3b2e796..5e61e3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_calls.dart.weak.transformed.expect
@@ -72,11 +72,11 @@
   four.f2(); // Error.
       ^^";
   static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10]/*isLegacy*/;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name) → self::E
-    : this self::E::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::E
+    : this self::E::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.expect
index 65cd747..d331062 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:6:4: Error: Couldn't find constructor 'T'.
   t;
    ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::S s = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:12:4: Error: Couldn't find constructor 'S.named'.
   s.named();
    ^^^^^";
-  const constructor •(core::int index, core::String name) → self::S
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::S
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "S.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.transformed.expect
index 65cd747..d331062 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.strong.transformed.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:6:4: Error: Couldn't find constructor 'T'.
   t;
    ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::S s = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:12:4: Error: Couldn't find constructor 'S.named'.
   s.named();
    ^^^^^";
-  const constructor •(core::int index, core::String name) → self::S
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::S
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "S.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.expect
index 65cd747..d331062 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:6:4: Error: Couldn't find constructor 'T'.
   t;
    ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::S s = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:12:4: Error: Couldn't find constructor 'S.named'.
   s.named();
    ^^^^^";
-  const constructor •(core::int index, core::String name) → self::S
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::S
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "S.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.modular.expect
index 65cd747..d331062 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.modular.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:6:4: Error: Couldn't find constructor 'T'.
   t;
    ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::S s = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:12:4: Error: Couldn't find constructor 'S.named'.
   s.named();
    ^^^^^";
-  const constructor •(core::int index, core::String name) → self::S
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::S
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "S.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.outline.expect
index 3f74c75..8bd721f 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.outline.expect
@@ -18,8 +18,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:6:4: Error: Couldn't find constructor 'T'.
   t;
    ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
@@ -29,8 +29,8 @@
   static const field self::S s = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:12:4: Error: Couldn't find constructor 'S.named'.
   s.named();
    ^^^^^";
-  const constructor •(core::int index, core::String name) → self::S
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::S
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "S.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.transformed.expect
index 65cd747..d331062 100644
--- a/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart.weak.transformed.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:6:4: Error: Couldn't find constructor 'T'.
   t;
    ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::S s = invalid-expression "pkg/front_end/testcases/enhanced_enums/constructor_not_found.dart:12:4: Error: Couldn't find constructor 'S.named'.
   s.named();
    ^^^^^";
-  const constructor •(core::int index, core::String name) → self::S
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::S
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "S.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect
index b0f0e52..aa36fa3 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect
@@ -12,8 +12,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -39,8 +39,8 @@
 class E3 extends core::_Enum implements self::I3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect
index b0f0e52..aa36fa3 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect
@@ -12,8 +12,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -39,8 +39,8 @@
 class E3 extends core::_Enum implements self::I3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect
index e9a2e61..b2e1541 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect
@@ -12,8 +12,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -39,8 +39,8 @@
 class E3 extends core::_Enum implements self::I3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect
index e9a2e61..b2e1541 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect
@@ -12,8 +12,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -39,8 +39,8 @@
 class E3 extends core::_Enum implements self::I3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect
index 9e49691..da36f49 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect
@@ -12,8 +12,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -38,8 +38,8 @@
 class E3 extends core::_Enum implements self::I3 /*isEnum*/  {
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect
index e9a2e61..b2e1541 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect
@@ -12,8 +12,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -39,8 +39,8 @@
 class E3 extends core::_Enum implements self::I3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect
index b907c0c..6b8c2c7 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = #C9;
   final field core::int hashCode = 42;
   static const field self::E3 element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C11;
   static const field self::E4 element = #C10;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C13;
   static const field self::E5 element = #C12;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int hashCode = 1;
   final field core::int bar = 2;
   static const field self::E6 element = #C16;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C19;
   static const field self::E7 element = #C18;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -186,8 +186,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = #C21;
   static const field self::E8 element = #C20;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -196,8 +196,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C23;
   static const field self::E9 element = #C22;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -206,8 +206,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C25;
   static const field self::E10 element = #C24;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -217,8 +217,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C27;
   static const field self::E11 element = #C26;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -227,8 +227,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C30;
   static const field self::E12 hashCode = #C29;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -242,8 +242,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = #C32;
   static const field self::E13 element = #C31;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -257,8 +257,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = #C34;
   static const field self::E14 element = #C33;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect
index 8f3f873..5a348b0 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = #C9;
   final field core::int hashCode = 42;
   static const field self::E3 element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C11;
   static const field self::E4 element = #C10;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C13;
   static const field self::E5 element = #C12;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int hashCode = 1;
   final field core::int bar = 2;
   static const field self::E6 element = #C16;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C19;
   static const field self::E7 element = #C18;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -186,8 +186,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = #C21;
   static const field self::E8 element = #C20;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -196,8 +196,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C23;
   static const field self::E9 element = #C22;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -206,8 +206,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C25;
   static const field self::E10 element = #C24;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -217,8 +217,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C27;
   static const field self::E11 element = #C26;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -227,8 +227,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C30;
   static const field self::E12 hashCode = #C29;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -242,8 +242,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = #C32;
   static const field self::E13 element = #C31;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -257,8 +257,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = #C34;
   static const field self::E14 element = #C33;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect
index 8f3f873..5a348b0 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = #C9;
   final field core::int hashCode = 42;
   static const field self::E3 element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C11;
   static const field self::E4 element = #C10;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C13;
   static const field self::E5 element = #C12;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int hashCode = 1;
   final field core::int bar = 2;
   static const field self::E6 element = #C16;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C19;
   static const field self::E7 element = #C18;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -186,8 +186,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = #C21;
   static const field self::E8 element = #C20;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -196,8 +196,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C23;
   static const field self::E9 element = #C22;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -206,8 +206,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C25;
   static const field self::E10 element = #C24;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -217,8 +217,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C27;
   static const field self::E11 element = #C26;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -227,8 +227,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C30;
   static const field self::E12 hashCode = #C29;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -242,8 +242,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = #C32;
   static const field self::E13 element = #C31;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -257,8 +257,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = #C34;
   static const field self::E14 element = #C33;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect
index d6594a4..ee3296a 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   final field core::int hashCode;
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
   static const field self::E4 element = const self::E4::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
   static const field self::E5 element = const self::E5::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int hashCode;
   final field core::int bar;
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -187,8 +187,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
   static const field self::E8 element = const self::E8::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -198,8 +198,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
   static const field self::E9 element = const self::E9::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -208,8 +208,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
   static const field self::E10 element = const self::E10::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -219,8 +219,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = const <self::E11>[self::E11::element];
   static const field self::E11 element = const self::E11::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -230,8 +230,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = const <self::E12>[self::E12::hashCode];
   static const field self::E12 hashCode = const self::E12::•(0, "hashCode");
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -244,8 +244,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = const <self::E13>[self::E13::element];
   static const field self::E13 element = const self::E13::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -258,8 +258,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = const <self::E14>[self::E14::element];
   static const field self::E14 element = const self::E14::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect
index 63126a8..76ae5ec 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = #C9;
   final field core::int index = 42;
   static const field self::E3 element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C11;
   static const field self::E4 element = #C10;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C13;
   static const field self::E5 element = #C12;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int index = 1;
   final field core::int bar = 2;
   static const field self::E6 element = #C16;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C19;
   static const field self::E7 element = #C18;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -186,8 +186,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = #C21;
   static const field self::E8 element = #C20;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -196,8 +196,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C23;
   static const field self::E9 element = #C22;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -206,8 +206,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C25;
   static const field self::E10 element = #C24;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -217,8 +217,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C27;
   static const field self::E11 element = #C26;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -227,8 +227,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C30;
   static const field self::E12 index = #C29;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -242,8 +242,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = #C32;
   static const field self::E13 element = #C31;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -257,8 +257,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = #C34;
   static const field self::E14 element = #C33;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect
index 22e1547..16596f7 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = #C9;
   final field core::int index = 42;
   static const field self::E3 element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C11;
   static const field self::E4 element = #C10;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C13;
   static const field self::E5 element = #C12;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int index = 1;
   final field core::int bar = 2;
   static const field self::E6 element = #C16;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C19;
   static const field self::E7 element = #C18;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -186,8 +186,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = #C21;
   static const field self::E8 element = #C20;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -196,8 +196,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C23;
   static const field self::E9 element = #C22;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -206,8 +206,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C25;
   static const field self::E10 element = #C24;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -217,8 +217,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C27;
   static const field self::E11 element = #C26;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -227,8 +227,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C30;
   static const field self::E12 index = #C29;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -242,8 +242,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = #C32;
   static const field self::E13 element = #C31;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -257,8 +257,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = #C34;
   static const field self::E14 element = #C33;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect
index 22e1547..16596f7 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = #C9;
   final field core::int index = 42;
   static const field self::E3 element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C11;
   static const field self::E4 element = #C10;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C13;
   static const field self::E5 element = #C12;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int index = 1;
   final field core::int bar = 2;
   static const field self::E6 element = #C16;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C19;
   static const field self::E7 element = #C18;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -186,8 +186,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = #C21;
   static const field self::E8 element = #C20;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -196,8 +196,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C23;
   static const field self::E9 element = #C22;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -206,8 +206,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C25;
   static const field self::E10 element = #C24;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -217,8 +217,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C27;
   static const field self::E11 element = #C26;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -227,8 +227,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C30;
   static const field self::E12 index = #C29;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -242,8 +242,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = #C32;
   static const field self::E13 element = #C31;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -257,8 +257,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = #C34;
   static const field self::E14 element = #C33;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect
index 9546bff..5851556 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect
@@ -109,8 +109,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -120,8 +120,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -132,8 +132,8 @@
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   final field core::int index;
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -141,8 +141,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
   static const field self::E4 element = const self::E4::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -152,8 +152,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
   static const field self::E5 element = const self::E5::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -166,8 +166,8 @@
   final field core::int index;
   final field core::int bar;
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -175,8 +175,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -187,8 +187,8 @@
 class E8 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
   static const field self::E8 element = const self::E8::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -198,8 +198,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
   static const field self::E9 element = const self::E9::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -208,8 +208,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
   static const field self::E10 element = const self::E10::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -219,8 +219,8 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = const <self::E11>[self::E11::element];
   static const field self::E11 element = const self::E11::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
@@ -230,8 +230,8 @@
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = const <self::E12>[self::E12::index];
   static const field self::E12 index = const self::E12::•(0, "index");
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -244,8 +244,8 @@
 class E13 extends core::_Enum implements self::I13 /*isEnum*/  {
   static const field core::List<self::E13> values = const <self::E13>[self::E13::element];
   static const field self::E13 element = const self::E13::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E13
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -258,8 +258,8 @@
 class E14 extends core::_Enum implements self::I14 /*isEnum*/  {
   static const field core::List<self::E14> values = const <self::E14>[self::E14::element];
   static const field self::E14 element = const self::E14::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E14
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect
index 9912e9e..eb6433c4 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect
@@ -40,8 +40,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -49,8 +49,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -58,8 +58,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -67,8 +67,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -77,8 +77,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -87,8 +87,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -97,8 +97,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect
index 9912e9e..eb6433c4 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect
@@ -40,8 +40,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -49,8 +49,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -58,8 +58,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -67,8 +67,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -77,8 +77,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -87,8 +87,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -97,8 +97,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect
index feb041c..7f534fe 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect
@@ -40,8 +40,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -49,8 +49,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -58,8 +58,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -67,8 +67,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -77,8 +77,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -87,8 +87,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -97,8 +97,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect
index feb041c..7f534fe 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect
@@ -40,8 +40,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -49,8 +49,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -58,8 +58,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -67,8 +67,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -77,8 +77,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -87,8 +87,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -97,8 +97,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect
index 0a445dd..cadebb3 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect
@@ -40,8 +40,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -49,8 +49,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -58,8 +58,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -67,8 +67,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
   static const field self::E4 element = const self::E4::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -78,8 +78,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
   static const field self::E5 element = const self::E5::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -89,8 +89,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -100,8 +100,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect
index feb041c..7f534fe 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect
@@ -40,8 +40,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -49,8 +49,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -58,8 +58,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -67,8 +67,8 @@
 class E4 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -77,8 +77,8 @@
 class E5 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -87,8 +87,8 @@
 class E6 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -97,8 +97,8 @@
 class E7 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.expect
index 56b28c4..7f36b67 100644
--- a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.expect
@@ -15,11 +15,11 @@
   static const field self::E<core::double, core::num> two = #C6;
   static const field self::E<core::int, core::int> three = #C9;
   static const field self::E<core::num, core::bool> four = #C12;
-  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.transformed.expect
index 56b28c4..7f36b67 100644
--- a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.strong.transformed.expect
@@ -15,11 +15,11 @@
   static const field self::E<core::double, core::num> two = #C6;
   static const field self::E<core::int, core::int> three = #C9;
   static const field self::E<core::num, core::bool> four = #C12;
-  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.expect
index 174339c..a3a789d 100644
--- a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.expect
@@ -15,11 +15,11 @@
   static const field self::E<core::double, core::num> two = #C6;
   static const field self::E<core::int, core::int> three = #C9;
   static const field self::E<core::num, core::bool> four = #C12;
-  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.modular.expect
index 174339c..a3a789d 100644
--- a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.modular.expect
@@ -15,11 +15,11 @@
   static const field self::E<core::double, core::num> two = #C6;
   static const field self::E<core::int, core::int> three = #C9;
   static const field self::E<core::num, core::bool> four = #C12;
-  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.outline.expect
index 326acaf..dc65a96 100644
--- a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.outline.expect
@@ -15,11 +15,11 @@
   static const field self::E<core::double, core::num> two = const self::E::•<core::double, core::num>(1, "two");
   static const field self::E<core::int, core::int> three = const self::E::named<core::int, core::int>(2, "three", 42);
   static const field self::E<core::num, core::bool> four = const self::E::•<core::num, core::bool>(3, "four");
-  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.transformed.expect
index 174339c..a3a789d 100644
--- a/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart.weak.transformed.expect
@@ -15,11 +15,11 @@
   static const field self::E<core::double, core::num> two = #C6;
   static const field self::E<core::int, core::int> three = #C9;
   static const field self::E<core::num, core::bool> four = #C12;
-  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E<self::E::X%, self::E::Y%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
index bf189d3..806437d 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
@@ -19,8 +19,8 @@
 class EA extends self::_EA&_Enum&A /*isEnum*/  {
   static const field core::List<self::EA> values = #C4;
   static const field self::EA element = #C3;
-  const constructor •(core::int index, core::String name) → self::EA
-    : super self::_EA&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EA
+    : super self::_EA&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "EA.${this.{core::_Enum::_name}{core::String}}";
@@ -42,8 +42,8 @@
 class EB extends self::_EB&_Enum&B /*isEnum*/  {
   static const field core::List<self::EB> values = #C6;
   static const field self::EB element = #C5;
-  const constructor •(core::int index, core::String name) → self::EB
-    : super self::_EB&_Enum&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EB
+    : super self::_EB&_Enum&B::•(#index, #name)
     ;
   method toString() → core::String
     return "EB.${this.{core::_Enum::_name}{core::String}}";
@@ -62,8 +62,8 @@
 class EM extends self::_EM&_Enum&M /*isEnum*/  {
   static const field core::List<self::EM> values = #C8;
   static const field self::EM element = #C7;
-  const constructor •(core::int index, core::String name) → self::EM
-    : super self::_EM&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EM
+    : super self::_EM&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "EM.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class EN extends self::_EN&_Enum&N /*isEnum*/  {
   static const field core::List<self::EN> values = #C10;
   static const field self::EN element = #C9;
-  const constructor •(core::int index, core::String name) → self::EN
-    : super self::_EN&_Enum&N::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EN
+    : super self::_EN&_Enum&N::•(#index, #name)
     ;
   method toString() → core::String
     return "EN.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
index ce0af0b..fefad44 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
@@ -19,8 +19,8 @@
 class EA extends self::_EA&_Enum&A /*isEnum*/  {
   static const field core::List<self::EA> values = #C4;
   static const field self::EA element = #C3;
-  const constructor •(core::int index, core::String name) → self::EA
-    : super self::_EA&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EA
+    : super self::_EA&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "EA.${this.{core::_Enum::_name}{core::String}}";
@@ -42,8 +42,8 @@
 class EB extends self::_EB&_Enum&B /*isEnum*/  {
   static const field core::List<self::EB> values = #C6;
   static const field self::EB element = #C5;
-  const constructor •(core::int index, core::String name) → self::EB
-    : super self::_EB&_Enum&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EB
+    : super self::_EB&_Enum&B::•(#index, #name)
     ;
   method toString() → core::String
     return "EB.${this.{core::_Enum::_name}{core::String}}";
@@ -62,8 +62,8 @@
 class EM extends self::_EM&_Enum&M /*isEnum*/  {
   static const field core::List<self::EM> values = #C8;
   static const field self::EM element = #C7;
-  const constructor •(core::int index, core::String name) → self::EM
-    : super self::_EM&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EM
+    : super self::_EM&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "EM.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class EN extends self::_EN&_Enum&N /*isEnum*/  {
   static const field core::List<self::EN> values = #C10;
   static const field self::EN element = #C9;
-  const constructor •(core::int index, core::String name) → self::EN
-    : super self::_EN&_Enum&N::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EN
+    : super self::_EN&_Enum&N::•(#index, #name)
     ;
   method toString() → core::String
     return "EN.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
index 3b7f732..bbf22ca 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
@@ -19,8 +19,8 @@
 class EA extends self::_EA&_Enum&A /*isEnum*/  {
   static const field core::List<self::EA> values = #C4;
   static const field self::EA element = #C3;
-  const constructor •(core::int index, core::String name) → self::EA
-    : super self::_EA&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EA
+    : super self::_EA&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "EA.${this.{core::_Enum::_name}{core::String}}";
@@ -42,8 +42,8 @@
 class EB extends self::_EB&_Enum&B /*isEnum*/  {
   static const field core::List<self::EB> values = #C6;
   static const field self::EB element = #C5;
-  const constructor •(core::int index, core::String name) → self::EB
-    : super self::_EB&_Enum&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EB
+    : super self::_EB&_Enum&B::•(#index, #name)
     ;
   method toString() → core::String
     return "EB.${this.{core::_Enum::_name}{core::String}}";
@@ -62,8 +62,8 @@
 class EM extends self::_EM&_Enum&M /*isEnum*/  {
   static const field core::List<self::EM> values = #C8;
   static const field self::EM element = #C7;
-  const constructor •(core::int index, core::String name) → self::EM
-    : super self::_EM&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EM
+    : super self::_EM&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "EM.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class EN extends self::_EN&_Enum&N /*isEnum*/  {
   static const field core::List<self::EN> values = #C10;
   static const field self::EN element = #C9;
-  const constructor •(core::int index, core::String name) → self::EN
-    : super self::_EN&_Enum&N::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EN
+    : super self::_EN&_Enum&N::•(#index, #name)
     ;
   method toString() → core::String
     return "EN.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
index 3b7f732..bbf22ca 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
@@ -19,8 +19,8 @@
 class EA extends self::_EA&_Enum&A /*isEnum*/  {
   static const field core::List<self::EA> values = #C4;
   static const field self::EA element = #C3;
-  const constructor •(core::int index, core::String name) → self::EA
-    : super self::_EA&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EA
+    : super self::_EA&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "EA.${this.{core::_Enum::_name}{core::String}}";
@@ -42,8 +42,8 @@
 class EB extends self::_EB&_Enum&B /*isEnum*/  {
   static const field core::List<self::EB> values = #C6;
   static const field self::EB element = #C5;
-  const constructor •(core::int index, core::String name) → self::EB
-    : super self::_EB&_Enum&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EB
+    : super self::_EB&_Enum&B::•(#index, #name)
     ;
   method toString() → core::String
     return "EB.${this.{core::_Enum::_name}{core::String}}";
@@ -62,8 +62,8 @@
 class EM extends self::_EM&_Enum&M /*isEnum*/  {
   static const field core::List<self::EM> values = #C8;
   static const field self::EM element = #C7;
-  const constructor •(core::int index, core::String name) → self::EM
-    : super self::_EM&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EM
+    : super self::_EM&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "EM.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class EN extends self::_EN&_Enum&N /*isEnum*/  {
   static const field core::List<self::EN> values = #C10;
   static const field self::EN element = #C9;
-  const constructor •(core::int index, core::String name) → self::EN
-    : super self::_EN&_Enum&N::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EN
+    : super self::_EN&_Enum&N::•(#index, #name)
     ;
   method toString() → core::String
     return "EN.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
index 37f7523..c664069 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
@@ -18,7 +18,7 @@
 class EA extends self::_EA&_Enum&A /*isEnum*/  {
   static const field core::List<self::EA> values = const <self::EA>[self::EA::element];
   static const field self::EA element = const self::EA::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::EA
+  const constructor •(core::int #index, core::String #name) → self::EA
     ;
   method toString() → core::String
     return "EA.${this.{core::_Enum::_name}{core::String}}";
@@ -39,7 +39,7 @@
 class EB extends self::_EB&_Enum&B /*isEnum*/  {
   static const field core::List<self::EB> values = const <self::EB>[self::EB::element];
   static const field self::EB element = const self::EB::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::EB
+  const constructor •(core::int #index, core::String #name) → self::EB
     ;
   method toString() → core::String
     return "EB.${this.{core::_Enum::_name}{core::String}}";
@@ -58,7 +58,7 @@
 class EM extends self::_EM&_Enum&M /*isEnum*/  {
   static const field core::List<self::EM> values = const <self::EM>[self::EM::element];
   static const field self::EM element = const self::EM::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::EM
+  const constructor •(core::int #index, core::String #name) → self::EM
     ;
   method toString() → core::String
     return "EM.${this.{core::_Enum::_name}{core::String}}";
@@ -77,7 +77,7 @@
 class EN extends self::_EN&_Enum&N /*isEnum*/  {
   static const field core::List<self::EN> values = const <self::EN>[self::EN::element];
   static const field self::EN element = const self::EN::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::EN
+  const constructor •(core::int #index, core::String #name) → self::EN
     ;
   method toString() → core::String
     return "EN.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
index 99d70ca..5cdd088 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
@@ -19,8 +19,8 @@
 class EA extends self::_EA&_Enum&A /*isEnum*/  {
   static const field core::List<self::EA> values = #C4;
   static const field self::EA element = #C3;
-  const constructor •(core::int index, core::String name) → self::EA
-    : super self::_EA&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EA
+    : super self::_EA&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "EA.${this.{core::_Enum::_name}{core::String}}";
@@ -42,8 +42,8 @@
 class EB extends self::_EB&_Enum&B /*isEnum*/  {
   static const field core::List<self::EB> values = #C6;
   static const field self::EB element = #C5;
-  const constructor •(core::int index, core::String name) → self::EB
-    : super self::_EB&_Enum&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EB
+    : super self::_EB&_Enum&B::•(#index, #name)
     ;
   method toString() → core::String
     return "EB.${this.{core::_Enum::_name}{core::String}}";
@@ -62,8 +62,8 @@
 class EM extends self::_EM&_Enum&M /*isEnum*/  {
   static const field core::List<self::EM> values = #C8;
   static const field self::EM element = #C7;
-  const constructor •(core::int index, core::String name) → self::EM
-    : super self::_EM&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EM
+    : super self::_EM&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "EM.${this.{core::_Enum::_name}{core::String}}";
@@ -82,8 +82,8 @@
 class EN extends self::_EN&_Enum&N /*isEnum*/  {
   static const field core::List<self::EN> values = #C10;
   static const field self::EN element = #C9;
-  const constructor •(core::int index, core::String name) → self::EN
-    : super self::_EN&_Enum&N::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EN
+    : super self::_EN&_Enum&N::•(#index, #name)
     ;
   method toString() → core::String
     return "EN.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.expect
index ac5b77e..a1718b3 100644
--- a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.expect
@@ -5,8 +5,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 bar = #C3;
-  const constructor •(core::int index, core::String name, (core::int) → core::int f) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, (core::int) → core::int f) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -14,8 +14,8 @@
 class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<dynamic>> values = #C6;
   static const field self::E2<<X extends core::Object? = dynamic>(X%) → X%> bar = #C5;
-  const constructor •(core::int index, core::String name, self::E2::X% f) → self::E2<self::E2::X%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% f) → self::E2<self::E2::X%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E3<X extends core::num, Y extends core::String, Z extends (self::E3::X, self::E3::Y) → dynamic = (Never, Never) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<core::num, core::String, (Never, Never) → dynamic>> values = #C9;
   static const field self::E3<core::num, core::String, (core::num, core::String) → dynamic> element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.transformed.expect
index ac5b77e..a1718b3 100644
--- a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.strong.transformed.expect
@@ -5,8 +5,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 bar = #C3;
-  const constructor •(core::int index, core::String name, (core::int) → core::int f) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, (core::int) → core::int f) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -14,8 +14,8 @@
 class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<dynamic>> values = #C6;
   static const field self::E2<<X extends core::Object? = dynamic>(X%) → X%> bar = #C5;
-  const constructor •(core::int index, core::String name, self::E2::X% f) → self::E2<self::E2::X%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% f) → self::E2<self::E2::X%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E3<X extends core::num, Y extends core::String, Z extends (self::E3::X, self::E3::Y) → dynamic = (Never, Never) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<core::num, core::String, (Never, Never) → dynamic>> values = #C9;
   static const field self::E3<core::num, core::String, (core::num, core::String) → dynamic> element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.expect
index 263bb3d..c72859d 100644
--- a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.expect
@@ -5,8 +5,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 bar = #C3;
-  const constructor •(core::int index, core::String name, (core::int) → core::int f) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, (core::int) → core::int f) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -14,8 +14,8 @@
 class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<dynamic>> values = #C6;
   static const field self::E2<<X extends core::Object? = dynamic>(X%) → X%> bar = #C5;
-  const constructor •(core::int index, core::String name, self::E2::X% f) → self::E2<self::E2::X%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% f) → self::E2<self::E2::X%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E3<X extends core::num, Y extends core::String, Z extends (self::E3::X, self::E3::Y) → dynamic = (Never, Never) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<core::num, core::String, (Never, Never) → dynamic>> values = #C9;
   static const field self::E3<core::num, core::String, (core::num, core::String) → dynamic> element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.modular.expect
index 263bb3d..c72859d 100644
--- a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.modular.expect
@@ -5,8 +5,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 bar = #C3;
-  const constructor •(core::int index, core::String name, (core::int) → core::int f) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, (core::int) → core::int f) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -14,8 +14,8 @@
 class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<dynamic>> values = #C6;
   static const field self::E2<<X extends core::Object? = dynamic>(X%) → X%> bar = #C5;
-  const constructor •(core::int index, core::String name, self::E2::X% f) → self::E2<self::E2::X%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% f) → self::E2<self::E2::X%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E3<X extends core::num, Y extends core::String, Z extends (self::E3::X, self::E3::Y) → dynamic = (Never, Never) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<core::num, core::String, (Never, Never) → dynamic>> values = #C9;
   static const field self::E3<core::num, core::String, (core::num, core::String) → dynamic> element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.outline.expect
index 399e220..497752d 100644
--- a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.outline.expect
@@ -5,8 +5,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::bar];
   static const field self::E1 bar = const self::E1::•(0, "bar", self::foo<core::int>);
-  const constructor •(core::int index, core::String name, (core::int) → core::int f) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, (core::int) → core::int f) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -14,8 +14,8 @@
 class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<dynamic>> values = const <self::E2<dynamic>>[self::E2::bar];
   static const field self::E2<<X extends core::Object? = dynamic>(X%) → X%> bar = const self::E2::•<<X extends core::Object? = dynamic>(X%) → X%>(0, "bar", self::foo);
-  const constructor •(core::int index, core::String name, self::E2::X% f) → self::E2<self::E2::X%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% f) → self::E2<self::E2::X%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E3<X extends core::num, Y extends core::String, Z extends (self::E3::X, self::E3::Y) → dynamic = (Never, Never) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<core::num, core::String, (Never, Never) → dynamic>> values = const <self::E3<dynamic, dynamic, dynamic>>[self::E3::element];
   static const field self::E3<core::num, core::String, (core::num, core::String) → dynamic> element = const self::E3::•<core::num, core::String, (core::num, core::String) → dynamic>(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.transformed.expect
index 263bb3d..c72859d 100644
--- a/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inference_in_constructor_parameters.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 bar = #C3;
-  const constructor •(core::int index, core::String name, (core::int) → core::int f) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, (core::int) → core::int f) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -14,8 +14,8 @@
 class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<dynamic>> values = #C6;
   static const field self::E2<<X extends core::Object? = dynamic>(X%) → X%> bar = #C5;
-  const constructor •(core::int index, core::String name, self::E2::X% f) → self::E2<self::E2::X%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% f) → self::E2<self::E2::X%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -23,8 +23,8 @@
 class E3<X extends core::num, Y extends core::String, Z extends (self::E3::X, self::E3::Y) → dynamic = (Never, Never) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<core::num, core::String, (Never, Never) → dynamic>> values = #C9;
   static const field self::E3<core::num, core::String, (core::num, core::String) → dynamic> element = #C8;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::X, self::E3::Y, self::E3::Z>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
index 3a4a2bf..bbba884 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
@@ -92,8 +92,8 @@
 class E1 extends self::_E1&_Enum&A1 /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A1::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -115,8 +115,8 @@
 class E2 extends self::_E2&_Enum&A2 /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A2::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A2::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -138,8 +138,8 @@
 class E3 extends self::_E3&_Enum&A3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&A3::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&A3::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -161,8 +161,8 @@
 class E4 extends self::_E4&_Enum&A4 /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&A4::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&A4::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -181,8 +181,8 @@
 class E5 extends self::_E5&_Enum&M5 /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&M5::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&M5::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -201,8 +201,8 @@
 class E6 extends self::_E6&_Enum&M6 /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&M6::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&M6::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -221,8 +221,8 @@
 class E7 extends self::_E7&_Enum&M7 /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&M7::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&M7::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -241,8 +241,8 @@
 class E8 extends self::_E8&_Enum&M8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C18;
   static const field self::E8 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&M8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&M8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -266,8 +266,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = #C20;
   static const field self::E9 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -288,8 +288,8 @@
 class E10 extends self::_E10&_Enum&M10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C22;
   static const field self::E10 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&M10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&M10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
index 80daf575..cfa5422 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
@@ -92,8 +92,8 @@
 class E1 extends self::_E1&_Enum&A1 /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A1::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -115,8 +115,8 @@
 class E2 extends self::_E2&_Enum&A2 /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A2::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A2::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -138,8 +138,8 @@
 class E3 extends self::_E3&_Enum&A3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&A3::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&A3::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -161,8 +161,8 @@
 class E4 extends self::_E4&_Enum&A4 /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&A4::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&A4::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -181,8 +181,8 @@
 class E5 extends self::_E5&_Enum&M5 /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&M5::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&M5::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -201,8 +201,8 @@
 class E6 extends self::_E6&_Enum&M6 /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&M6::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&M6::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -221,8 +221,8 @@
 class E7 extends self::_E7&_Enum&M7 /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&M7::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&M7::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -241,8 +241,8 @@
 class E8 extends self::_E8&_Enum&M8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C18;
   static const field self::E8 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&M8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&M8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -266,8 +266,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = #C20;
   static const field self::E9 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -288,8 +288,8 @@
 class E10 extends self::_E10&_Enum&M10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C22;
   static const field self::E10 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&M10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&M10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.expect
index 0e8de44..1556195 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.expect
@@ -92,8 +92,8 @@
 class E1 extends self::_E1&_Enum&A1 /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A1::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -115,8 +115,8 @@
 class E2 extends self::_E2&_Enum&A2 /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A2::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A2::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -138,8 +138,8 @@
 class E3 extends self::_E3&_Enum&A3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&A3::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&A3::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -161,8 +161,8 @@
 class E4 extends self::_E4&_Enum&A4 /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&A4::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&A4::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -181,8 +181,8 @@
 class E5 extends self::_E5&_Enum&M5 /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&M5::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&M5::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -201,8 +201,8 @@
 class E6 extends self::_E6&_Enum&M6 /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&M6::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&M6::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -221,8 +221,8 @@
 class E7 extends self::_E7&_Enum&M7 /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&M7::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&M7::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -241,8 +241,8 @@
 class E8 extends self::_E8&_Enum&M8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C18;
   static const field self::E8 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&M8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&M8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -266,8 +266,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = #C20;
   static const field self::E9 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -288,8 +288,8 @@
 class E10 extends self::_E10&_Enum&M10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C22;
   static const field self::E10 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&M10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&M10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.modular.expect
index 0e8de44..1556195 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.modular.expect
@@ -92,8 +92,8 @@
 class E1 extends self::_E1&_Enum&A1 /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A1::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -115,8 +115,8 @@
 class E2 extends self::_E2&_Enum&A2 /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A2::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A2::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -138,8 +138,8 @@
 class E3 extends self::_E3&_Enum&A3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&A3::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&A3::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -161,8 +161,8 @@
 class E4 extends self::_E4&_Enum&A4 /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&A4::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&A4::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -181,8 +181,8 @@
 class E5 extends self::_E5&_Enum&M5 /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&M5::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&M5::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -201,8 +201,8 @@
 class E6 extends self::_E6&_Enum&M6 /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&M6::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&M6::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -221,8 +221,8 @@
 class E7 extends self::_E7&_Enum&M7 /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&M7::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&M7::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -241,8 +241,8 @@
 class E8 extends self::_E8&_Enum&M8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C18;
   static const field self::E8 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&M8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&M8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -266,8 +266,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = #C20;
   static const field self::E9 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -288,8 +288,8 @@
 class E10 extends self::_E10&_Enum&M10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C22;
   static const field self::E10 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&M10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&M10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.outline.expect
index 774f207..ceec370 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.outline.expect
@@ -91,7 +91,7 @@
 class E1 extends self::_E1&_Enum&A1 /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
+  const constructor •(core::int #index, core::String #name) → self::E1
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -112,7 +112,7 @@
 class E2 extends self::_E2&_Enum&A2 /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
+  const constructor •(core::int #index, core::String #name) → self::E2
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -133,7 +133,7 @@
 class E3 extends self::_E3&_Enum&A3 /*isEnum*/  {
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
+  const constructor •(core::int #index, core::String #name) → self::E3
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -154,7 +154,7 @@
 class E4 extends self::_E4&_Enum&A4 /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
   static const field self::E4 element = const self::E4::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E4
+  const constructor •(core::int #index, core::String #name) → self::E4
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -173,7 +173,7 @@
 class E5 extends self::_E5&_Enum&M5 /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
   static const field self::E5 element = const self::E5::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E5
+  const constructor •(core::int #index, core::String #name) → self::E5
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -192,7 +192,7 @@
 class E6 extends self::_E6&_Enum&M6 /*isEnum*/  {
   static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
+  const constructor •(core::int #index, core::String #name) → self::E6
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -211,7 +211,7 @@
 class E7 extends self::_E7&_Enum&M7 /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
+  const constructor •(core::int #index, core::String #name) → self::E7
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -230,7 +230,7 @@
 class E8 extends self::_E8&_Enum&M8 /*isEnum*/  {
   static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
   static const field self::E8 element = const self::E8::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E8
+  const constructor •(core::int #index, core::String #name) → self::E8
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -253,7 +253,7 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
   static const field self::E9 element = const self::E9::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E9
+  const constructor •(core::int #index, core::String #name) → self::E9
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -274,7 +274,7 @@
 class E10 extends self::_E10&_Enum&M10 /*isEnum*/  {
   static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
   static const field self::E10 element = const self::E10::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E10
+  const constructor •(core::int #index, core::String #name) → self::E10
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.transformed.expect
index 92342bc..6c7bda3 100644
--- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.weak.transformed.expect
@@ -92,8 +92,8 @@
 class E1 extends self::_E1&_Enum&A1 /*isEnum*/  {
   static const field core::List<self::E1> values = #C4;
   static const field self::E1 element = #C3;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A1::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -115,8 +115,8 @@
 class E2 extends self::_E2&_Enum&A2 /*isEnum*/  {
   static const field core::List<self::E2> values = #C6;
   static const field self::E2 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A2::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A2::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -138,8 +138,8 @@
 class E3 extends self::_E3&_Enum&A3 /*isEnum*/  {
   static const field core::List<self::E3> values = #C8;
   static const field self::E3 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&A3::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&A3::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -161,8 +161,8 @@
 class E4 extends self::_E4&_Enum&A4 /*isEnum*/  {
   static const field core::List<self::E4> values = #C10;
   static const field self::E4 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&A4::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&A4::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -181,8 +181,8 @@
 class E5 extends self::_E5&_Enum&M5 /*isEnum*/  {
   static const field core::List<self::E5> values = #C12;
   static const field self::E5 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&M5::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&M5::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -201,8 +201,8 @@
 class E6 extends self::_E6&_Enum&M6 /*isEnum*/  {
   static const field core::List<self::E6> values = #C14;
   static const field self::E6 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&M6::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&M6::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -221,8 +221,8 @@
 class E7 extends self::_E7&_Enum&M7 /*isEnum*/  {
   static const field core::List<self::E7> values = #C16;
   static const field self::E7 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&M7::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&M7::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -241,8 +241,8 @@
 class E8 extends self::_E8&_Enum&M8 /*isEnum*/  {
   static const field core::List<self::E8> values = #C18;
   static const field self::E8 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&M8::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&M8::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -266,8 +266,8 @@
 class E9 extends self::_E9&_Enum&A9 /*isEnum*/  {
   static const field core::List<self::E9> values = #C20;
   static const field self::E9 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super self::_E9&_Enum&A9::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super self::_E9&_Enum&A9::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -288,8 +288,8 @@
 class E10 extends self::_E10&_Enum&M10 /*isEnum*/  {
   static const field core::List<self::E10> values = #C22;
   static const field self::E10 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super self::_E10&_Enum&M10::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super self::_E10&_Enum&M10::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect
index 9ea4317..a09f4fc 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect
@@ -52,8 +52,8 @@
   final field self::E::X% field;
   static const field self::E<core::int> one = #C4;
   static const field self::E<core::String> two = #C7;
-  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E::X% field) → self::E<self::E::X%>
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect
index 9ea4317..a09f4fc 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect
@@ -52,8 +52,8 @@
   final field self::E::X% field;
   static const field self::E<core::int> one = #C4;
   static const field self::E<core::String> two = #C7;
-  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E::X% field) → self::E<self::E::X%>
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect
index c23f2d4..b4d7039 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect
@@ -52,8 +52,8 @@
   final field self::E::X% field;
   static const field self::E<core::int> one = #C4;
   static const field self::E<core::String> two = #C7;
-  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E::X% field) → self::E<self::E::X%>
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect
index c23f2d4..b4d7039 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect
@@ -52,8 +52,8 @@
   final field self::E::X% field;
   static const field self::E<core::int> one = #C4;
   static const field self::E<core::String> two = #C7;
-  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E::X% field) → self::E<self::E::X%>
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect
index cb1e18e..1166e43 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect
@@ -7,8 +7,8 @@
   final field self::E::X% field;
   static const field self::E<core::int> one = const self::E::•<core::int>(0, "one", 1);
   static const field self::E<core::String> two = const self::E::•<core::String>(1, "two", "2");
-  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E::X% field) → self::E<self::E::X%>
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect
index c23f2d4..b4d7039 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect
@@ -52,8 +52,8 @@
   final field self::E::X% field;
   static const field self::E<core::int> one = #C4;
   static const field self::E<core::String> two = #C7;
-  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E::X% field) → self::E<self::E::X%>
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect
index d250b38..80d05d0 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect
@@ -7,8 +7,8 @@
   final field core::String field;
   static const field self::E one = #C4;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::String field) → self::E
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::String field) → self::E
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   @#C10
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect
index d250b38..80d05d0 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect
@@ -7,8 +7,8 @@
   final field core::String field;
   static const field self::E one = #C4;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::String field) → self::E
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::String field) → self::E
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   @#C10
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect
index 87ec425..44da769 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect
@@ -7,8 +7,8 @@
   final field core::String field;
   static const field self::E one = #C4;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::String field) → self::E
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::String field) → self::E
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   @#C10
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect
index 87ec425..44da769 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect
@@ -7,8 +7,8 @@
   final field core::String field;
   static const field self::E one = #C4;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::String field) → self::E
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::String field) → self::E
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   @#C10
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect
index 264ede3..34965aa 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect
@@ -7,8 +7,8 @@
   final field core::String field;
   static const field self::E one = const self::E::•(0, "one", "foo");
   static const field self::E two = const self::E::•(1, "two", "bar");
-  const constructor •(core::int index, core::String name, core::String field) → self::E
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::String field) → self::E
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   @core::override
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect
index 87ec425..44da769 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect
@@ -7,8 +7,8 @@
   final field core::String field;
   static const field self::E one = #C4;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::String field) → self::E
-    : self::E::field = field, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::String field) → self::E
+    : self::E::field = field, super core::_Enum::•(#index, #name)
     ;
   @#C10
   method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.expect
index f964e09..f062cb7 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.expect
@@ -21,8 +21,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.transformed.expect
index f964e09..f062cb7 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.strong.transformed.expect
@@ -21,8 +21,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.expect
index 4aede41..3c3cc89 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.expect
@@ -21,8 +21,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.modular.expect
index 4aede41..3c3cc89 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.modular.expect
@@ -21,8 +21,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.outline.expect
index d61af01..1d48fb3 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.outline.expect
@@ -21,8 +21,8 @@
   static const field core::List<self::E> values = const <self::E>[self::E::e1, self::E::e2];
   static const field self::E e1 = const self::E::•(0, "e1");
   static const field self::E e2 = const self::E::•(1, "e2");
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.transformed.expect
index 4aede41..3c3cc89 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48181.dart.weak.transformed.expect
@@ -21,8 +21,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.expect
index d829c61..634e147 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E v = #C3;
-  const constructor •(core::int index, core::String name, dynamic _) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, dynamic _) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.transformed.expect
index d829c61..634e147 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.strong.transformed.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E v = #C3;
-  const constructor •(core::int index, core::String name, dynamic _) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, dynamic _) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.expect
index 018ab8b..96a123e 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E v = #C3;
-  const constructor •(core::int index, core::String name, dynamic _) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, dynamic _) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.modular.expect
index 018ab8b..96a123e 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.modular.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E v = #C3;
-  const constructor •(core::int index, core::String name, dynamic _) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, dynamic _) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.outline.expect
index b2e8953..6df93de 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.outline.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = const <self::E>[self::E::v];
   static const field self::E v = const self::E::•(0, "v", const <dynamic>[]);
-  const constructor •(core::int index, core::String name, dynamic _) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, dynamic _) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.transformed.expect
index 018ab8b..96a123e 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48232.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E v = #C3;
-  const constructor •(core::int index, core::String name, dynamic _) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, dynamic _) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
index bd7335d..13f3a0c 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
@@ -18,8 +18,8 @@
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
   static const field self::E e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&M1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&M1::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
index 830bd89..453368a 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
@@ -18,8 +18,8 @@
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
   static const field self::E e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&M1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&M1::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect
index c400ee6..f096f3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect
@@ -18,8 +18,8 @@
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
   static const field self::E e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&M1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&M1::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect
index c400ee6..f096f3a 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect
@@ -18,8 +18,8 @@
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
   static const field self::E e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&M1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&M1::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect
index 4ed3de3..f10ecff 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect
@@ -18,7 +18,7 @@
   static const field self::E e1 = const self::E::•(0, "e1");
   static const field self::E e2 = const self::E::•(1, "e2");
   static const field self::E e3 = const self::E::•(2, "e3");
-  const constructor •(core::int index, core::String name) → self::E
+  const constructor •(core::int #index, core::String #name) → self::E
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect
index cf0dbb9..9332629 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect
@@ -18,8 +18,8 @@
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
   static const field self::E e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&M1::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&M1::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.expect
index 022e129..bd60f7d 100644
--- a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.transformed.expect
index 022e129..bd60f7d 100644
--- a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.strong.transformed.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.expect
index 022e129..bd60f7d 100644
--- a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.modular.expect
index 022e129..bd60f7d 100644
--- a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.modular.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.outline.expect
index c6d15b1..6c0f5e4 100644
--- a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.outline.expect
@@ -32,9 +32,9 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
+  constructor •(core::int #index, core::String #name) → self::E1
     ;
-  constructor named(core::int index, core::String name) → self::E1
+  constructor named(core::int #index, core::String #name) → self::E1
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,12 +43,12 @@
   static const field core::List<self::E2> values = const <self::E2>[self::E2::one, self::E2::two];
   static const field self::E2 one = const self::E2::named1(0, "one");
   static const field self::E2 two = const self::E2::named2(1, "two");
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.transformed.expect
index 022e129..bd60f7d 100644
--- a/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart.weak.transformed.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.expect
index f257434..49a7cc0 100644
--- a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.transformed.expect
index f257434..49a7cc0 100644
--- a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.strong.transformed.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.expect
index 756f859..e8cdf0b 100644
--- a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.modular.expect
index 756f859..e8cdf0b 100644
--- a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.modular.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.outline.expect
index 5cd70a0..2f7185b 100644
--- a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.outline.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::E> values = const <self::E>[self::E::e1, self::E::e2];
   static const field self::E e1 = const self::E::•(0, "e1");
   static const field self::E e2 = const self::E::•(1, "e2");
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.transformed.expect
index 756f859..e8cdf0b 100644
--- a/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/member_values_conflicts.dart.weak.transformed.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::E> values = #C7;
   static const field self::E e1 = #C3;
   static const field self::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect
index a026fd3..81da909 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect
@@ -9,8 +9,8 @@
   static field self::E staticFoo = self::E::f();
   static const field self::E one = #C5;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E
-    : self::E::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E
+    : self::E::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -28,8 +28,8 @@
   static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
   static const field self::E2<core::num> one = #C11;
   static const field self::E2<core::String> two = #C13;
-  const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo) → self::E2<self::E2::X%>
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect
index a026fd3..81da909 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect
@@ -9,8 +9,8 @@
   static field self::E staticFoo = self::E::f();
   static const field self::E one = #C5;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E
-    : self::E::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E
+    : self::E::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -28,8 +28,8 @@
   static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
   static const field self::E2<core::num> one = #C11;
   static const field self::E2<core::String> two = #C13;
-  const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo) → self::E2<self::E2::X%>
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect
index 2cd33ab..a1cd3da 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect
@@ -9,8 +9,8 @@
   static field self::E staticFoo = self::E::f();
   static const field self::E one = #C5;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E
-    : self::E::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E
+    : self::E::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -28,8 +28,8 @@
   static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
   static const field self::E2<core::num> one = #C11;
   static const field self::E2<core::String> two = #C13;
-  const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo) → self::E2<self::E2::X%>
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect
index 2cd33ab..a1cd3da 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect
@@ -9,8 +9,8 @@
   static field self::E staticFoo = self::E::f();
   static const field self::E one = #C5;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E
-    : self::E::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E
+    : self::E::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -28,8 +28,8 @@
   static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
   static const field self::E2<core::num> one = #C11;
   static const field self::E2<core::String> two = #C13;
-  const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo) → self::E2<self::E2::X%>
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect
index b88e3da..5cd9465 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect
@@ -9,8 +9,8 @@
   static field self::E staticFoo;
   static const field self::E one = const self::E::•(0, "one", 1);
   static const field self::E two = const self::E::•(1, "two", 2);
-  const constructor •(core::int index, core::String name, core::int foo) → self::E
-    : self::E::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E
+    : self::E::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -28,8 +28,8 @@
   static field () → self::E2<dynamic> staticFoo;
   static const field self::E2<core::num> one = const self::E2::•<core::num>(0, "one", 1);
   static const field self::E2<core::String> two = const self::E2::•<core::String>(1, "two", "2");
-  const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo) → self::E2<self::E2::X%>
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect
index 2cd33ab..a1cd3da 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect
@@ -9,8 +9,8 @@
   static field self::E staticFoo = self::E::f();
   static const field self::E one = #C5;
   static const field self::E two = #C8;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E
-    : self::E::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E
+    : self::E::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -28,8 +28,8 @@
   static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
   static const field self::E2<core::num> one = #C11;
   static const field self::E2<core::String> two = #C13;
-  const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo) → self::E2<self::E2::X%>
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect
index e03d77d..beb0d94 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect
@@ -8,8 +8,8 @@
   final field core::int bar;
   static const field self::E0 one = #C4;
   static const field self::E0 two = #C7;
-  const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
-    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
+    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E0.${this.{core::_Enum::_name}{core::String}}";
@@ -19,8 +19,8 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = #C11;
   static const field self::E1<core::int> two = #C12;
-  const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index = #C9, core::String #name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::E2<core::int, core::String, core::double> one = #C15;
   static const field self::E2<core::String, core::int, core::double> two = #C17;
   static const field self::E2<core::double, core::bool, dynamic> three = #C21;
-  const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
-    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect
index e03d77d..beb0d94 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect
@@ -8,8 +8,8 @@
   final field core::int bar;
   static const field self::E0 one = #C4;
   static const field self::E0 two = #C7;
-  const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
-    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
+    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E0.${this.{core::_Enum::_name}{core::String}}";
@@ -19,8 +19,8 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = #C11;
   static const field self::E1<core::int> two = #C12;
-  const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index = #C9, core::String #name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::E2<core::int, core::String, core::double> one = #C15;
   static const field self::E2<core::String, core::int, core::double> two = #C17;
   static const field self::E2<core::double, core::bool, dynamic> three = #C21;
-  const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
-    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect
index 18e6b35..67cb833 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect
@@ -8,8 +8,8 @@
   final field core::int bar;
   static const field self::E0 one = #C4;
   static const field self::E0 two = #C7;
-  const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
-    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
+    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E0.${this.{core::_Enum::_name}{core::String}}";
@@ -19,8 +19,8 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = #C11;
   static const field self::E1<core::int> two = #C12;
-  const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index = #C9, core::String #name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::E2<core::int, core::String, core::double> one = #C15;
   static const field self::E2<core::String, core::int, core::double> two = #C17;
   static const field self::E2<core::double, core::bool, dynamic> three = #C21;
-  const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
-    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect
index 18e6b35..67cb833 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect
@@ -8,8 +8,8 @@
   final field core::int bar;
   static const field self::E0 one = #C4;
   static const field self::E0 two = #C7;
-  const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
-    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
+    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E0.${this.{core::_Enum::_name}{core::String}}";
@@ -19,8 +19,8 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = #C11;
   static const field self::E1<core::int> two = #C12;
-  const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index = #C9, core::String #name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::E2<core::int, core::String, core::double> one = #C15;
   static const field self::E2<core::String, core::int, core::double> two = #C17;
   static const field self::E2<core::double, core::bool, dynamic> three = #C21;
-  const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
-    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
index 839811b..5e5053e 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
@@ -8,8 +8,8 @@
   final field core::int bar;
   static const field self::E0 one = const self::E0::•(0, "one", 1, bar: 1);
   static const field self::E0 two = const self::E0::•(1, "two", 2, bar: 2);
-  const constructor •(core::int index, core::String name, core::int foo, {required core::int bar = null}) → self::E0
-    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo, {required core::int bar = null}) → self::E0
+    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E0.${this.{core::_Enum::_name}{core::String}}";
@@ -19,8 +19,8 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = const self::E1::•<core::String>(0, "one", foo: "1");
   static const field self::E1<core::int> two = const self::E1::•<core::int>(1, "two", foo: 2);
-  const constructor •(core::int index, core::String name, {required self::E1::X% foo = null}) → self::E1<self::E1::X%>
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, {required self::E1::X% foo = null}) → self::E1<self::E1::X%>
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::E2<core::int, core::String, core::double> one = const self::E2::•<core::int, core::String, core::double>(0, "one", 1, bar: "1", baz: 3.14);
   static const field self::E2<core::String, core::int, core::double> two = const self::E2::•<core::String, core::int, core::double>(1, "two", "2", baz: 3.14, bar: 2);
   static const field self::E2<core::double, core::bool, dynamic> three = const self::E2::•<core::double, core::bool, dynamic>(2, "three", 3.0, bar: false);
-  const constructor •(core::int index, core::String name, self::E2::X% foo, {required self::E2::Y% bar = null, has-declared-initializer self::E2::Z? baz = null}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
-    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, {required self::E2::Y% bar = null, has-declared-initializer self::E2::Z? baz = null}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect
index 18e6b35..67cb833 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect
@@ -8,8 +8,8 @@
   final field core::int bar;
   static const field self::E0 one = #C4;
   static const field self::E0 two = #C7;
-  const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
-    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
+    : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E0.${this.{core::_Enum::_name}{core::String}}";
@@ -19,8 +19,8 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = #C11;
   static const field self::E1<core::int> two = #C12;
-  const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index = #C9, core::String #name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -33,8 +33,8 @@
   static const field self::E2<core::int, core::String, core::double> one = #C15;
   static const field self::E2<core::String, core::int, core::double> two = #C17;
   static const field self::E2<core::double, core::bool, dynamic> three = #C21;
-  const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
-    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, has-declared-initializer self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+    : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect
index 1d119a5..4bc27a3 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect
@@ -11,17 +11,17 @@
   static const field self::C d = #C13;
   static const field self::C e = #C16;
   static const field self::C f = #C19;
-  const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
-    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int x, core::int y, {core::int z = #C21}) → self::C
+    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(#index, #name)
     ;
-  const constructor named1(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : this self::C::•(index, name, x, y, z: z)
+  const constructor named1(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : this self::C::•(#index, #name, x, y, z: z)
     ;
-  const constructor named2(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t1 = index, final core::String #t2 = name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
+  const constructor named2(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t1 = #index, final core::String #t2 = #name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
     ;
-  const constructor named3(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t5 = index, final core::String #t6 = name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
+  const constructor named3(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t5 = #index, final core::String #t6 = #name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
     ;
   method toString() → core::String
     return "C.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect
index 1d119a5..4bc27a3 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect
@@ -11,17 +11,17 @@
   static const field self::C d = #C13;
   static const field self::C e = #C16;
   static const field self::C f = #C19;
-  const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
-    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int x, core::int y, {core::int z = #C21}) → self::C
+    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(#index, #name)
     ;
-  const constructor named1(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : this self::C::•(index, name, x, y, z: z)
+  const constructor named1(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : this self::C::•(#index, #name, x, y, z: z)
     ;
-  const constructor named2(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t1 = index, final core::String #t2 = name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
+  const constructor named2(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t1 = #index, final core::String #t2 = #name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
     ;
-  const constructor named3(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t5 = index, final core::String #t6 = name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
+  const constructor named3(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t5 = #index, final core::String #t6 = #name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
     ;
   method toString() → core::String
     return "C.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect
index 20fc39a..e5a2de2 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect
@@ -11,17 +11,17 @@
   static const field self::C d = #C13;
   static const field self::C e = #C16;
   static const field self::C f = #C19;
-  const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
-    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int x, core::int y, {core::int z = #C21}) → self::C
+    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(#index, #name)
     ;
-  const constructor named1(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : this self::C::•(index, name, x, y, z: z)
+  const constructor named1(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : this self::C::•(#index, #name, x, y, z: z)
     ;
-  const constructor named2(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t1 = index, final core::String #t2 = name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
+  const constructor named2(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t1 = #index, final core::String #t2 = #name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
     ;
-  const constructor named3(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t5 = index, final core::String #t6 = name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
+  const constructor named3(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t5 = #index, final core::String #t6 = #name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
     ;
   method toString() → core::String
     return "C.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect
index 20fc39a..e5a2de2 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect
@@ -11,17 +11,17 @@
   static const field self::C d = #C13;
   static const field self::C e = #C16;
   static const field self::C f = #C19;
-  const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
-    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int x, core::int y, {core::int z = #C21}) → self::C
+    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(#index, #name)
     ;
-  const constructor named1(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : this self::C::•(index, name, x, y, z: z)
+  const constructor named1(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : this self::C::•(#index, #name, x, y, z: z)
     ;
-  const constructor named2(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t1 = index, final core::String #t2 = name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
+  const constructor named2(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t1 = #index, final core::String #t2 = #name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
     ;
-  const constructor named3(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t5 = index, final core::String #t6 = name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
+  const constructor named3(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t5 = #index, final core::String #t6 = #name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
     ;
   method toString() → core::String
     return "C.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect
index d5fea66..336105f 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect
@@ -11,17 +11,17 @@
   static const field self::C d = const self::C::named1(3, "d", 1, 2, 3);
   static const field self::C e = const self::C::named2(4, "e", 1, 2, 3);
   static const field self::C f = const self::C::named3(5, "f", 1, 2, 3);
-  const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = 42}) → self::C
-    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int x, core::int y, {core::int z = 42}) → self::C
+    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(#index, #name)
     ;
-  const constructor named1(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : this self::C::•(index, name, x, y, z: z)
+  const constructor named1(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : this self::C::•(#index, #name, x, y, z: z)
     ;
-  const constructor named2(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t8 = index, final core::String #t9 = name, final core::int #t10 = x, final core::int #t11 = z, this self::C::•(#t8, #t9, #t10, y, z: #t11)
+  const constructor named2(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t8 = #index, final core::String #t9 = #name, final core::int #t10 = x, final core::int #t11 = z, this self::C::•(#t8, #t9, #t10, y, z: #t11)
     ;
-  const constructor named3(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t12 = index, final core::String #t13 = name, final core::int #t14 = z, this self::C::•(#t12, #t13, x, y, z: #t14)
+  const constructor named3(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t12 = #index, final core::String #t13 = #name, final core::int #t14 = z, this self::C::•(#t12, #t13, x, y, z: #t14)
     ;
   method toString() → core::String
     return "C.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect
index 20fc39a..e5a2de2 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect
@@ -11,17 +11,17 @@
   static const field self::C d = #C13;
   static const field self::C e = #C16;
   static const field self::C f = #C19;
-  const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
-    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int x, core::int y, {core::int z = #C21}) → self::C
+    : self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(#index, #name)
     ;
-  const constructor named1(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : this self::C::•(index, name, x, y, z: z)
+  const constructor named1(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : this self::C::•(#index, #name, x, y, z: z)
     ;
-  const constructor named2(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t1 = index, final core::String #t2 = name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
+  const constructor named2(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t1 = #index, final core::String #t2 = #name, final core::int #t3 = x, final core::int #t4 = z, this self::C::•(#t1, #t2, #t3, y, z: #t4)
     ;
-  const constructor named3(core::int index, core::String name, core::int x, core::int y, core::int z) → self::C
-    : final core::int #t5 = index, final core::String #t6 = name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
+  const constructor named3(core::int #index, core::String #name, core::int x, core::int y, core::int z) → self::C
+    : final core::int #t5 = #index, final core::String #t6 = #name, final core::int #t7 = z, this self::C::•(#t5, #t6, x, y, z: #t7)
     ;
   method toString() → core::String
     return "C.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.expect
index 309b974..6146329 100644
--- a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E a = #C3;
-  const constructor b(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor b(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.transformed.expect
index 309b974..6146329 100644
--- a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.transformed.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E a = #C3;
-  const constructor b(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor b(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.expect
index 8f727d4..5c2f45b 100644
--- a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E a = #C3;
-  const constructor b(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor b(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.modular.expect
index 8f727d4..5c2f45b 100644
--- a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.modular.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E a = #C3;
-  const constructor b(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor b(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.outline.expect
index cf85d8d..91a5f1f 100644
--- a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.outline.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = const <self::E>[self::E::a];
   static const field self::E a = const self::E::b(0, "a");
-  const constructor b(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor b(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.transformed.expect
index 8f727d4..5c2f45b 100644
--- a/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E a = #C3;
-  const constructor b(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor b(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.expect
index a8b2f34..d8c0828 100644
--- a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.expect
@@ -17,8 +17,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.transformed.expect
index a8b2f34..d8c0828 100644
--- a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.strong.transformed.expect
@@ -17,8 +17,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.expect
index f5d37c6..0e3991a5 100644
--- a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.expect
@@ -17,8 +17,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.modular.expect
index f5d37c6..0e3991a5 100644
--- a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.modular.expect
@@ -17,8 +17,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.outline.expect
index 55b1431..44a4667 100644
--- a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.outline.expect
@@ -17,8 +17,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = const <self::E>[self::E::element];
   static const field self::E element = const self::E::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.transformed.expect
index f5d37c6..0e3991a5 100644
--- a/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/recovery_in_elements.dart.weak.transformed.expect
@@ -17,8 +17,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect
index 2e42601..3195885 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect
@@ -23,11 +23,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : this self::E1::•(index, name, value)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : this self::E1::•(#index, #name, value)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,10 +43,10 @@
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
                                   ^";
-  const constructor •(core::int index, core::String name, core::int foo) → self::E2
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E2
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E2
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E2
     : self::E2::foo = null, final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect
index 2e42601..3195885 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect
@@ -23,11 +23,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : this self::E1::•(index, name, value)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : this self::E1::•(#index, #name, value)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,10 +43,10 @@
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
                                   ^";
-  const constructor •(core::int index, core::String name, core::int foo) → self::E2
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E2
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E2
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E2
     : self::E2::foo = null, final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect
index 6b1338a..f83c50a 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect
@@ -23,11 +23,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : this self::E1::•(index, name, value)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : this self::E1::•(#index, #name, value)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,10 +43,10 @@
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
                                   ^";
-  const constructor •(core::int index, core::String name, core::int foo) → self::E2
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E2
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E2
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E2
     : self::E2::foo = null, final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect
index 6b1338a..f83c50a 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect
@@ -23,11 +23,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : this self::E1::•(index, name, value)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : this self::E1::•(#index, #name, value)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,10 +43,10 @@
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
                                   ^";
-  const constructor •(core::int index, core::String name, core::int foo) → self::E2
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E2
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E2
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E2
     : self::E2::foo = null, final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect
index b00ddd1..b30b612 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect
@@ -15,11 +15,11 @@
   final field core::int foo;
   static const field self::E1 one = const self::E1::•(0, "one", 1);
   static const field self::E1 two = const self::E1::named(1, "two", 2);
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : this self::E1::•(index, name, value)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : this self::E1::•(#index, #name, value)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -29,10 +29,10 @@
   final field core::int foo;
   static const field self::E2 one = const self::E2::•(0, "one", 1);
   static const field self::E2 two = const self::E2::named(1, "two", 2);
-  const constructor •(core::int index, core::String name, core::int foo) → self::E2
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E2
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E2
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect
index 6b1338a..f83c50a 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect
@@ -23,11 +23,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : this self::E1::•(index, name, value)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : this self::E1::•(#index, #name, value)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,10 +43,10 @@
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
                                   ^";
-  const constructor •(core::int index, core::String name, core::int foo) → self::E2
-    : self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E2
+    : self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E2
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E2
     : self::E2::foo = null, final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   const E2.named(int value) : this(value, value); // Error.
diff --git a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.expect
index e34c005..e0d5af2 100644
--- a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.expect
@@ -17,8 +17,8 @@
   static const field core::List<self::E<dynamic>> values = #C7;
   static const field self::E<core::int> element = #C3;
   static const field self::E<core::int> element2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::T%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.transformed.expect
index e34c005..e0d5af2 100644
--- a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.strong.transformed.expect
@@ -17,8 +17,8 @@
   static const field core::List<self::E<dynamic>> values = #C7;
   static const field self::E<core::int> element = #C3;
   static const field self::E<core::int> element2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::T%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.expect
index 117fd4f..d56028e 100644
--- a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.expect
@@ -17,8 +17,8 @@
   static const field core::List<self::E<dynamic>> values = #C7;
   static const field self::E<core::int> element = #C3;
   static const field self::E<core::int> element2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::T%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.modular.expect
index 117fd4f..d56028e 100644
--- a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.modular.expect
@@ -17,8 +17,8 @@
   static const field core::List<self::E<dynamic>> values = #C7;
   static const field self::E<core::int> element = #C3;
   static const field self::E<core::int> element2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::T%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.outline.expect
index adc5a7d..99ad203 100644
--- a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.outline.expect
@@ -17,8 +17,8 @@
   static const field core::List<self::E<dynamic>> values = const <self::E<dynamic>>[self::E::element, self::E::element2];
   static const field self::E<core::int> element = const self::E::•<core::int>(0, "element");
   static const field self::E<core::int> element2 = const self::E::•<core::int>(1, "element2");
-  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::T%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.transformed.expect
index 117fd4f..d56028e 100644
--- a/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/setter_getter_type_check.dart.weak.transformed.expect
@@ -17,8 +17,8 @@
   static const field core::List<self::E<dynamic>> values = #C7;
   static const field self::E<core::int> element = #C3;
   static const field self::E<core::int> element2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E<self::E::T%>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::T%>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect
index 375eda9..8d7b750 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect
@@ -7,11 +7,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : self::E1::foo = value, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : self::E1::foo = value, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,11 +23,11 @@
   static const field self::E2<core::int, core::String> one = #C9;
   static const field self::E2<core::int, core::String> two = #C10;
   static const field self::E2<core::String, core::String> three = #C12;
-  const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect
index 375eda9..8d7b750 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect
@@ -7,11 +7,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : self::E1::foo = value, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : self::E1::foo = value, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,11 +23,11 @@
   static const field self::E2<core::int, core::String> one = #C9;
   static const field self::E2<core::int, core::String> two = #C10;
   static const field self::E2<core::String, core::String> three = #C12;
-  const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect
index 88a8796..c2e56ff 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect
@@ -7,11 +7,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : self::E1::foo = value, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : self::E1::foo = value, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,11 +23,11 @@
   static const field self::E2<core::int, core::String> one = #C9;
   static const field self::E2<core::int, core::String> two = #C10;
   static const field self::E2<core::String, core::String> three = #C12;
-  const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect
index 88a8796..c2e56ff 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect
@@ -7,11 +7,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : self::E1::foo = value, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : self::E1::foo = value, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,11 +23,11 @@
   static const field self::E2<core::int, core::String> one = #C9;
   static const field self::E2<core::int, core::String> two = #C10;
   static const field self::E2<core::String, core::String> three = #C12;
-  const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect
index f072647..53ad01d 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect
@@ -7,11 +7,11 @@
   final field core::int foo;
   static const field self::E1 one = const self::E1::•(0, "one", 1);
   static const field self::E1 two = const self::E1::named(1, "two", 2);
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : self::E1::foo = value, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : self::E1::foo = value, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,11 +23,11 @@
   static const field self::E2<core::int, core::String> one = const self::E2::•<core::int, core::String>(0, "one", 1, "one");
   static const field self::E2<core::int, core::String> two = const self::E2::named<core::int, core::String>(1, "two", "two", 2);
   static const field self::E2<core::String, core::String> three = const self::E2::named<core::String, core::String>(2, "three", "three", "three");
-  const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect
index 88a8796..c2e56ff 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect
@@ -7,11 +7,11 @@
   final field core::int foo;
   static const field self::E1 one = #C4;
   static const field self::E1 two = #C7;
-  const constructor •(core::int index, core::String name, core::int foo) → self::E1
-    : self::E1::foo = foo, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, core::int foo) → self::E1
+    : self::E1::foo = foo, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, core::int value) → self::E1
-    : self::E1::foo = value, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, core::int value) → self::E1
+    : self::E1::foo = value, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -23,11 +23,11 @@
   static const field self::E2<core::int, core::String> one = #C9;
   static const field self::E2<core::int, core::String> two = #C10;
   static const field self::E2<core::String, core::String> three = #C12;
-  const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(#index, #name)
     ;
-  const constructor named(core::int index, core::String name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
-    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name, self::E2::Y% bar, self::E2::X% foo) → self::E2<self::E2::X%, self::E2::Y%>
+    : self::E2::bar = bar, self::E2::foo = foo, super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.expect
index 0e0079c..b5b0c7e 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.expect
@@ -39,8 +39,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -50,8 +50,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -60,8 +60,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -71,8 +71,8 @@
   static const field core::List<self::E4> values = #C16;
   static const field self::E4 one = #C14;
   static const field self::E4 two = #C15;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.transformed.expect
index 0e0079c..b5b0c7e 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.strong.transformed.expect
@@ -39,8 +39,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -50,8 +50,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -60,8 +60,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -71,8 +71,8 @@
   static const field core::List<self::E4> values = #C16;
   static const field self::E4 one = #C14;
   static const field self::E4 two = #C15;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.expect
index 14829b4..427e319 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.expect
@@ -39,8 +39,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -50,8 +50,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -60,8 +60,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -71,8 +71,8 @@
   static const field core::List<self::E4> values = #C16;
   static const field self::E4 one = #C14;
   static const field self::E4 two = #C15;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.modular.expect
index 14829b4..427e319 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.modular.expect
@@ -39,8 +39,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -50,8 +50,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -60,8 +60,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -71,8 +71,8 @@
   static const field core::List<self::E4> values = #C16;
   static const field self::E4 one = #C14;
   static const field self::E4 two = #C15;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.outline.expect
index 02c7b48..f1db02b 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.outline.expect
@@ -32,8 +32,8 @@
   static const field core::List<self::E1> values = const <self::E1>[self::E1::one, self::E1::two];
   static const field self::E1 one = const self::E1::•(0, "one");
   static const field self::E1 two = const self::E1::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -44,8 +44,8 @@
   static const field core::List<self::E2> values = const <self::E2>[self::E2::one, self::E2::two];
   static const field self::E2 one = const self::E2::•(0, "one");
   static const field self::E2 two = const self::E2::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -54,8 +54,8 @@
   static const field core::List<self::E3> values = const <self::E3>[self::E3::one, self::E3::two];
   static const field self::E3 one = const self::E3::•(0, "one");
   static const field self::E3 two = const self::E3::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -66,8 +66,8 @@
   static const field core::List<self::E4> values = const <self::E4>[self::E4::one, self::E4::two];
   static const field self::E4 one = const self::E4::•(0, "one");
   static const field self::E4 two = const self::E4::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.transformed.expect
index 14829b4..427e319 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart.weak.transformed.expect
@@ -39,8 +39,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -50,8 +50,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -60,8 +60,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -71,8 +71,8 @@
   static const field core::List<self::E4> values = #C16;
   static const field self::E4 one = #C14;
   static const field self::E4 two = #C15;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
index 16540f3..9874f5a 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
@@ -32,8 +32,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -56,8 +56,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A&B::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -73,8 +73,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
index ceb7cd71..3d4428c 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
@@ -32,8 +32,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -56,8 +56,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A&B::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -74,8 +74,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect
index 62be6f0..6929e27 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect
@@ -32,8 +32,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -56,8 +56,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A&B::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -73,8 +73,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect
index 62be6f0..6929e27 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect
@@ -32,8 +32,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -56,8 +56,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A&B::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -73,8 +73,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect
index d37a555..042e8f1 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect
@@ -29,7 +29,7 @@
   static const field core::List<self::E1> values = const <self::E1>[self::E1::one, self::E1::two];
   static const field self::E1 one = const self::E1::•(0, "one");
   static const field self::E1 two = const self::E1::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E1
+  const constructor •(core::int #index, core::String #name) → self::E1
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -52,7 +52,7 @@
   static const field core::List<self::E2> values = const <self::E2>[self::E2::one, self::E2::two];
   static const field self::E2 one = const self::E2::•(0, "one");
   static const field self::E2 two = const self::E2::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E2
+  const constructor •(core::int #index, core::String #name) → self::E2
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -68,7 +68,7 @@
   static const field core::List<self::E3> values = const <self::E3>[self::E3::one, self::E3::two];
   static const field self::E3 one = const self::E3::•(0, "one");
   static const field self::E3 two = const self::E3::•(1, "two");
-  const constructor •(core::int index, core::String name) → self::E3
+  const constructor •(core::int #index, core::String #name) → self::E3
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect
index fcb9129..df7c1ae 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect
@@ -32,8 +32,8 @@
   static const field core::List<self::E1> values = #C7;
   static const field self::E1 one = #C3;
   static const field self::E1 two = #C6;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super self::_E1&_Enum&A::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super self::_E1&_Enum&A::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -56,8 +56,8 @@
   static const field core::List<self::E2> values = #C10;
   static const field self::E2 one = #C8;
   static const field self::E2 two = #C9;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super self::_E2&_Enum&A&B::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super self::_E2&_Enum&A&B::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -74,8 +74,8 @@
   static const field core::List<self::E3> values = #C13;
   static const field self::E3 one = #C11;
   static const field self::E3 two = #C12;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super self::_E3&_Enum&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super self::_E3&_Enum&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.expect
index d03a931..de11995 100644
--- a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.transformed.expect
index d03a931..de11995 100644
--- a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.strong.transformed.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.expect
index d03a931..de11995 100644
--- a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.modular.expect
index d03a931..de11995 100644
--- a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.modular.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.outline.expect
index 35667795..4fe4c5c 100644
--- a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.outline.expect
@@ -32,9 +32,9 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
+  constructor •(core::int #index, core::String #name) → self::E1
     ;
-  constructor named(core::int index, core::String name) → self::E1
+  constructor named(core::int #index, core::String #name) → self::E1
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -43,12 +43,12 @@
   static const field core::List<self::E2> values = const <self::E2>[self::E2::one, self::E2::two];
   static const field self::E2 one = const self::E2::named1(0, "one");
   static const field self::E2 two = const self::E2::named2(1, "two");
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.transformed.expect
index d03a931..de11995 100644
--- a/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart.weak.transformed.expect
@@ -35,11 +35,11 @@
 Try using a constructor or factory that is 'const'.
   element;
   ^";
-  constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
-  constructor named(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  constructor named(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -54,12 +54,12 @@
   static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^";
-  const constructor named1(core::int index, core::String name) → self::E2
+  const constructor named1(core::int #index, core::String #name) → self::E2
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:16:23: Error: Enum constructors can't contain super-initializers.
   const E2.named1() : super(); // Error.
                       ^"
     ;
-  const constructor named2(core::int index, core::String name) → self::E2
+  const constructor named2(core::int #index, core::String #name) → self::E2
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/enhanced_enums/super_parameters/malformed_constructors.dart:17:23: Error: Enum constructors can't contain super-initializers.
   const E2.named2() : super(42, \"42\"); // Error.
                       ^"
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
index f4b5349..29c7b15 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
@@ -29,8 +29,8 @@
 class E<S extends core::num, T extends core::num> extends self::_E&_Enum&GM&M<self::E::S, self::E::T> implements self::I, self::GI<self::E::S> /*isEnum*/  {
   static const field core::List<self::E<core::num, core::num>> values = #C4;
   static const field self::E<core::num, core::num> element = #C3;
-  const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
-    : super self::_E&_Enum&GM&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::S, self::E::T>
+    : super self::_E&_Enum&GM&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
index da949ab..937ba86 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
@@ -29,8 +29,8 @@
 class E<S extends core::num, T extends core::num> extends self::_E&_Enum&GM&M<self::E::S, self::E::T> implements self::I, self::GI<self::E::S> /*isEnum*/  {
   static const field core::List<self::E<core::num, core::num>> values = #C4;
   static const field self::E<core::num, core::num> element = #C3;
-  const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
-    : super self::_E&_Enum&GM&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::S, self::E::T>
+    : super self::_E&_Enum&GM&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect
index 5e0c562..a4248f3 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect
@@ -29,8 +29,8 @@
 class E<S extends core::num, T extends core::num> extends self::_E&_Enum&GM&M<self::E::S, self::E::T> implements self::I, self::GI<self::E::S> /*isEnum*/  {
   static const field core::List<self::E<core::num, core::num>> values = #C4;
   static const field self::E<core::num, core::num> element = #C3;
-  const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
-    : super self::_E&_Enum&GM&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::S, self::E::T>
+    : super self::_E&_Enum&GM&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect
index 5e0c562..a4248f3 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect
@@ -29,8 +29,8 @@
 class E<S extends core::num, T extends core::num> extends self::_E&_Enum&GM&M<self::E::S, self::E::T> implements self::I, self::GI<self::E::S> /*isEnum*/  {
   static const field core::List<self::E<core::num, core::num>> values = #C4;
   static const field self::E<core::num, core::num> element = #C3;
-  const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
-    : super self::_E&_Enum&GM&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::S, self::E::T>
+    : super self::_E&_Enum&GM&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect
index b8c85bc..d778e8b 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect
@@ -27,7 +27,7 @@
 class E<S extends core::num, T extends core::num> extends self::_E&_Enum&GM&M<self::E::S, self::E::T> implements self::I, self::GI<self::E::S> /*isEnum*/  {
   static const field core::List<self::E<core::num, core::num>> values = const <self::E<dynamic, dynamic>>[self::E::element];
   static const field self::E<core::num, core::num> element = const self::E::•<core::num, core::num>(0, "element");
-  const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::S, self::E::T>
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect
index 737b8b8..ef21642 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect
@@ -29,8 +29,8 @@
 class E<S extends core::num, T extends core::num> extends self::_E&_Enum&GM&M<self::E::S, self::E::T> implements self::I, self::GI<self::E::S> /*isEnum*/  {
   static const field core::List<self::E<core::num, core::num>> values = #C4;
   static const field self::E<core::num, core::num> element = #C3;
-  const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
-    : super self::_E&_Enum&GM&M::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E<self::E::S, self::E::T>
+    : super self::_E&_Enum&GM&M::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.expect
index 68a491f..a32b8d5 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.expect
@@ -15,8 +15,8 @@
   @#C12
   static const field self::Foo baz = #C6;
   static const field self::Foo cafebabe = #C9;
-  const constructor •(core::int index, core::String name) → self::Foo
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Foo
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.modular.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.modular.expect
index 68a491f..a32b8d5 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.modular.expect
@@ -15,8 +15,8 @@
   @#C12
   static const field self::Foo baz = #C6;
   static const field self::Foo cafebabe = #C9;
-  const constructor •(core::int index, core::String name) → self::Foo
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Foo
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.outline.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.outline.expect
index 42e2727..42b2ef2 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.outline.expect
@@ -15,8 +15,8 @@
   @self::Fisk::fisk<core::int>(self::hest)
   static const field self::Foo baz = const self::Foo::•(1, "baz");
   static const field self::Foo cafebabe = const self::Foo::•(2, "cafebabe");
-  const constructor •(core::int index, core::String name) → self::Foo
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Foo
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.transformed.expect
index 68a491f..a32b8d5 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.weak.transformed.expect
@@ -15,8 +15,8 @@
   @#C12
   static const field self::Foo baz = #C6;
   static const field self::Foo cafebabe = #C9;
-  const constructor •(core::int index, core::String name) → self::Foo
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Foo
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_enums.dart.weak.expect b/pkg/front_end/testcases/general/bounds_enums.dart.weak.expect
index 0ac15942..b11dd0c 100644
--- a/pkg/front_end/testcases/general/bounds_enums.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bounds_enums.dart.weak.expect
@@ -26,8 +26,8 @@
 class E1<Y extends (self::E1::Y) → self::E1::Y = (dynamic) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1<(dynamic) → dynamic>> values = #C4;
   static const field self::E1<Never> e1 = #C3;
-  const constructor •(core::int index, core::String name) → self::E1<self::E1::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1<self::E1::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -35,8 +35,8 @@
 class E2<Y extends self::B<self::E2::Y> = self::B<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<self::B<dynamic>>> values = #C7;
   static const field self::E2<Never> e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E2<self::E2::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2<self::E2::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -44,8 +44,8 @@
 class E3<Y extends self::E3<self::E3::Y> = self::E3<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<self::E3<dynamic>>> values = #C10;
   static const field self::E3<Never> e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_enums.dart.weak.modular.expect b/pkg/front_end/testcases/general/bounds_enums.dart.weak.modular.expect
index 0ac15942..b11dd0c 100644
--- a/pkg/front_end/testcases/general/bounds_enums.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/bounds_enums.dart.weak.modular.expect
@@ -26,8 +26,8 @@
 class E1<Y extends (self::E1::Y) → self::E1::Y = (dynamic) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1<(dynamic) → dynamic>> values = #C4;
   static const field self::E1<Never> e1 = #C3;
-  const constructor •(core::int index, core::String name) → self::E1<self::E1::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1<self::E1::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -35,8 +35,8 @@
 class E2<Y extends self::B<self::E2::Y> = self::B<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<self::B<dynamic>>> values = #C7;
   static const field self::E2<Never> e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E2<self::E2::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2<self::E2::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -44,8 +44,8 @@
 class E3<Y extends self::E3<self::E3::Y> = self::E3<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<self::E3<dynamic>>> values = #C10;
   static const field self::E3<Never> e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_enums.dart.weak.outline.expect b/pkg/front_end/testcases/general/bounds_enums.dart.weak.outline.expect
index 8034688..59bc638 100644
--- a/pkg/front_end/testcases/general/bounds_enums.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/bounds_enums.dart.weak.outline.expect
@@ -25,8 +25,8 @@
 class E1<Y extends (self::E1::Y) → self::E1::Y = (dynamic) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1<(dynamic) → dynamic>> values = const <self::E1<dynamic>>[self::E1::e1];
   static const field self::E1<Never> e1 = const self::E1::•<Never>(0, "e1");
-  const constructor •(core::int index, core::String name) → self::E1<self::E1::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1<self::E1::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -34,8 +34,8 @@
 class E2<Y extends self::B<self::E2::Y> = self::B<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<self::B<dynamic>>> values = const <self::E2<dynamic>>[self::E2::e2];
   static const field self::E2<Never> e2 = const self::E2::•<Never>(0, "e2");
-  const constructor •(core::int index, core::String name) → self::E2<self::E2::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2<self::E2::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -43,8 +43,8 @@
 class E3<Y extends self::E3<self::E3::Y> = self::E3<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<self::E3<dynamic>>> values = const <self::E3<dynamic>>[self::E3::e3];
   static const field self::E3<Never> e3 = const self::E3::•<Never>(0, "e3");
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_enums.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bounds_enums.dart.weak.transformed.expect
index 0ac15942..b11dd0c 100644
--- a/pkg/front_end/testcases/general/bounds_enums.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_enums.dart.weak.transformed.expect
@@ -26,8 +26,8 @@
 class E1<Y extends (self::E1::Y) → self::E1::Y = (dynamic) → dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1<(dynamic) → dynamic>> values = #C4;
   static const field self::E1<Never> e1 = #C3;
-  const constructor •(core::int index, core::String name) → self::E1<self::E1::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1<self::E1::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -35,8 +35,8 @@
 class E2<Y extends self::B<self::E2::Y> = self::B<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2<self::B<dynamic>>> values = #C7;
   static const field self::E2<Never> e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::E2<self::E2::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2<self::E2::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -44,8 +44,8 @@
 class E3<Y extends self::E3<self::E3::Y> = self::E3<dynamic>> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3<self::E3<dynamic>>> values = #C10;
   static const field self::E3<Never> e3 = #C9;
-  const constructor •(core::int index, core::String name) → self::E3<self::E3::Y>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3<self::E3::Y>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.expect
index 4b8667d..f442996 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.expect
@@ -1042,8 +1042,8 @@
 class EnumImplementsT1 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT1> values = #C4;
   static const field self::EnumImplementsT1 a = #C3;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1051,8 +1051,8 @@
 class EnumImplementsT2 extends core::_Enum implements self::Class<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT2> values = #C6;
   static const field self::EnumImplementsT2 a = #C5;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1060,8 +1060,8 @@
 class EnumImplementsT3 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT3> values = #C8;
   static const field self::EnumImplementsT3 a = #C7;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1069,8 +1069,8 @@
 class EnumImplementsT4 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT4> values = #C10;
   static const field self::EnumImplementsT4 a = #C9;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1078,8 +1078,8 @@
 class EnumImplementsT5 extends core::_Enum implements self::Class<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT5> values = #C12;
   static const field self::EnumImplementsT5 a = #C11;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1087,8 +1087,8 @@
 class EnumImplementsT6 extends core::_Enum implements self::Class<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT6> values = #C14;
   static const field self::EnumImplementsT6 a = #C13;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1096,8 +1096,8 @@
 class EnumImplementsT7 extends core::_Enum implements self::Class<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT7> values = #C16;
   static const field self::EnumImplementsT7 a = #C15;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1105,8 +1105,8 @@
 class EnumImplementsT8 extends core::_Enum implements self::Class<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT8> values = #C18;
   static const field self::EnumImplementsT8 a = #C17;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1114,8 +1114,8 @@
 class EnumImplementsS1 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS1> values = #C20;
   static const field self::EnumImplementsS1 a = #C19;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1123,8 +1123,8 @@
 class EnumImplementsS2 extends core::_Enum implements self::G<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS2> values = #C22;
   static const field self::EnumImplementsS2 a = #C21;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1132,8 +1132,8 @@
 class EnumImplementsS3 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS3> values = #C24;
   static const field self::EnumImplementsS3 a = #C23;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1141,8 +1141,8 @@
 class EnumImplementsS4 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS4> values = #C26;
   static const field self::EnumImplementsS4 a = #C25;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1150,8 +1150,8 @@
 class EnumImplementsS5 extends core::_Enum implements self::G<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS5> values = #C28;
   static const field self::EnumImplementsS5 a = #C27;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1159,8 +1159,8 @@
 class EnumImplementsS6 extends core::_Enum implements self::G<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS6> values = #C30;
   static const field self::EnumImplementsS6 a = #C29;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1168,8 +1168,8 @@
 class EnumImplementsS7 extends core::_Enum implements self::G<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS7> values = #C32;
   static const field self::EnumImplementsS7 a = #C31;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1177,8 +1177,8 @@
 class EnumImplementsS8 extends core::_Enum implements self::G<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS8> values = #C34;
   static const field self::EnumImplementsS8 a = #C33;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS8.${this.{core::_Enum::_name}{core::String}}";
@@ -1191,8 +1191,8 @@
 class EnumWithT1 extends self::_EnumWithT1&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT1> values = #C36;
   static const field self::EnumWithT1 a = #C35;
-  const constructor •(core::int index, core::String name) → self::EnumWithT1
-    : super self::_EnumWithT1&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT1
+    : super self::_EnumWithT1&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1205,8 +1205,8 @@
 class EnumWithT2 extends self::_EnumWithT2&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT2> values = #C38;
   static const field self::EnumWithT2 a = #C37;
-  const constructor •(core::int index, core::String name) → self::EnumWithT2
-    : super self::_EnumWithT2&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT2
+    : super self::_EnumWithT2&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1219,8 +1219,8 @@
 class EnumWithT3 extends self::_EnumWithT3&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT3> values = #C40;
   static const field self::EnumWithT3 a = #C39;
-  const constructor •(core::int index, core::String name) → self::EnumWithT3
-    : super self::_EnumWithT3&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT3
+    : super self::_EnumWithT3&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1233,8 +1233,8 @@
 class EnumWithT4 extends self::_EnumWithT4&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT4> values = #C42;
   static const field self::EnumWithT4 a = #C41;
-  const constructor •(core::int index, core::String name) → self::EnumWithT4
-    : super self::_EnumWithT4&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT4
+    : super self::_EnumWithT4&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1247,8 +1247,8 @@
 class EnumWithT5 extends self::_EnumWithT5&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT5> values = #C44;
   static const field self::EnumWithT5 a = #C43;
-  const constructor •(core::int index, core::String name) → self::EnumWithT5
-    : super self::_EnumWithT5&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT5
+    : super self::_EnumWithT5&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1261,8 +1261,8 @@
 class EnumWithT6 extends self::_EnumWithT6&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT6> values = #C46;
   static const field self::EnumWithT6 a = #C45;
-  const constructor •(core::int index, core::String name) → self::EnumWithT6
-    : super self::_EnumWithT6&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT6
+    : super self::_EnumWithT6&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1275,8 +1275,8 @@
 class EnumWithT7 extends self::_EnumWithT7&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT7> values = #C48;
   static const field self::EnumWithT7 a = #C47;
-  const constructor •(core::int index, core::String name) → self::EnumWithT7
-    : super self::_EnumWithT7&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT7
+    : super self::_EnumWithT7&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1289,8 +1289,8 @@
 class EnumWithT8 extends self::_EnumWithT8&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT8> values = #C50;
   static const field self::EnumWithT8 a = #C49;
-  const constructor •(core::int index, core::String name) → self::EnumWithT8
-    : super self::_EnumWithT8&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT8
+    : super self::_EnumWithT8&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1303,8 +1303,8 @@
 class EnumWithS1 extends self::_EnumWithS1&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS1> values = #C52;
   static const field self::EnumWithS1 a = #C51;
-  const constructor •(core::int index, core::String name) → self::EnumWithS1
-    : super self::_EnumWithS1&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS1
+    : super self::_EnumWithS1&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1317,8 +1317,8 @@
 class EnumWithS2 extends self::_EnumWithS2&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS2> values = #C54;
   static const field self::EnumWithS2 a = #C53;
-  const constructor •(core::int index, core::String name) → self::EnumWithS2
-    : super self::_EnumWithS2&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS2
+    : super self::_EnumWithS2&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1331,8 +1331,8 @@
 class EnumWithS3 extends self::_EnumWithS3&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS3> values = #C56;
   static const field self::EnumWithS3 a = #C55;
-  const constructor •(core::int index, core::String name) → self::EnumWithS3
-    : super self::_EnumWithS3&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS3
+    : super self::_EnumWithS3&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1345,8 +1345,8 @@
 class EnumWithS4 extends self::_EnumWithS4&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS4> values = #C58;
   static const field self::EnumWithS4 a = #C57;
-  const constructor •(core::int index, core::String name) → self::EnumWithS4
-    : super self::_EnumWithS4&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS4
+    : super self::_EnumWithS4&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1359,8 +1359,8 @@
 class EnumWithS5 extends self::_EnumWithS5&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS5> values = #C60;
   static const field self::EnumWithS5 a = #C59;
-  const constructor •(core::int index, core::String name) → self::EnumWithS5
-    : super self::_EnumWithS5&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS5
+    : super self::_EnumWithS5&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1373,8 +1373,8 @@
 class EnumWithS6 extends self::_EnumWithS6&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS6> values = #C62;
   static const field self::EnumWithS6 a = #C61;
-  const constructor •(core::int index, core::String name) → self::EnumWithS6
-    : super self::_EnumWithS6&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS6
+    : super self::_EnumWithS6&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1387,8 +1387,8 @@
 class EnumWithS7 extends self::_EnumWithS7&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS7> values = #C64;
   static const field self::EnumWithS7 a = #C63;
-  const constructor •(core::int index, core::String name) → self::EnumWithS7
-    : super self::_EnumWithS7&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS7
+    : super self::_EnumWithS7&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1401,8 +1401,8 @@
 class EnumWithS8 extends self::_EnumWithS8&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS8> values = #C66;
   static const field self::EnumWithS8 a = #C65;
-  const constructor •(core::int index, core::String name) → self::EnumWithS8
-    : super self::_EnumWithS8&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS8
+    : super self::_EnumWithS8&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS8.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.modular.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.modular.expect
index 4b8667d..f442996 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.modular.expect
@@ -1042,8 +1042,8 @@
 class EnumImplementsT1 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT1> values = #C4;
   static const field self::EnumImplementsT1 a = #C3;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1051,8 +1051,8 @@
 class EnumImplementsT2 extends core::_Enum implements self::Class<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT2> values = #C6;
   static const field self::EnumImplementsT2 a = #C5;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1060,8 +1060,8 @@
 class EnumImplementsT3 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT3> values = #C8;
   static const field self::EnumImplementsT3 a = #C7;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1069,8 +1069,8 @@
 class EnumImplementsT4 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT4> values = #C10;
   static const field self::EnumImplementsT4 a = #C9;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1078,8 +1078,8 @@
 class EnumImplementsT5 extends core::_Enum implements self::Class<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT5> values = #C12;
   static const field self::EnumImplementsT5 a = #C11;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1087,8 +1087,8 @@
 class EnumImplementsT6 extends core::_Enum implements self::Class<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT6> values = #C14;
   static const field self::EnumImplementsT6 a = #C13;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1096,8 +1096,8 @@
 class EnumImplementsT7 extends core::_Enum implements self::Class<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT7> values = #C16;
   static const field self::EnumImplementsT7 a = #C15;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1105,8 +1105,8 @@
 class EnumImplementsT8 extends core::_Enum implements self::Class<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT8> values = #C18;
   static const field self::EnumImplementsT8 a = #C17;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1114,8 +1114,8 @@
 class EnumImplementsS1 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS1> values = #C20;
   static const field self::EnumImplementsS1 a = #C19;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1123,8 +1123,8 @@
 class EnumImplementsS2 extends core::_Enum implements self::G<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS2> values = #C22;
   static const field self::EnumImplementsS2 a = #C21;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1132,8 +1132,8 @@
 class EnumImplementsS3 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS3> values = #C24;
   static const field self::EnumImplementsS3 a = #C23;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1141,8 +1141,8 @@
 class EnumImplementsS4 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS4> values = #C26;
   static const field self::EnumImplementsS4 a = #C25;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1150,8 +1150,8 @@
 class EnumImplementsS5 extends core::_Enum implements self::G<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS5> values = #C28;
   static const field self::EnumImplementsS5 a = #C27;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1159,8 +1159,8 @@
 class EnumImplementsS6 extends core::_Enum implements self::G<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS6> values = #C30;
   static const field self::EnumImplementsS6 a = #C29;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1168,8 +1168,8 @@
 class EnumImplementsS7 extends core::_Enum implements self::G<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS7> values = #C32;
   static const field self::EnumImplementsS7 a = #C31;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1177,8 +1177,8 @@
 class EnumImplementsS8 extends core::_Enum implements self::G<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS8> values = #C34;
   static const field self::EnumImplementsS8 a = #C33;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS8.${this.{core::_Enum::_name}{core::String}}";
@@ -1191,8 +1191,8 @@
 class EnumWithT1 extends self::_EnumWithT1&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT1> values = #C36;
   static const field self::EnumWithT1 a = #C35;
-  const constructor •(core::int index, core::String name) → self::EnumWithT1
-    : super self::_EnumWithT1&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT1
+    : super self::_EnumWithT1&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1205,8 +1205,8 @@
 class EnumWithT2 extends self::_EnumWithT2&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT2> values = #C38;
   static const field self::EnumWithT2 a = #C37;
-  const constructor •(core::int index, core::String name) → self::EnumWithT2
-    : super self::_EnumWithT2&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT2
+    : super self::_EnumWithT2&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1219,8 +1219,8 @@
 class EnumWithT3 extends self::_EnumWithT3&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT3> values = #C40;
   static const field self::EnumWithT3 a = #C39;
-  const constructor •(core::int index, core::String name) → self::EnumWithT3
-    : super self::_EnumWithT3&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT3
+    : super self::_EnumWithT3&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1233,8 +1233,8 @@
 class EnumWithT4 extends self::_EnumWithT4&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT4> values = #C42;
   static const field self::EnumWithT4 a = #C41;
-  const constructor •(core::int index, core::String name) → self::EnumWithT4
-    : super self::_EnumWithT4&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT4
+    : super self::_EnumWithT4&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1247,8 +1247,8 @@
 class EnumWithT5 extends self::_EnumWithT5&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT5> values = #C44;
   static const field self::EnumWithT5 a = #C43;
-  const constructor •(core::int index, core::String name) → self::EnumWithT5
-    : super self::_EnumWithT5&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT5
+    : super self::_EnumWithT5&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1261,8 +1261,8 @@
 class EnumWithT6 extends self::_EnumWithT6&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT6> values = #C46;
   static const field self::EnumWithT6 a = #C45;
-  const constructor •(core::int index, core::String name) → self::EnumWithT6
-    : super self::_EnumWithT6&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT6
+    : super self::_EnumWithT6&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1275,8 +1275,8 @@
 class EnumWithT7 extends self::_EnumWithT7&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT7> values = #C48;
   static const field self::EnumWithT7 a = #C47;
-  const constructor •(core::int index, core::String name) → self::EnumWithT7
-    : super self::_EnumWithT7&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT7
+    : super self::_EnumWithT7&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1289,8 +1289,8 @@
 class EnumWithT8 extends self::_EnumWithT8&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT8> values = #C50;
   static const field self::EnumWithT8 a = #C49;
-  const constructor •(core::int index, core::String name) → self::EnumWithT8
-    : super self::_EnumWithT8&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT8
+    : super self::_EnumWithT8&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1303,8 +1303,8 @@
 class EnumWithS1 extends self::_EnumWithS1&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS1> values = #C52;
   static const field self::EnumWithS1 a = #C51;
-  const constructor •(core::int index, core::String name) → self::EnumWithS1
-    : super self::_EnumWithS1&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS1
+    : super self::_EnumWithS1&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1317,8 +1317,8 @@
 class EnumWithS2 extends self::_EnumWithS2&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS2> values = #C54;
   static const field self::EnumWithS2 a = #C53;
-  const constructor •(core::int index, core::String name) → self::EnumWithS2
-    : super self::_EnumWithS2&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS2
+    : super self::_EnumWithS2&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1331,8 +1331,8 @@
 class EnumWithS3 extends self::_EnumWithS3&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS3> values = #C56;
   static const field self::EnumWithS3 a = #C55;
-  const constructor •(core::int index, core::String name) → self::EnumWithS3
-    : super self::_EnumWithS3&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS3
+    : super self::_EnumWithS3&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1345,8 +1345,8 @@
 class EnumWithS4 extends self::_EnumWithS4&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS4> values = #C58;
   static const field self::EnumWithS4 a = #C57;
-  const constructor •(core::int index, core::String name) → self::EnumWithS4
-    : super self::_EnumWithS4&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS4
+    : super self::_EnumWithS4&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1359,8 +1359,8 @@
 class EnumWithS5 extends self::_EnumWithS5&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS5> values = #C60;
   static const field self::EnumWithS5 a = #C59;
-  const constructor •(core::int index, core::String name) → self::EnumWithS5
-    : super self::_EnumWithS5&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS5
+    : super self::_EnumWithS5&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1373,8 +1373,8 @@
 class EnumWithS6 extends self::_EnumWithS6&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS6> values = #C62;
   static const field self::EnumWithS6 a = #C61;
-  const constructor •(core::int index, core::String name) → self::EnumWithS6
-    : super self::_EnumWithS6&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS6
+    : super self::_EnumWithS6&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1387,8 +1387,8 @@
 class EnumWithS7 extends self::_EnumWithS7&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS7> values = #C64;
   static const field self::EnumWithS7 a = #C63;
-  const constructor •(core::int index, core::String name) → self::EnumWithS7
-    : super self::_EnumWithS7&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS7
+    : super self::_EnumWithS7&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1401,8 +1401,8 @@
 class EnumWithS8 extends self::_EnumWithS8&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS8> values = #C66;
   static const field self::EnumWithS8 a = #C65;
-  const constructor •(core::int index, core::String name) → self::EnumWithS8
-    : super self::_EnumWithS8&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS8
+    : super self::_EnumWithS8&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS8.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.outline.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.outline.expect
index ed00b2e..559bb7e 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.outline.expect
@@ -991,8 +991,8 @@
 class EnumImplementsT1 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT1> values = const <self::EnumImplementsT1>[self::EnumImplementsT1::a];
   static const field self::EnumImplementsT1 a = const self::EnumImplementsT1::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1000,8 +1000,8 @@
 class EnumImplementsT2 extends core::_Enum implements self::Class<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT2> values = const <self::EnumImplementsT2>[self::EnumImplementsT2::a];
   static const field self::EnumImplementsT2 a = const self::EnumImplementsT2::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1009,8 +1009,8 @@
 class EnumImplementsT3 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT3> values = const <self::EnumImplementsT3>[self::EnumImplementsT3::a];
   static const field self::EnumImplementsT3 a = const self::EnumImplementsT3::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1018,8 +1018,8 @@
 class EnumImplementsT4 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT4> values = const <self::EnumImplementsT4>[self::EnumImplementsT4::a];
   static const field self::EnumImplementsT4 a = const self::EnumImplementsT4::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1027,8 +1027,8 @@
 class EnumImplementsT5 extends core::_Enum implements self::Class<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT5> values = const <self::EnumImplementsT5>[self::EnumImplementsT5::a];
   static const field self::EnumImplementsT5 a = const self::EnumImplementsT5::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1036,8 +1036,8 @@
 class EnumImplementsT6 extends core::_Enum implements self::Class<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT6> values = const <self::EnumImplementsT6>[self::EnumImplementsT6::a];
   static const field self::EnumImplementsT6 a = const self::EnumImplementsT6::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1045,8 +1045,8 @@
 class EnumImplementsT7 extends core::_Enum implements self::Class<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT7> values = const <self::EnumImplementsT7>[self::EnumImplementsT7::a];
   static const field self::EnumImplementsT7 a = const self::EnumImplementsT7::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1054,8 +1054,8 @@
 class EnumImplementsT8 extends core::_Enum implements self::Class<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT8> values = const <self::EnumImplementsT8>[self::EnumImplementsT8::a];
   static const field self::EnumImplementsT8 a = const self::EnumImplementsT8::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1063,8 +1063,8 @@
 class EnumImplementsS1 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS1> values = const <self::EnumImplementsS1>[self::EnumImplementsS1::a];
   static const field self::EnumImplementsS1 a = const self::EnumImplementsS1::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1072,8 +1072,8 @@
 class EnumImplementsS2 extends core::_Enum implements self::G<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS2> values = const <self::EnumImplementsS2>[self::EnumImplementsS2::a];
   static const field self::EnumImplementsS2 a = const self::EnumImplementsS2::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1081,8 +1081,8 @@
 class EnumImplementsS3 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS3> values = const <self::EnumImplementsS3>[self::EnumImplementsS3::a];
   static const field self::EnumImplementsS3 a = const self::EnumImplementsS3::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1090,8 +1090,8 @@
 class EnumImplementsS4 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS4> values = const <self::EnumImplementsS4>[self::EnumImplementsS4::a];
   static const field self::EnumImplementsS4 a = const self::EnumImplementsS4::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1099,8 +1099,8 @@
 class EnumImplementsS5 extends core::_Enum implements self::G<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS5> values = const <self::EnumImplementsS5>[self::EnumImplementsS5::a];
   static const field self::EnumImplementsS5 a = const self::EnumImplementsS5::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1108,8 +1108,8 @@
 class EnumImplementsS6 extends core::_Enum implements self::G<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS6> values = const <self::EnumImplementsS6>[self::EnumImplementsS6::a];
   static const field self::EnumImplementsS6 a = const self::EnumImplementsS6::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1117,8 +1117,8 @@
 class EnumImplementsS7 extends core::_Enum implements self::G<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS7> values = const <self::EnumImplementsS7>[self::EnumImplementsS7::a];
   static const field self::EnumImplementsS7 a = const self::EnumImplementsS7::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1126,8 +1126,8 @@
 class EnumImplementsS8 extends core::_Enum implements self::G<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS8> values = const <self::EnumImplementsS8>[self::EnumImplementsS8::a];
   static const field self::EnumImplementsS8 a = const self::EnumImplementsS8::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS8.${this.{core::_Enum::_name}{core::String}}";
@@ -1140,7 +1140,7 @@
 class EnumWithT1 extends self::_EnumWithT1&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT1> values = const <self::EnumWithT1>[self::EnumWithT1::a];
   static const field self::EnumWithT1 a = const self::EnumWithT1::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT1
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT1
     ;
   method toString() → core::String
     return "EnumWithT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1153,7 +1153,7 @@
 class EnumWithT2 extends self::_EnumWithT2&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT2> values = const <self::EnumWithT2>[self::EnumWithT2::a];
   static const field self::EnumWithT2 a = const self::EnumWithT2::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT2
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT2
     ;
   method toString() → core::String
     return "EnumWithT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1166,7 +1166,7 @@
 class EnumWithT3 extends self::_EnumWithT3&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT3> values = const <self::EnumWithT3>[self::EnumWithT3::a];
   static const field self::EnumWithT3 a = const self::EnumWithT3::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT3
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT3
     ;
   method toString() → core::String
     return "EnumWithT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1179,7 +1179,7 @@
 class EnumWithT4 extends self::_EnumWithT4&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT4> values = const <self::EnumWithT4>[self::EnumWithT4::a];
   static const field self::EnumWithT4 a = const self::EnumWithT4::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT4
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT4
     ;
   method toString() → core::String
     return "EnumWithT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1192,7 +1192,7 @@
 class EnumWithT5 extends self::_EnumWithT5&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT5> values = const <self::EnumWithT5>[self::EnumWithT5::a];
   static const field self::EnumWithT5 a = const self::EnumWithT5::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT5
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT5
     ;
   method toString() → core::String
     return "EnumWithT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1205,7 +1205,7 @@
 class EnumWithT6 extends self::_EnumWithT6&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT6> values = const <self::EnumWithT6>[self::EnumWithT6::a];
   static const field self::EnumWithT6 a = const self::EnumWithT6::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT6
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT6
     ;
   method toString() → core::String
     return "EnumWithT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1218,7 +1218,7 @@
 class EnumWithT7 extends self::_EnumWithT7&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT7> values = const <self::EnumWithT7>[self::EnumWithT7::a];
   static const field self::EnumWithT7 a = const self::EnumWithT7::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT7
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT7
     ;
   method toString() → core::String
     return "EnumWithT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1231,7 +1231,7 @@
 class EnumWithT8 extends self::_EnumWithT8&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT8> values = const <self::EnumWithT8>[self::EnumWithT8::a];
   static const field self::EnumWithT8 a = const self::EnumWithT8::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithT8
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT8
     ;
   method toString() → core::String
     return "EnumWithT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1244,7 +1244,7 @@
 class EnumWithS1 extends self::_EnumWithS1&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS1> values = const <self::EnumWithS1>[self::EnumWithS1::a];
   static const field self::EnumWithS1 a = const self::EnumWithS1::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS1
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS1
     ;
   method toString() → core::String
     return "EnumWithS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1257,7 +1257,7 @@
 class EnumWithS2 extends self::_EnumWithS2&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS2> values = const <self::EnumWithS2>[self::EnumWithS2::a];
   static const field self::EnumWithS2 a = const self::EnumWithS2::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS2
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS2
     ;
   method toString() → core::String
     return "EnumWithS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1270,7 +1270,7 @@
 class EnumWithS3 extends self::_EnumWithS3&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS3> values = const <self::EnumWithS3>[self::EnumWithS3::a];
   static const field self::EnumWithS3 a = const self::EnumWithS3::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS3
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS3
     ;
   method toString() → core::String
     return "EnumWithS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1283,7 +1283,7 @@
 class EnumWithS4 extends self::_EnumWithS4&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS4> values = const <self::EnumWithS4>[self::EnumWithS4::a];
   static const field self::EnumWithS4 a = const self::EnumWithS4::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS4
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS4
     ;
   method toString() → core::String
     return "EnumWithS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1296,7 +1296,7 @@
 class EnumWithS5 extends self::_EnumWithS5&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS5> values = const <self::EnumWithS5>[self::EnumWithS5::a];
   static const field self::EnumWithS5 a = const self::EnumWithS5::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS5
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS5
     ;
   method toString() → core::String
     return "EnumWithS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1309,7 +1309,7 @@
 class EnumWithS6 extends self::_EnumWithS6&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS6> values = const <self::EnumWithS6>[self::EnumWithS6::a];
   static const field self::EnumWithS6 a = const self::EnumWithS6::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS6
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS6
     ;
   method toString() → core::String
     return "EnumWithS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1322,7 +1322,7 @@
 class EnumWithS7 extends self::_EnumWithS7&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS7> values = const <self::EnumWithS7>[self::EnumWithS7::a];
   static const field self::EnumWithS7 a = const self::EnumWithS7::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS7
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS7
     ;
   method toString() → core::String
     return "EnumWithS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1335,7 +1335,7 @@
 class EnumWithS8 extends self::_EnumWithS8&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS8> values = const <self::EnumWithS8>[self::EnumWithS8::a];
   static const field self::EnumWithS8 a = const self::EnumWithS8::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::EnumWithS8
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS8
     ;
   method toString() → core::String
     return "EnumWithS8.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.transformed.expect
index c15302b..9a3338a 100644
--- a/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.weak.transformed.expect
@@ -1042,8 +1042,8 @@
 class EnumImplementsT1 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT1> values = #C4;
   static const field self::EnumImplementsT1 a = #C3;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1051,8 +1051,8 @@
 class EnumImplementsT2 extends core::_Enum implements self::Class<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT2> values = #C6;
   static const field self::EnumImplementsT2 a = #C5;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1060,8 +1060,8 @@
 class EnumImplementsT3 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT3> values = #C8;
   static const field self::EnumImplementsT3 a = #C7;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1069,8 +1069,8 @@
 class EnumImplementsT4 extends core::_Enum implements self::Class<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT4> values = #C10;
   static const field self::EnumImplementsT4 a = #C9;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1078,8 +1078,8 @@
 class EnumImplementsT5 extends core::_Enum implements self::Class<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT5> values = #C12;
   static const field self::EnumImplementsT5 a = #C11;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1087,8 +1087,8 @@
 class EnumImplementsT6 extends core::_Enum implements self::Class<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT6> values = #C14;
   static const field self::EnumImplementsT6 a = #C13;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1096,8 +1096,8 @@
 class EnumImplementsT7 extends core::_Enum implements self::Class<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT7> values = #C16;
   static const field self::EnumImplementsT7 a = #C15;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1105,8 +1105,8 @@
 class EnumImplementsT8 extends core::_Enum implements self::Class<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsT8> values = #C18;
   static const field self::EnumImplementsT8 a = #C17;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsT8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsT8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1114,8 +1114,8 @@
 class EnumImplementsS1 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS1> values = #C20;
   static const field self::EnumImplementsS1 a = #C19;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1123,8 +1123,8 @@
 class EnumImplementsS2 extends core::_Enum implements self::G<dynamic> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS2> values = #C22;
   static const field self::EnumImplementsS2 a = #C21;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1132,8 +1132,8 @@
 class EnumImplementsS3 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS3> values = #C24;
   static const field self::EnumImplementsS3 a = #C23;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1141,8 +1141,8 @@
 class EnumImplementsS4 extends core::_Enum implements self::G<self::Class<dynamic>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS4> values = #C26;
   static const field self::EnumImplementsS4 a = #C25;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1150,8 +1150,8 @@
 class EnumImplementsS5 extends core::_Enum implements self::G<self::ConcreteClass> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS5> values = #C28;
   static const field self::EnumImplementsS5 a = #C27;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS5
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS5
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1159,8 +1159,8 @@
 class EnumImplementsS6 extends core::_Enum implements self::G<self::Class<self::ConcreteClass>> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS6> values = #C30;
   static const field self::EnumImplementsS6 a = #C29;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS6
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS6
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1168,8 +1168,8 @@
 class EnumImplementsS7 extends core::_Enum implements self::G<core::Object> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS7> values = #C32;
   static const field self::EnumImplementsS7 a = #C31;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS7
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS7
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1177,8 +1177,8 @@
 class EnumImplementsS8 extends core::_Enum implements self::G<core::int> /*isEnum*/  {
   static const field core::List<self::EnumImplementsS8> values = #C34;
   static const field self::EnumImplementsS8 a = #C33;
-  const constructor •(core::int index, core::String name) → self::EnumImplementsS8
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumImplementsS8
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumImplementsS8.${this.{core::_Enum::_name}{core::String}}";
@@ -1191,8 +1191,8 @@
 class EnumWithT1 extends self::_EnumWithT1&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT1> values = #C36;
   static const field self::EnumWithT1 a = #C35;
-  const constructor •(core::int index, core::String name) → self::EnumWithT1
-    : super self::_EnumWithT1&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT1
+    : super self::_EnumWithT1&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT1.${this.{core::_Enum::_name}{core::String}}";
@@ -1205,8 +1205,8 @@
 class EnumWithT2 extends self::_EnumWithT2&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT2> values = #C38;
   static const field self::EnumWithT2 a = #C37;
-  const constructor •(core::int index, core::String name) → self::EnumWithT2
-    : super self::_EnumWithT2&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT2
+    : super self::_EnumWithT2&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT2.${this.{core::_Enum::_name}{core::String}}";
@@ -1219,8 +1219,8 @@
 class EnumWithT3 extends self::_EnumWithT3&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT3> values = #C40;
   static const field self::EnumWithT3 a = #C39;
-  const constructor •(core::int index, core::String name) → self::EnumWithT3
-    : super self::_EnumWithT3&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT3
+    : super self::_EnumWithT3&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT3.${this.{core::_Enum::_name}{core::String}}";
@@ -1233,8 +1233,8 @@
 class EnumWithT4 extends self::_EnumWithT4&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT4> values = #C42;
   static const field self::EnumWithT4 a = #C41;
-  const constructor •(core::int index, core::String name) → self::EnumWithT4
-    : super self::_EnumWithT4&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT4
+    : super self::_EnumWithT4&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT4.${this.{core::_Enum::_name}{core::String}}";
@@ -1247,8 +1247,8 @@
 class EnumWithT5 extends self::_EnumWithT5&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT5> values = #C44;
   static const field self::EnumWithT5 a = #C43;
-  const constructor •(core::int index, core::String name) → self::EnumWithT5
-    : super self::_EnumWithT5&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT5
+    : super self::_EnumWithT5&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT5.${this.{core::_Enum::_name}{core::String}}";
@@ -1261,8 +1261,8 @@
 class EnumWithT6 extends self::_EnumWithT6&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT6> values = #C46;
   static const field self::EnumWithT6 a = #C45;
-  const constructor •(core::int index, core::String name) → self::EnumWithT6
-    : super self::_EnumWithT6&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT6
+    : super self::_EnumWithT6&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT6.${this.{core::_Enum::_name}{core::String}}";
@@ -1275,8 +1275,8 @@
 class EnumWithT7 extends self::_EnumWithT7&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT7> values = #C48;
   static const field self::EnumWithT7 a = #C47;
-  const constructor •(core::int index, core::String name) → self::EnumWithT7
-    : super self::_EnumWithT7&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT7
+    : super self::_EnumWithT7&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT7.${this.{core::_Enum::_name}{core::String}}";
@@ -1289,8 +1289,8 @@
 class EnumWithT8 extends self::_EnumWithT8&_Enum&F /*isEnum*/  {
   static const field core::List<self::EnumWithT8> values = #C50;
   static const field self::EnumWithT8 a = #C49;
-  const constructor •(core::int index, core::String name) → self::EnumWithT8
-    : super self::_EnumWithT8&_Enum&F::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithT8
+    : super self::_EnumWithT8&_Enum&F::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithT8.${this.{core::_Enum::_name}{core::String}}";
@@ -1303,8 +1303,8 @@
 class EnumWithS1 extends self::_EnumWithS1&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS1> values = #C52;
   static const field self::EnumWithS1 a = #C51;
-  const constructor •(core::int index, core::String name) → self::EnumWithS1
-    : super self::_EnumWithS1&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS1
+    : super self::_EnumWithS1&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS1.${this.{core::_Enum::_name}{core::String}}";
@@ -1317,8 +1317,8 @@
 class EnumWithS2 extends self::_EnumWithS2&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS2> values = #C54;
   static const field self::EnumWithS2 a = #C53;
-  const constructor •(core::int index, core::String name) → self::EnumWithS2
-    : super self::_EnumWithS2&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS2
+    : super self::_EnumWithS2&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS2.${this.{core::_Enum::_name}{core::String}}";
@@ -1331,8 +1331,8 @@
 class EnumWithS3 extends self::_EnumWithS3&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS3> values = #C56;
   static const field self::EnumWithS3 a = #C55;
-  const constructor •(core::int index, core::String name) → self::EnumWithS3
-    : super self::_EnumWithS3&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS3
+    : super self::_EnumWithS3&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS3.${this.{core::_Enum::_name}{core::String}}";
@@ -1345,8 +1345,8 @@
 class EnumWithS4 extends self::_EnumWithS4&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS4> values = #C58;
   static const field self::EnumWithS4 a = #C57;
-  const constructor •(core::int index, core::String name) → self::EnumWithS4
-    : super self::_EnumWithS4&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS4
+    : super self::_EnumWithS4&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS4.${this.{core::_Enum::_name}{core::String}}";
@@ -1359,8 +1359,8 @@
 class EnumWithS5 extends self::_EnumWithS5&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS5> values = #C60;
   static const field self::EnumWithS5 a = #C59;
-  const constructor •(core::int index, core::String name) → self::EnumWithS5
-    : super self::_EnumWithS5&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS5
+    : super self::_EnumWithS5&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS5.${this.{core::_Enum::_name}{core::String}}";
@@ -1373,8 +1373,8 @@
 class EnumWithS6 extends self::_EnumWithS6&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS6> values = #C62;
   static const field self::EnumWithS6 a = #C61;
-  const constructor •(core::int index, core::String name) → self::EnumWithS6
-    : super self::_EnumWithS6&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS6
+    : super self::_EnumWithS6&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS6.${this.{core::_Enum::_name}{core::String}}";
@@ -1387,8 +1387,8 @@
 class EnumWithS7 extends self::_EnumWithS7&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS7> values = #C64;
   static const field self::EnumWithS7 a = #C63;
-  const constructor •(core::int index, core::String name) → self::EnumWithS7
-    : super self::_EnumWithS7&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS7
+    : super self::_EnumWithS7&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS7.${this.{core::_Enum::_name}{core::String}}";
@@ -1401,8 +1401,8 @@
 class EnumWithS8 extends self::_EnumWithS8&_Enum&G /*isEnum*/  {
   static const field core::List<self::EnumWithS8> values = #C66;
   static const field self::EnumWithS8 a = #C65;
-  const constructor •(core::int index, core::String name) → self::EnumWithS8
-    : super self::_EnumWithS8&_Enum&G::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::EnumWithS8
+    : super self::_EnumWithS8&_Enum&G::•(#index, #name)
     ;
   method toString() → core::String
     return "EnumWithS8.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.expect b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.expect
index dbd7faa..cc9a69c 100644
--- a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.expect
@@ -604,8 +604,8 @@
 class Enum1<T1 extends self::Class<dynamic> = dynamic, T2 extends dynamic, T3 extends self::Class<dynamic> = dynamic, T4 extends self::Class<dynamic> = dynamic, T5 extends self::ConcreteClass = dynamic, T6 extends self::Class<self::ConcreteClass> = dynamic, T7 extends core::Object = dynamic, T8 extends core::int = dynamic, S1 extends self::G<self::Class<dynamic>> = dynamic, S2 extends self::G<dynamic> = dynamic, S3 extends self::G<self::Class<dynamic>> = dynamic, S4 extends self::G<self::Class<dynamic>> = dynamic, S5 extends self::G<self::ConcreteClass> = dynamic, S6 extends self::G<self::Class<self::ConcreteClass>> = dynamic, S7 extends self::G<core::Object> = dynamic, S8 extends self::G<core::int> = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::Enum1<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>> values = #C4;
   static const field self::Enum1<self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>> a = #C3;
-  const constructor •(core::int index, core::String name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.modular.expect b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.modular.expect
index dbd7faa..cc9a69c 100644
--- a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.modular.expect
@@ -604,8 +604,8 @@
 class Enum1<T1 extends self::Class<dynamic> = dynamic, T2 extends dynamic, T3 extends self::Class<dynamic> = dynamic, T4 extends self::Class<dynamic> = dynamic, T5 extends self::ConcreteClass = dynamic, T6 extends self::Class<self::ConcreteClass> = dynamic, T7 extends core::Object = dynamic, T8 extends core::int = dynamic, S1 extends self::G<self::Class<dynamic>> = dynamic, S2 extends self::G<dynamic> = dynamic, S3 extends self::G<self::Class<dynamic>> = dynamic, S4 extends self::G<self::Class<dynamic>> = dynamic, S5 extends self::G<self::ConcreteClass> = dynamic, S6 extends self::G<self::Class<self::ConcreteClass>> = dynamic, S7 extends self::G<core::Object> = dynamic, S8 extends self::G<core::int> = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::Enum1<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>> values = #C4;
   static const field self::Enum1<self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>> a = #C3;
-  const constructor •(core::int index, core::String name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.outline.expect
index ad2a952..4f1863b 100644
--- a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.outline.expect
@@ -524,8 +524,8 @@
 class Enum1<T1 extends self::Class<dynamic> = dynamic, T2 extends dynamic, T3 extends self::Class<dynamic> = dynamic, T4 extends self::Class<dynamic> = dynamic, T5 extends self::ConcreteClass = dynamic, T6 extends self::Class<self::ConcreteClass> = dynamic, T7 extends core::Object = dynamic, T8 extends core::int = dynamic, S1 extends self::G<self::Class<dynamic>> = dynamic, S2 extends self::G<dynamic> = dynamic, S3 extends self::G<self::Class<dynamic>> = dynamic, S4 extends self::G<self::Class<dynamic>> = dynamic, S5 extends self::G<self::ConcreteClass> = dynamic, S6 extends self::G<self::Class<self::ConcreteClass>> = dynamic, S7 extends self::G<core::Object> = dynamic, S8 extends self::G<core::int> = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::Enum1<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>> values = const <self::Enum1<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>>[self::Enum1::a];
   static const field self::Enum1<self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>> a = const self::Enum1::•<self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>>(0, "a");
-  const constructor •(core::int index, core::String name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.transformed.expect
index 9bede0a..ae5b99f 100644
--- a/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_type_parameters.dart.weak.transformed.expect
@@ -604,8 +604,8 @@
 class Enum1<T1 extends self::Class<dynamic> = dynamic, T2 extends dynamic, T3 extends self::Class<dynamic> = dynamic, T4 extends self::Class<dynamic> = dynamic, T5 extends self::ConcreteClass = dynamic, T6 extends self::Class<self::ConcreteClass> = dynamic, T7 extends core::Object = dynamic, T8 extends core::int = dynamic, S1 extends self::G<self::Class<dynamic>> = dynamic, S2 extends self::G<dynamic> = dynamic, S3 extends self::G<self::Class<dynamic>> = dynamic, S4 extends self::G<self::Class<dynamic>> = dynamic, S5 extends self::G<self::ConcreteClass> = dynamic, S6 extends self::G<self::Class<self::ConcreteClass>> = dynamic, S7 extends self::G<core::Object> = dynamic, S8 extends self::G<core::int> = dynamic> extends core::_Enum /*isEnum*/  {
   static const field core::List<self::Enum1<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>> values = #C4;
   static const field self::Enum1<self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::ConcreteClass, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>, self::G<self::ConcreteClass>> a = #C3;
-  const constructor •(core::int index, core::String name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1<self::Enum1::T1, self::Enum1::T2%, self::Enum1::T3, self::Enum1::T4, self::Enum1::T5, self::Enum1::T6, self::Enum1::T7, self::Enum1::T8, self::Enum1::S1, self::Enum1::S2, self::Enum1::S3, self::Enum1::S4, self::Enum1::S5, self::Enum1::S6, self::Enum1::S7, self::Enum1::S8>
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
index a81678e..c879106 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.expect
@@ -423,8 +423,8 @@
 class Enum#4 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   static const field core::List<self::Enum#4> values = #C4;
   static const field self::Enum#4 a = #C3;
-  const constructor •(core::int index, core::String name) → self::Enum#4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#4.${this.{core::_Enum::_name}{core::String}}";
@@ -434,8 +434,8 @@
   static const field self::Enum#3 a = #C5;
   static const field self::Enum#3 b = #C8;
   static const field self::Enum#3 c = #C11;
-  const constructor •(core::int index, core::String name) → self::Enum#3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#3.${this.{core::_Enum::_name}{core::String}}";
@@ -445,8 +445,8 @@
   static const field self::Enum#2 Enum = #C14;
   static const field self::Enum#2 a = #C15;
   static const field self::Enum#2 b = #C16;
-  const constructor •(core::int index, core::String name) → self::Enum#2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#2.${this.{core::_Enum::_name}{core::String}}";
@@ -456,8 +456,8 @@
   static const field self::Enum#1 a = #C18;
   static const field self::Enum#1 b = #C19;
   static const field self::Enum#1 c = #C20;
-  const constructor •(core::int index, core::String name) → self::Enum#1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#1.${this.{core::_Enum::_name}{core::String}}";
@@ -467,8 +467,8 @@
   static const field self::Enum Enum = #C22;
   static const field self::Enum a = #C23;
   static const field self::Enum b = #C24;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
@@ -480,8 +480,8 @@
   static const field self::AnotherEnum c = #C28;
   static const field self::AnotherEnum _name = #C31;
   static const field self::AnotherEnum index = #C34;
-  const constructor •(core::int index, core::String name) → self::AnotherEnum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::AnotherEnum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.modular.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.modular.expect
index a81678e..c879106 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.modular.expect
@@ -423,8 +423,8 @@
 class Enum#4 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   static const field core::List<self::Enum#4> values = #C4;
   static const field self::Enum#4 a = #C3;
-  const constructor •(core::int index, core::String name) → self::Enum#4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#4.${this.{core::_Enum::_name}{core::String}}";
@@ -434,8 +434,8 @@
   static const field self::Enum#3 a = #C5;
   static const field self::Enum#3 b = #C8;
   static const field self::Enum#3 c = #C11;
-  const constructor •(core::int index, core::String name) → self::Enum#3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#3.${this.{core::_Enum::_name}{core::String}}";
@@ -445,8 +445,8 @@
   static const field self::Enum#2 Enum = #C14;
   static const field self::Enum#2 a = #C15;
   static const field self::Enum#2 b = #C16;
-  const constructor •(core::int index, core::String name) → self::Enum#2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#2.${this.{core::_Enum::_name}{core::String}}";
@@ -456,8 +456,8 @@
   static const field self::Enum#1 a = #C18;
   static const field self::Enum#1 b = #C19;
   static const field self::Enum#1 c = #C20;
-  const constructor •(core::int index, core::String name) → self::Enum#1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#1.${this.{core::_Enum::_name}{core::String}}";
@@ -467,8 +467,8 @@
   static const field self::Enum Enum = #C22;
   static const field self::Enum a = #C23;
   static const field self::Enum b = #C24;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
@@ -480,8 +480,8 @@
   static const field self::AnotherEnum c = #C28;
   static const field self::AnotherEnum _name = #C31;
   static const field self::AnotherEnum index = #C34;
-  const constructor •(core::int index, core::String name) → self::AnotherEnum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::AnotherEnum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect
index 7746abc..b560c3f 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.weak.outline.expect
@@ -355,8 +355,8 @@
 class Enum#4 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   static const field core::List<self::Enum#4> values = const <self::Enum#4>[self::Enum#4::a];
   static const field self::Enum#4 a = const self::Enum#4::•(0, "a");
-  const constructor •(core::int index, core::String name) → self::Enum#4
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#4
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#4.${this.{core::_Enum::_name}{core::String}}";
@@ -366,8 +366,8 @@
   static const field self::Enum#3 a = const self::Enum#3::•(0, "a");
   static const field self::Enum#3 b = const self::Enum#3::•(1, "b");
   static const field self::Enum#3 c = const self::Enum#3::•(2, "c");
-  const constructor •(core::int index, core::String name) → self::Enum#3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#3.${this.{core::_Enum::_name}{core::String}}";
@@ -377,8 +377,8 @@
   static const field self::Enum#2 Enum = const self::Enum#2::•(0, "Enum");
   static const field self::Enum#2 a = const self::Enum#2::•(1, "a");
   static const field self::Enum#2 b = const self::Enum#2::•(2, "b");
-  const constructor •(core::int index, core::String name) → self::Enum#2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#2.${this.{core::_Enum::_name}{core::String}}";
@@ -388,8 +388,8 @@
   static const field self::Enum#1 a = const self::Enum#1::•(0, "a");
   static const field self::Enum#1 b = const self::Enum#1::•(1, "b");
   static const field self::Enum#1 c = const self::Enum#1::•(2, "c");
-  const constructor •(core::int index, core::String name) → self::Enum#1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum#1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum#1.${this.{core::_Enum::_name}{core::String}}";
@@ -399,8 +399,8 @@
   static const field self::Enum Enum = const self::Enum::•(0, "Enum");
   static const field self::Enum a = const self::Enum::•(1, "a");
   static const field self::Enum b = const self::Enum::•(2, "b");
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
@@ -412,8 +412,8 @@
   static const field self::AnotherEnum c = const self::AnotherEnum::•(2, "c");
   static const field self::AnotherEnum _name = const self::AnotherEnum::•(3, "_name");
   static const field self::AnotherEnum index = const self::AnotherEnum::•(4, "index");
-  const constructor •(core::int index, core::String name) → self::AnotherEnum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::AnotherEnum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect
index 05395c7..4267928 100644
--- a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.expect
@@ -34,8 +34,8 @@
   static const field self::E String = #C9;
   static const field self::E _Enum = #C12;
   static const field self::E List = #C15;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.modular.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.modular.expect
index 05395c7..4267928 100644
--- a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.modular.expect
@@ -34,8 +34,8 @@
   static const field self::E String = #C9;
   static const field self::E _Enum = #C12;
   static const field self::E List = #C15;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect
index 7b3853c..2f8f10d 100644
--- a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.outline.expect
@@ -29,8 +29,8 @@
   static const field self::E String = const self::E::•(2, "String");
   static const field self::E _Enum = const self::E::•(3, "_Enum");
   static const field self::E List = const self::E::•(4, "List");
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect
index 05395c7..4267928 100644
--- a/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/enum_names_from_core.dart.weak.transformed.expect
@@ -34,8 +34,8 @@
   static const field self::E String = #C9;
   static const field self::E _Enum = #C12;
   static const field self::E List = #C15;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.expect b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.expect
index 792b410..9c86f82 100644
--- a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.expect
@@ -40,7 +40,7 @@
   static const field self::A a = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:8:3: Error: Couldn't find constructor 'A'.
   a;
   ^";
-  constructor •(core::int index, core::String name) → self::A
+  constructor •(core::int #index, core::String #name) → self::A
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:9:9: Error: Enum constructors can't contain super-initializers.
   A() : super();
         ^"
@@ -55,7 +55,7 @@
   static const field self::B b = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^";
-  const constructor •(core::int index, core::String name) → self::B
+  const constructor •(core::int #index, core::String #name) → self::B
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^"
diff --git a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.modular.expect b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.modular.expect
index 792b410..9c86f82 100644
--- a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.modular.expect
@@ -40,7 +40,7 @@
   static const field self::A a = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:8:3: Error: Couldn't find constructor 'A'.
   a;
   ^";
-  constructor •(core::int index, core::String name) → self::A
+  constructor •(core::int #index, core::String #name) → self::A
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:9:9: Error: Enum constructors can't contain super-initializers.
   A() : super();
         ^"
@@ -55,7 +55,7 @@
   static const field self::B b = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^";
-  const constructor •(core::int index, core::String name) → self::B
+  const constructor •(core::int #index, core::String #name) → self::B
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^"
diff --git a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.outline.expect
index 2c1f516..a3eb700 100644
--- a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.outline.expect
@@ -34,7 +34,7 @@
   static const field self::A a = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:8:3: Error: Couldn't find constructor 'A'.
   a;
   ^";
-  constructor •(core::int index, core::String name) → self::A
+  constructor •(core::int #index, core::String #name) → self::A
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
@@ -42,7 +42,7 @@
 class B extends core::_Enum /*isEnum*/  {
   static const field core::List<self::B> values = const <self::B>[self::B::b];
   static const field self::B b = const self::B::•(0, "b");
-  const constructor •(core::int index, core::String name) → self::B
+  const constructor •(core::int #index, core::String #name) → self::B
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^"
diff --git a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.transformed.expect
index 792b410..9c86f82 100644
--- a/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/enum_super_constructor.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
   static const field self::A a = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:8:3: Error: Couldn't find constructor 'A'.
   a;
   ^";
-  constructor •(core::int index, core::String name) → self::A
+  constructor •(core::int #index, core::String #name) → self::A
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:9:9: Error: Enum constructors can't contain super-initializers.
   A() : super();
         ^"
@@ -55,7 +55,7 @@
   static const field self::B b = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^";
-  const constructor •(core::int index, core::String name) → self::B
+  const constructor •(core::int #index, core::String #name) → self::B
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/enum_super_constructor.dart:14:15: Error: Enum constructors can't contain super-initializers.
   const B() : super();
               ^"
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.expect
index fcda3be..a1ec92b 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.expect
@@ -2951,8 +2951,8 @@
 class E extends self::_E&_Enum&C /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -2960,8 +2960,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C6;
   static const field self::E1 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -2969,8 +2969,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C8;
   static const field self::E2 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -2978,8 +2978,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C10;
   static const field self::E3 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -2992,8 +2992,8 @@
 class E4 extends self::_E4&_Enum&C /*isEnum*/  {
   static const field core::List<self::E4> values = #C12;
   static const field self::E4 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -3006,8 +3006,8 @@
 class E5 extends self::_E5&_Enum&C /*isEnum*/  {
   static const field core::List<self::E5> values = #C14;
   static const field self::E5 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -3020,8 +3020,8 @@
 class E6 extends self::_E6&_Enum&C /*isEnum*/  {
   static const field core::List<self::E6> values = #C16;
   static const field self::E6 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -3034,8 +3034,8 @@
 class E7 extends self::_E7&_Enum&C /*isEnum*/  {
   static const field core::List<self::E7> values = #C18;
   static const field self::E7 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -3048,8 +3048,8 @@
 class E8 extends self::_E8&_Enum&C /*isEnum*/  {
   static const field core::List<self::E8> values = #C20;
   static const field self::E8 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -3057,8 +3057,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C22;
   static const field self::E9 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -3066,8 +3066,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C24;
   static const field self::E10 element = #C23;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -3075,16 +3075,16 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C26;
   static const field self::E11 element = #C25;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
 }
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C27;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -3097,8 +3097,8 @@
 class E13 extends self::_E13&_Enum&C /*isEnum*/  {
   static const field core::List<self::E13> values = #C29;
   static const field self::E13 element = #C28;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super self::_E13&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super self::_E13&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -3111,8 +3111,8 @@
 class E14 extends self::_E14&_Enum&C /*isEnum*/  {
   static const field core::List<self::E14> values = #C31;
   static const field self::E14 element = #C30;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super self::_E14&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super self::_E14&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
@@ -3125,8 +3125,8 @@
 class E15 extends self::_E15&_Enum&D /*isEnum*/  {
   static const field core::List<self::E15> values = #C33;
   static const field self::E15 element = #C32;
-  const constructor •(core::int index, core::String name) → self::E15
-    : super self::_E15&_Enum&D::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E15
+    : super self::_E15&_Enum&D::•(#index, #name)
     ;
   method toString() → core::String
     return "E15.${this.{core::_Enum::_name}{core::String}}";
@@ -3134,8 +3134,8 @@
 class E16 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E16> values = #C35;
   static const field self::E16 element = #C34;
-  const constructor •(core::int index, core::String name) → self::E16
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E16
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E16.${this.{core::_Enum::_name}{core::String}}";
@@ -3143,8 +3143,8 @@
 class E17 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E17> values = #C37;
   static const field self::E17 element = #C36;
-  const constructor •(core::int index, core::String name) → self::E17
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E17
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E17.${this.{core::_Enum::_name}{core::String}}";
@@ -3152,8 +3152,8 @@
 class E18 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E18> values = #C39;
   static const field self::E18 element = #C38;
-  const constructor •(core::int index, core::String name) → self::E18
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E18
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E18.${this.{core::_Enum::_name}{core::String}}";
@@ -3161,8 +3161,8 @@
 class E19 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E19> values = #C41;
   static const field self::E19 element = #C40;
-  const constructor •(core::int index, core::String name) → self::E19
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E19
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E19.${this.{core::_Enum::_name}{core::String}}";
@@ -3170,8 +3170,8 @@
 class E20 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E20> values = #C43;
   static const field self::E20 element = #C42;
-  const constructor •(core::int index, core::String name) → self::E20
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E20
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E20.${this.{core::_Enum::_name}{core::String}}";
@@ -3184,8 +3184,8 @@
 class E21 extends self::_E21&_Enum&C /*isEnum*/  {
   static const field core::List<self::E21> values = #C45;
   static const field self::E21 element = #C44;
-  const constructor •(core::int index, core::String name) → self::E21
-    : super self::_E21&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E21
+    : super self::_E21&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E21.${this.{core::_Enum::_name}{core::String}}";
@@ -3198,8 +3198,8 @@
 class E22 extends self::_E22&_Enum&C /*isEnum*/  {
   static const field core::List<self::E22> values = #C47;
   static const field self::E22 element = #C46;
-  const constructor •(core::int index, core::String name) → self::E22
-    : super self::_E22&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E22
+    : super self::_E22&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E22.${this.{core::_Enum::_name}{core::String}}";
@@ -3207,8 +3207,8 @@
 class E23 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E23> values = #C49;
   static const field self::E23 element = #C48;
-  const constructor •(core::int index, core::String name) → self::E23
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E23
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E23.${this.{core::_Enum::_name}{core::String}}";
@@ -3216,8 +3216,8 @@
 class E24 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E24> values = #C51;
   static const field self::E24 element = #C50;
-  const constructor •(core::int index, core::String name) → self::E24
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E24
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E24.${this.{core::_Enum::_name}{core::String}}";
@@ -3230,8 +3230,8 @@
 class E25 extends self::_E25&_Enum&C /*isEnum*/  {
   static const field core::List<self::E25> values = #C53;
   static const field self::E25 element = #C52;
-  const constructor •(core::int index, core::String name) → self::E25
-    : super self::_E25&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E25
+    : super self::_E25&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E25.${this.{core::_Enum::_name}{core::String}}";
@@ -3239,8 +3239,8 @@
 class E26 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E26> values = #C55;
   static const field self::E26 element = #C54;
-  const constructor •(core::int index, core::String name) → self::E26
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E26
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E26.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.modular.expect
index fcda3be..a1ec92b 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.modular.expect
@@ -2951,8 +2951,8 @@
 class E extends self::_E&_Enum&C /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -2960,8 +2960,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C6;
   static const field self::E1 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -2969,8 +2969,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C8;
   static const field self::E2 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -2978,8 +2978,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C10;
   static const field self::E3 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -2992,8 +2992,8 @@
 class E4 extends self::_E4&_Enum&C /*isEnum*/  {
   static const field core::List<self::E4> values = #C12;
   static const field self::E4 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -3006,8 +3006,8 @@
 class E5 extends self::_E5&_Enum&C /*isEnum*/  {
   static const field core::List<self::E5> values = #C14;
   static const field self::E5 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -3020,8 +3020,8 @@
 class E6 extends self::_E6&_Enum&C /*isEnum*/  {
   static const field core::List<self::E6> values = #C16;
   static const field self::E6 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -3034,8 +3034,8 @@
 class E7 extends self::_E7&_Enum&C /*isEnum*/  {
   static const field core::List<self::E7> values = #C18;
   static const field self::E7 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -3048,8 +3048,8 @@
 class E8 extends self::_E8&_Enum&C /*isEnum*/  {
   static const field core::List<self::E8> values = #C20;
   static const field self::E8 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -3057,8 +3057,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C22;
   static const field self::E9 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -3066,8 +3066,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C24;
   static const field self::E10 element = #C23;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -3075,16 +3075,16 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C26;
   static const field self::E11 element = #C25;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
 }
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C27;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -3097,8 +3097,8 @@
 class E13 extends self::_E13&_Enum&C /*isEnum*/  {
   static const field core::List<self::E13> values = #C29;
   static const field self::E13 element = #C28;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super self::_E13&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super self::_E13&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -3111,8 +3111,8 @@
 class E14 extends self::_E14&_Enum&C /*isEnum*/  {
   static const field core::List<self::E14> values = #C31;
   static const field self::E14 element = #C30;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super self::_E14&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super self::_E14&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
@@ -3125,8 +3125,8 @@
 class E15 extends self::_E15&_Enum&D /*isEnum*/  {
   static const field core::List<self::E15> values = #C33;
   static const field self::E15 element = #C32;
-  const constructor •(core::int index, core::String name) → self::E15
-    : super self::_E15&_Enum&D::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E15
+    : super self::_E15&_Enum&D::•(#index, #name)
     ;
   method toString() → core::String
     return "E15.${this.{core::_Enum::_name}{core::String}}";
@@ -3134,8 +3134,8 @@
 class E16 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E16> values = #C35;
   static const field self::E16 element = #C34;
-  const constructor •(core::int index, core::String name) → self::E16
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E16
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E16.${this.{core::_Enum::_name}{core::String}}";
@@ -3143,8 +3143,8 @@
 class E17 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E17> values = #C37;
   static const field self::E17 element = #C36;
-  const constructor •(core::int index, core::String name) → self::E17
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E17
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E17.${this.{core::_Enum::_name}{core::String}}";
@@ -3152,8 +3152,8 @@
 class E18 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E18> values = #C39;
   static const field self::E18 element = #C38;
-  const constructor •(core::int index, core::String name) → self::E18
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E18
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E18.${this.{core::_Enum::_name}{core::String}}";
@@ -3161,8 +3161,8 @@
 class E19 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E19> values = #C41;
   static const field self::E19 element = #C40;
-  const constructor •(core::int index, core::String name) → self::E19
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E19
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E19.${this.{core::_Enum::_name}{core::String}}";
@@ -3170,8 +3170,8 @@
 class E20 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E20> values = #C43;
   static const field self::E20 element = #C42;
-  const constructor •(core::int index, core::String name) → self::E20
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E20
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E20.${this.{core::_Enum::_name}{core::String}}";
@@ -3184,8 +3184,8 @@
 class E21 extends self::_E21&_Enum&C /*isEnum*/  {
   static const field core::List<self::E21> values = #C45;
   static const field self::E21 element = #C44;
-  const constructor •(core::int index, core::String name) → self::E21
-    : super self::_E21&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E21
+    : super self::_E21&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E21.${this.{core::_Enum::_name}{core::String}}";
@@ -3198,8 +3198,8 @@
 class E22 extends self::_E22&_Enum&C /*isEnum*/  {
   static const field core::List<self::E22> values = #C47;
   static const field self::E22 element = #C46;
-  const constructor •(core::int index, core::String name) → self::E22
-    : super self::_E22&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E22
+    : super self::_E22&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E22.${this.{core::_Enum::_name}{core::String}}";
@@ -3207,8 +3207,8 @@
 class E23 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E23> values = #C49;
   static const field self::E23 element = #C48;
-  const constructor •(core::int index, core::String name) → self::E23
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E23
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E23.${this.{core::_Enum::_name}{core::String}}";
@@ -3216,8 +3216,8 @@
 class E24 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E24> values = #C51;
   static const field self::E24 element = #C50;
-  const constructor •(core::int index, core::String name) → self::E24
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E24
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E24.${this.{core::_Enum::_name}{core::String}}";
@@ -3230,8 +3230,8 @@
 class E25 extends self::_E25&_Enum&C /*isEnum*/  {
   static const field core::List<self::E25> values = #C53;
   static const field self::E25 element = #C52;
-  const constructor •(core::int index, core::String name) → self::E25
-    : super self::_E25&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E25
+    : super self::_E25&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E25.${this.{core::_Enum::_name}{core::String}}";
@@ -3239,8 +3239,8 @@
 class E26 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E26> values = #C55;
   static const field self::E26 element = #C54;
-  const constructor •(core::int index, core::String name) → self::E26
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E26
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E26.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.outline.expect
index a59f1ed..c3daff7 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.outline.expect
@@ -2874,7 +2874,7 @@
 class E extends self::_E&_Enum&C /*isEnum*/  {
   static const field core::List<self::E> values = const <self::E>[self::E::element];
   static const field self::E element = const self::E::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E
+  const constructor •(core::int #index, core::String #name) → self::E
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -2882,8 +2882,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = const <self::E1>[self::E1::element];
   static const field self::E1 element = const self::E1::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -2891,8 +2891,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
   static const field self::E2 element = const self::E2::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -2900,8 +2900,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
   static const field self::E3 element = const self::E3::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -2914,7 +2914,7 @@
 class E4 extends self::_E4&_Enum&C /*isEnum*/  {
   static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
   static const field self::E4 element = const self::E4::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E4
+  const constructor •(core::int #index, core::String #name) → self::E4
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -2927,7 +2927,7 @@
 class E5 extends self::_E5&_Enum&C /*isEnum*/  {
   static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
   static const field self::E5 element = const self::E5::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E5
+  const constructor •(core::int #index, core::String #name) → self::E5
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -2940,7 +2940,7 @@
 class E6 extends self::_E6&_Enum&C /*isEnum*/  {
   static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
   static const field self::E6 element = const self::E6::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E6
+  const constructor •(core::int #index, core::String #name) → self::E6
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -2953,7 +2953,7 @@
 class E7 extends self::_E7&_Enum&C /*isEnum*/  {
   static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
   static const field self::E7 element = const self::E7::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E7
+  const constructor •(core::int #index, core::String #name) → self::E7
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -2966,7 +2966,7 @@
 class E8 extends self::_E8&_Enum&C /*isEnum*/  {
   static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
   static const field self::E8 element = const self::E8::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E8
+  const constructor •(core::int #index, core::String #name) → self::E8
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -2974,8 +2974,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
   static const field self::E9 element = const self::E9::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -2983,8 +2983,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
   static const field self::E10 element = const self::E10::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -2992,16 +2992,16 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = const <self::E11>[self::E11::element];
   static const field self::E11 element = const self::E11::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
 }
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = const <self::E12>[];
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -3014,7 +3014,7 @@
 class E13 extends self::_E13&_Enum&C /*isEnum*/  {
   static const field core::List<self::E13> values = const <self::E13>[self::E13::element];
   static const field self::E13 element = const self::E13::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E13
+  const constructor •(core::int #index, core::String #name) → self::E13
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -3027,7 +3027,7 @@
 class E14 extends self::_E14&_Enum&C /*isEnum*/  {
   static const field core::List<self::E14> values = const <self::E14>[self::E14::element];
   static const field self::E14 element = const self::E14::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E14
+  const constructor •(core::int #index, core::String #name) → self::E14
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
@@ -3040,7 +3040,7 @@
 class E15 extends self::_E15&_Enum&D /*isEnum*/  {
   static const field core::List<self::E15> values = const <self::E15>[self::E15::element];
   static const field self::E15 element = const self::E15::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E15
+  const constructor •(core::int #index, core::String #name) → self::E15
     ;
   method toString() → core::String
     return "E15.${this.{core::_Enum::_name}{core::String}}";
@@ -3048,8 +3048,8 @@
 class E16 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E16> values = const <self::E16>[self::E16::element];
   static const field self::E16 element = const self::E16::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E16
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E16
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E16.${this.{core::_Enum::_name}{core::String}}";
@@ -3057,8 +3057,8 @@
 class E17 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E17> values = const <self::E17>[self::E17::element];
   static const field self::E17 element = const self::E17::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E17
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E17
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E17.${this.{core::_Enum::_name}{core::String}}";
@@ -3066,8 +3066,8 @@
 class E18 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E18> values = const <self::E18>[self::E18::element];
   static const field self::E18 element = const self::E18::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E18
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E18
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E18.${this.{core::_Enum::_name}{core::String}}";
@@ -3075,8 +3075,8 @@
 class E19 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E19> values = const <self::E19>[self::E19::element];
   static const field self::E19 element = const self::E19::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E19
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E19
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E19.${this.{core::_Enum::_name}{core::String}}";
@@ -3084,8 +3084,8 @@
 class E20 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E20> values = const <self::E20>[self::E20::element];
   static const field self::E20 element = const self::E20::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E20
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E20
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E20.${this.{core::_Enum::_name}{core::String}}";
@@ -3098,7 +3098,7 @@
 class E21 extends self::_E21&_Enum&C /*isEnum*/  {
   static const field core::List<self::E21> values = const <self::E21>[self::E21::element];
   static const field self::E21 element = const self::E21::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E21
+  const constructor •(core::int #index, core::String #name) → self::E21
     ;
   method toString() → core::String
     return "E21.${this.{core::_Enum::_name}{core::String}}";
@@ -3111,7 +3111,7 @@
 class E22 extends self::_E22&_Enum&C /*isEnum*/  {
   static const field core::List<self::E22> values = const <self::E22>[self::E22::element];
   static const field self::E22 element = const self::E22::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E22
+  const constructor •(core::int #index, core::String #name) → self::E22
     ;
   method toString() → core::String
     return "E22.${this.{core::_Enum::_name}{core::String}}";
@@ -3119,8 +3119,8 @@
 class E23 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E23> values = const <self::E23>[self::E23::element];
   static const field self::E23 element = const self::E23::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E23
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E23
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E23.${this.{core::_Enum::_name}{core::String}}";
@@ -3128,8 +3128,8 @@
 class E24 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E24> values = const <self::E24>[self::E24::element];
   static const field self::E24 element = const self::E24::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E24
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E24
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E24.${this.{core::_Enum::_name}{core::String}}";
@@ -3142,7 +3142,7 @@
 class E25 extends self::_E25&_Enum&C /*isEnum*/  {
   static const field core::List<self::E25> values = const <self::E25>[self::E25::element];
   static const field self::E25 element = const self::E25::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E25
+  const constructor •(core::int #index, core::String #name) → self::E25
     ;
   method toString() → core::String
     return "E25.${this.{core::_Enum::_name}{core::String}}";
@@ -3150,8 +3150,8 @@
 class E26 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E26> values = const <self::E26>[self::E26::element];
   static const field self::E26 element = const self::E26::•(0, "element");
-  const constructor •(core::int index, core::String name) → self::E26
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E26
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E26.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.transformed.expect
index fcda3be..a1ec92b 100644
--- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.weak.transformed.expect
@@ -2951,8 +2951,8 @@
 class E extends self::_E&_Enum&C /*isEnum*/  {
   static const field core::List<self::E> values = #C4;
   static const field self::E element = #C3;
-  const constructor •(core::int index, core::String name) → self::E
-    : super self::_E&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super self::_E&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
@@ -2960,8 +2960,8 @@
 class E1 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E1> values = #C6;
   static const field self::E1 element = #C5;
-  const constructor •(core::int index, core::String name) → self::E1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E1.${this.{core::_Enum::_name}{core::String}}";
@@ -2969,8 +2969,8 @@
 class E2 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E2> values = #C8;
   static const field self::E2 element = #C7;
-  const constructor •(core::int index, core::String name) → self::E2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E2.${this.{core::_Enum::_name}{core::String}}";
@@ -2978,8 +2978,8 @@
 class E3 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E3> values = #C10;
   static const field self::E3 element = #C9;
-  const constructor •(core::int index, core::String name) → self::E3
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E3
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E3.${this.{core::_Enum::_name}{core::String}}";
@@ -2992,8 +2992,8 @@
 class E4 extends self::_E4&_Enum&C /*isEnum*/  {
   static const field core::List<self::E4> values = #C12;
   static const field self::E4 element = #C11;
-  const constructor •(core::int index, core::String name) → self::E4
-    : super self::_E4&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E4
+    : super self::_E4&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E4.${this.{core::_Enum::_name}{core::String}}";
@@ -3006,8 +3006,8 @@
 class E5 extends self::_E5&_Enum&C /*isEnum*/  {
   static const field core::List<self::E5> values = #C14;
   static const field self::E5 element = #C13;
-  const constructor •(core::int index, core::String name) → self::E5
-    : super self::_E5&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E5
+    : super self::_E5&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E5.${this.{core::_Enum::_name}{core::String}}";
@@ -3020,8 +3020,8 @@
 class E6 extends self::_E6&_Enum&C /*isEnum*/  {
   static const field core::List<self::E6> values = #C16;
   static const field self::E6 element = #C15;
-  const constructor •(core::int index, core::String name) → self::E6
-    : super self::_E6&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E6
+    : super self::_E6&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E6.${this.{core::_Enum::_name}{core::String}}";
@@ -3034,8 +3034,8 @@
 class E7 extends self::_E7&_Enum&C /*isEnum*/  {
   static const field core::List<self::E7> values = #C18;
   static const field self::E7 element = #C17;
-  const constructor •(core::int index, core::String name) → self::E7
-    : super self::_E7&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E7
+    : super self::_E7&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E7.${this.{core::_Enum::_name}{core::String}}";
@@ -3048,8 +3048,8 @@
 class E8 extends self::_E8&_Enum&C /*isEnum*/  {
   static const field core::List<self::E8> values = #C20;
   static const field self::E8 element = #C19;
-  const constructor •(core::int index, core::String name) → self::E8
-    : super self::_E8&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E8
+    : super self::_E8&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E8.${this.{core::_Enum::_name}{core::String}}";
@@ -3057,8 +3057,8 @@
 class E9 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E9> values = #C22;
   static const field self::E9 element = #C21;
-  const constructor •(core::int index, core::String name) → self::E9
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E9
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E9.${this.{core::_Enum::_name}{core::String}}";
@@ -3066,8 +3066,8 @@
 class E10 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E10> values = #C24;
   static const field self::E10 element = #C23;
-  const constructor •(core::int index, core::String name) → self::E10
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E10
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E10.${this.{core::_Enum::_name}{core::String}}";
@@ -3075,16 +3075,16 @@
 class E11 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E11> values = #C26;
   static const field self::E11 element = #C25;
-  const constructor •(core::int index, core::String name) → self::E11
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E11
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E11.${this.{core::_Enum::_name}{core::String}}";
 }
 class E12 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E12> values = #C27;
-  const constructor •(core::int index, core::String name) → self::E12
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E12
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E12.${this.{core::_Enum::_name}{core::String}}";
@@ -3097,8 +3097,8 @@
 class E13 extends self::_E13&_Enum&C /*isEnum*/  {
   static const field core::List<self::E13> values = #C29;
   static const field self::E13 element = #C28;
-  const constructor •(core::int index, core::String name) → self::E13
-    : super self::_E13&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E13
+    : super self::_E13&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E13.${this.{core::_Enum::_name}{core::String}}";
@@ -3111,8 +3111,8 @@
 class E14 extends self::_E14&_Enum&C /*isEnum*/  {
   static const field core::List<self::E14> values = #C31;
   static const field self::E14 element = #C30;
-  const constructor •(core::int index, core::String name) → self::E14
-    : super self::_E14&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E14
+    : super self::_E14&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E14.${this.{core::_Enum::_name}{core::String}}";
@@ -3125,8 +3125,8 @@
 class E15 extends self::_E15&_Enum&D /*isEnum*/  {
   static const field core::List<self::E15> values = #C33;
   static const field self::E15 element = #C32;
-  const constructor •(core::int index, core::String name) → self::E15
-    : super self::_E15&_Enum&D::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E15
+    : super self::_E15&_Enum&D::•(#index, #name)
     ;
   method toString() → core::String
     return "E15.${this.{core::_Enum::_name}{core::String}}";
@@ -3134,8 +3134,8 @@
 class E16 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E16> values = #C35;
   static const field self::E16 element = #C34;
-  const constructor •(core::int index, core::String name) → self::E16
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E16
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E16.${this.{core::_Enum::_name}{core::String}}";
@@ -3143,8 +3143,8 @@
 class E17 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E17> values = #C37;
   static const field self::E17 element = #C36;
-  const constructor •(core::int index, core::String name) → self::E17
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E17
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E17.${this.{core::_Enum::_name}{core::String}}";
@@ -3152,8 +3152,8 @@
 class E18 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E18> values = #C39;
   static const field self::E18 element = #C38;
-  const constructor •(core::int index, core::String name) → self::E18
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E18
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E18.${this.{core::_Enum::_name}{core::String}}";
@@ -3161,8 +3161,8 @@
 class E19 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E19> values = #C41;
   static const field self::E19 element = #C40;
-  const constructor •(core::int index, core::String name) → self::E19
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E19
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E19.${this.{core::_Enum::_name}{core::String}}";
@@ -3170,8 +3170,8 @@
 class E20 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E20> values = #C43;
   static const field self::E20 element = #C42;
-  const constructor •(core::int index, core::String name) → self::E20
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E20
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E20.${this.{core::_Enum::_name}{core::String}}";
@@ -3184,8 +3184,8 @@
 class E21 extends self::_E21&_Enum&C /*isEnum*/  {
   static const field core::List<self::E21> values = #C45;
   static const field self::E21 element = #C44;
-  const constructor •(core::int index, core::String name) → self::E21
-    : super self::_E21&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E21
+    : super self::_E21&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E21.${this.{core::_Enum::_name}{core::String}}";
@@ -3198,8 +3198,8 @@
 class E22 extends self::_E22&_Enum&C /*isEnum*/  {
   static const field core::List<self::E22> values = #C47;
   static const field self::E22 element = #C46;
-  const constructor •(core::int index, core::String name) → self::E22
-    : super self::_E22&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E22
+    : super self::_E22&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E22.${this.{core::_Enum::_name}{core::String}}";
@@ -3207,8 +3207,8 @@
 class E23 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E23> values = #C49;
   static const field self::E23 element = #C48;
-  const constructor •(core::int index, core::String name) → self::E23
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E23
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E23.${this.{core::_Enum::_name}{core::String}}";
@@ -3216,8 +3216,8 @@
 class E24 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E24> values = #C51;
   static const field self::E24 element = #C50;
-  const constructor •(core::int index, core::String name) → self::E24
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E24
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E24.${this.{core::_Enum::_name}{core::String}}";
@@ -3230,8 +3230,8 @@
 class E25 extends self::_E25&_Enum&C /*isEnum*/  {
   static const field core::List<self::E25> values = #C53;
   static const field self::E25 element = #C52;
-  const constructor •(core::int index, core::String name) → self::E25
-    : super self::_E25&_Enum&C::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E25
+    : super self::_E25&_Enum&C::•(#index, #name)
     ;
   method toString() → core::String
     return "E25.${this.{core::_Enum::_name}{core::String}}";
@@ -3239,8 +3239,8 @@
 class E26 extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E26> values = #C55;
   static const field self::E26 element = #C54;
-  const constructor •(core::int index, core::String name) → self::E26
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E26
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E26.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.expect b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.expect
index 2976547..f28b690 100644
--- a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.expect
@@ -29,8 +29,8 @@
   static const field self::Enum1 a = #C3;
   static const field self::Enum1 b = #C6;
   static const field self::Enum1 c = #C9;
-  const constructor •(core::int index, core::String name) → self::Enum1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
@@ -61,8 +61,8 @@
   static const field self2::Enum2 a = #C11;
   static const field self2::Enum2 b = #C12;
   static const field self2::Enum2 c = #C13;
-  const constructor •(core::int index, core::String name) → self2::Enum2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self2::Enum2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.modular.expect
index 8b09079..da73606 100644
--- a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.modular.expect
@@ -29,8 +29,8 @@
   static const field self::Enum1 a = #C3;
   static const field self::Enum1 b = #C6;
   static const field self::Enum1 c = #C9;
-  const constructor •(core::int index, core::String name) → self::Enum1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.outline.expect
index cc966f8..58d6004 100644
--- a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.outline.expect
@@ -10,8 +10,8 @@
   static const field self::Enum1 a = const self::Enum1::•(0, "a");
   static const field self::Enum1 b = const self::Enum1::•(1, "b");
   static const field self::Enum1 c = const self::Enum1::•(2, "c");
-  const constructor •(core::int index, core::String name) → self::Enum1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
@@ -31,8 +31,8 @@
   static const field self2::Enum2 a = #C3;
   static const field self2::Enum2 b = #C6;
   static const field self2::Enum2 c = #C9;
-  const constructor •(core::int index, core::String name) → self2::Enum2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self2::Enum2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.transformed.expect
index 2976547..f28b690 100644
--- a/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/instantiate_enum/main.dart.weak.transformed.expect
@@ -29,8 +29,8 @@
   static const field self::Enum1 a = #C3;
   static const field self::Enum1 b = #C6;
   static const field self::Enum1 c = #C9;
-  const constructor •(core::int index, core::String name) → self::Enum1
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum1
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum1.${this.{core::_Enum::_name}{core::String}}";
@@ -61,8 +61,8 @@
   static const field self2::Enum2 a = #C11;
   static const field self2::Enum2 b = #C12;
   static const field self2::Enum2 c = #C13;
-  const constructor •(core::int index, core::String name) → self2::Enum2
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self2::Enum2
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum2.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487.dart.weak.expect b/pkg/front_end/testcases/general/issue48487.dart.weak.expect
index 9b35946..5a205df 100644
--- a/pkg/front_end/testcases/general/issue48487.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue48487.dart.weak.expect
@@ -16,8 +16,8 @@
 class T extends core::_Enum /*isEnum*/  {
   static const field core::List<self::T> values = #C4;
   static const field self::T t = #C3;
-  const constructor •(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue48487.dart.weak.modular.expect
index 9b35946..5a205df 100644
--- a/pkg/front_end/testcases/general/issue48487.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue48487.dart.weak.modular.expect
@@ -16,8 +16,8 @@
 class T extends core::_Enum /*isEnum*/  {
   static const field core::List<self::T> values = #C4;
   static const field self::T t = #C3;
-  const constructor •(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue48487.dart.weak.outline.expect
index 56e3e53..e322955 100644
--- a/pkg/front_end/testcases/general/issue48487.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue48487.dart.weak.outline.expect
@@ -16,8 +16,8 @@
 class T extends core::_Enum /*isEnum*/  {
   static const field core::List<self::T> values = const <self::T>[self::T::t];
   static const field self::T t = const self::T::•(0, "t");
-  const constructor •(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue48487.dart.weak.transformed.expect
index 9b35946..5a205df 100644
--- a/pkg/front_end/testcases/general/issue48487.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue48487.dart.weak.transformed.expect
@@ -16,8 +16,8 @@
 class T extends core::_Enum /*isEnum*/  {
   static const field core::List<self::T> values = #C4;
   static const field self::T t = #C3;
-  const constructor •(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487b.dart.weak.expect b/pkg/front_end/testcases/general/issue48487b.dart.weak.expect
index 444b382..adeab81 100644
--- a/pkg/front_end/testcases/general/issue48487b.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue48487b.dart.weak.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/general/issue48487b.dart:8:3: Error: Couldn't find constructor 'T'.
   t;
   ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487b.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue48487b.dart.weak.modular.expect
index 444b382..adeab81 100644
--- a/pkg/front_end/testcases/general/issue48487b.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue48487b.dart.weak.modular.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/general/issue48487b.dart:8:3: Error: Couldn't find constructor 'T'.
   t;
   ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487b.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue48487b.dart.weak.outline.expect
index 5c0a1c4..eed1378 100644
--- a/pkg/front_end/testcases/general/issue48487b.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue48487b.dart.weak.outline.expect
@@ -18,8 +18,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/general/issue48487b.dart:8:3: Error: Couldn't find constructor 'T'.
   t;
   ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/issue48487b.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue48487b.dart.weak.transformed.expect
index 444b382..adeab81 100644
--- a/pkg/front_end/testcases/general/issue48487b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue48487b.dart.weak.transformed.expect
@@ -20,8 +20,8 @@
   static const field self::T t = invalid-expression "pkg/front_end/testcases/general/issue48487b.dart:8:3: Error: Couldn't find constructor 'T'.
   t;
   ^";
-  const constructor named(core::int index, core::String name) → self::T
-    : super core::_Enum::•(index, name)
+  const constructor named(core::int #index, core::String #name) → self::T
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "T.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect
index 1732e11..55cf7fe 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect
@@ -8,8 +8,8 @@
   static const field self::E E1 = #C4;
   static const field self::E E2 = #C7;
   static const field self::E E3 = #C10;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect
index 1732e11..55cf7fe 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect
@@ -8,8 +8,8 @@
   static const field self::E E1 = #C4;
   static const field self::E E2 = #C7;
   static const field self::E E3 = #C10;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect
index 8cd295c..e4cab75 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect
@@ -8,8 +8,8 @@
   static const field self::E E1 = const self::E::•(0, "E1");
   static const field self::E E2 = const self::E::•(1, "E2");
   static const field self::E E3 = const self::E::•(2, "E3");
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect
index 1732e11..55cf7fe 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect
@@ -8,8 +8,8 @@
   static const field self::E E1 = #C4;
   static const field self::E E2 = #C7;
   static const field self::E E3 = #C10;
-  const constructor •(core::int index, core::String name) → self::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
index 8d83ce0..90a9879 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
@@ -36,8 +36,8 @@
     static const field main::CompilationStrategy* toKernel = #C7;
     static const field main::CompilationStrategy* toData = #C10;
     static const field main::CompilationStrategy* fromData = #C13;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
index fb4d5d2..7373cee 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
@@ -36,8 +36,8 @@
     static const field main::CompilationStrategy* toKernel = #C7;
     static const field main::CompilationStrategy* toData = #C10;
     static const field main::CompilationStrategy* fromData = #C13;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
index 9a2c561..59e6822 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
@@ -43,8 +43,8 @@
     static const field main::CompilationStrategy* toKernel = #C7;
     static const field main::CompilationStrategy* toData = #C10;
     static const field main::CompilationStrategy* fromData = #C13;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
index f7c5aab..9008ffe 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
@@ -43,8 +43,8 @@
     static const field main::CompilationStrategy* toKernel = #C7;
     static const field main::CompilationStrategy* toData = #C10;
     static const field main::CompilationStrategy* fromData = #C13;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
index 8d5b971..bc00082 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
@@ -36,8 +36,8 @@
     static const field main::CompilationStrategy* toKernel = #C7;
     static const field main::CompilationStrategy* toData = #C10;
     static const field main::CompilationStrategy* fromData = #C13;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
index a3acf52..69f385d 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
@@ -52,8 +52,8 @@
     static const field main::CompilationStrategy* toData = #C11;
     @#C1
     static const field main::CompilationStrategy* fromData = #C14;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
index a3acf52..69f385d 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
@@ -52,8 +52,8 @@
     static const field main::CompilationStrategy* toData = #C11;
     @#C1
     static const field main::CompilationStrategy* fromData = #C14;
-    const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
-      : super dart.core::_Enum::•(index, name)
+    const constructor •(dart.core::int* #index, dart.core::String* #name) → main::CompilationStrategy*
+      : super dart.core::_Enum::•(#index, #name)
       ;
     method toString() → dart.core::String*
       return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.expect
index 4cd6fc3..6ba5551 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = #C4;
   static const field self::E* v1 = #C3;
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.modular.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.modular.expect
index 4cd6fc3..6ba5551 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.modular.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = #C4;
   static const field self::E* v1 = #C3;
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.outline.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.outline.expect
index ef3d712..40a64df 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.outline.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = const <self::E*>[self::E::v1];
   static const field self::E* v1 = const self::E::•(0, "v1");
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.transformed.expect
index 4cd6fc3..6ba5551 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = #C4;
   static const field self::E* v1 = #C3;
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.expect
index dcbfa43..c012545 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = #C4;
   static const field self::E* v1 = #C3;
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.modular.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.modular.expect
index dcbfa43..c012545 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.modular.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = #C4;
   static const field self::E* v1 = #C3;
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.outline.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.outline.expect
index 553e8da..f2f6482 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.outline.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = const <self::E*>[self::E::v1];
   static const field self::E* v1 = const self::E::•(0, "v1");
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.transformed.expect
index dcbfa43..c012545 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
 class E extends core::_Enum /*isEnum*/  {
   static const field core::List<self::E*>* values = #C4;
   static const field self::E* v1 = #C3;
-  const constructor •(core::int* index, core::String* name) → self::E*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::E*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
index 99358d9..9921c30 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
@@ -62,8 +62,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum a = #C3;
   static const field self::Enum b = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
index 6200c9f..d1fe484 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
@@ -62,8 +62,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum a = #C3;
   static const field self::Enum b = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
index 015e678..e388444 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
@@ -63,8 +63,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum a = #C3;
   static const field self::Enum b = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.modular.expect
index 015e678..e388444 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.modular.expect
@@ -63,8 +63,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum a = #C3;
   static const field self::Enum b = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.outline.expect
index 39ab74e..7da0890 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.outline.expect
@@ -9,8 +9,8 @@
   static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::a, self::Enum::b];
   static const field self::Enum a = const self::Enum::•(0, "a");
   static const field self::Enum b = const self::Enum::•(1, "b");
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
index 43cc638..1017e98 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
@@ -63,8 +63,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum a = #C3;
   static const field self::Enum b = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
index ba9e958..d8b9a5d 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum e1 = #C3;
   static const field self::Enum e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
index ba9e958..d8b9a5d 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
@@ -13,8 +13,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum e1 = #C3;
   static const field self::Enum e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
index f2bdd6e..4853ed6 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
@@ -14,8 +14,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum e1 = #C3;
   static const field self::Enum e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.modular.expect
index f2bdd6e..4853ed6 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.modular.expect
@@ -14,8 +14,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum e1 = #C3;
   static const field self::Enum e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.outline.expect
index 0c365ed..aec1f7c 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.outline.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::e1, self::Enum::e2];
   static const field self::Enum e1 = const self::Enum::•(0, "e1");
   static const field self::Enum e2 = const self::Enum::•(1, "e2");
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
index f2bdd6e..4853ed6 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
@@ -14,8 +14,8 @@
   static const field core::List<self::Enum> values = #C7;
   static const field self::Enum e1 = #C3;
   static const field self::Enum e2 = #C6;
-  const constructor •(core::int index, core::String name) → self::Enum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::Enum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "Enum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
index 2f07c05..c6672f7 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
@@ -432,8 +432,8 @@
   static const field core::List<uns::E> values = #C8;
   static const field uns::E e1 = #C3;
   static const field uns::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → uns::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → uns::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect
index 2f07c05..c6672f7 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect
@@ -432,8 +432,8 @@
   static const field core::List<uns::E> values = #C8;
   static const field uns::E e1 = #C3;
   static const field uns::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → uns::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → uns::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.outline.expect
index f33df52..f700ed6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.outline.expect
@@ -205,8 +205,8 @@
   static const field core::List<self2::E> values = const <self2::E>[self2::E::e1, self2::E::e2];
   static const field self2::E e1 = const self2::E::•(0, "e1");
   static const field self2::E e2 = const self2::E::•(1, "e2");
-  const constructor •(core::int index, core::String name) → self2::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self2::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
index 53688d7..0540b4d 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
@@ -432,8 +432,8 @@
   static const field core::List<uns::E> values = #C8;
   static const field uns::E e1 = #C3;
   static const field uns::E e2 = #C6;
-  const constructor •(core::int index, core::String name) → uns::E
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → uns::E
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/rasta/enum.dart.weak.expect b/pkg/front_end/testcases/rasta/enum.dart.weak.expect
index 092ba49..ce798e5 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.weak.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::Foo*>* values = #C7;
   static const field self::Foo* ec1 = #C3;
   static const field self::Foo* ec2 = #C6;
-  const constructor •(core::int* index, core::String* name) → self::Foo*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::Foo*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/rasta/enum.dart.weak.modular.expect b/pkg/front_end/testcases/rasta/enum.dart.weak.modular.expect
index 092ba49..ce798e5 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.weak.modular.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::Foo*>* values = #C7;
   static const field self::Foo* ec1 = #C3;
   static const field self::Foo* ec2 = #C6;
-  const constructor •(core::int* index, core::String* name) → self::Foo*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::Foo*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/rasta/enum.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/enum.dart.weak.outline.expect
index ce9532d..e98c789 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.weak.outline.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::Foo*>* values = const <self::Foo*>[self::Foo::ec1, self::Foo::ec2];
   static const field self::Foo* ec1 = const self::Foo::•(0, "ec1");
   static const field self::Foo* ec2 = const self::Foo::•(1, "ec2");
-  const constructor •(core::int* index, core::String* name) → self::Foo*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::Foo*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/rasta/enum.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/enum.dart.weak.transformed.expect
index 092ba49..ce798e5 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.weak.transformed.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::Foo*>* values = #C7;
   static const field self::Foo* ec1 = #C3;
   static const field self::Foo* ec2 = #C6;
-  const constructor •(core::int* index, core::String* name) → self::Foo*
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int* #index, core::String* #name) → self::Foo*
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String*
     return "Foo.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.expect
index c15892f..f7a4335 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::A> values = #C7;
   static const field self::A a = #C3;
   static const field self::A b = #C6;
-  const constructor •(core::int index, core::String name) → self::A
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::A
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.transformed.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.transformed.expect
index c15892f..f7a4335 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.strong.transformed.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::A> values = #C7;
   static const field self::A a = #C3;
   static const field self::A b = #C6;
-  const constructor •(core::int index, core::String name) → self::A
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::A
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect
index 4f9cbd3..18c3676 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::A> values = #C7;
   static const field self::A a = #C3;
   static const field self::A b = #C6;
-  const constructor •(core::int index, core::String name) → self::A
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::A
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.modular.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.modular.expect
index 4f9cbd3..18c3676 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.modular.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::A> values = #C7;
   static const field self::A a = #C3;
   static const field self::A b = #C6;
-  const constructor •(core::int index, core::String name) → self::A
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::A
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.outline.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.outline.expect
index a811664..a0fd99c 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.outline.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::A> values = const <self::A>[self::A::a, self::A::b];
   static const field self::A a = const self::A::•(0, "a");
   static const field self::A b = const self::A::•(1, "b");
-  const constructor •(core::int index, core::String name) → self::A
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::A
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect
index 4f9cbd3..18c3676 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect
@@ -6,8 +6,8 @@
   static const field core::List<self::A> values = #C7;
   static const field self::A a = #C3;
   static const field self::A b = #C6;
-  const constructor •(core::int index, core::String name) → self::A
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::A
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "A.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect b/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect
index 6d48b41..5a3a770 100644
--- a/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect
+++ b/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect
@@ -24,8 +24,8 @@
   static const field self::FooEnum A = #C4;
   static const field self::FooEnum B = #C7;
   static const field self::FooEnum C = #C10;
-  const constructor •(core::int index, core::String name) → self::FooEnum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::FooEnum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "FooEnum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect b/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect
index 75d87ae..250e52d 100644
--- a/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect
+++ b/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect
@@ -24,8 +24,8 @@
   static const field self::FooEnum A = #C4;
   static const field self::FooEnum B = #C7;
   static const field self::FooEnum C = #C10;
-  const constructor •(core::int index, core::String name) → self::FooEnum
-    : super core::_Enum::•(index, name)
+  const constructor •(core::int #index, core::String #name) → self::FooEnum
+    : super core::_Enum::•(#index, #name)
     ;
   method toString() → core::String
     return "FooEnum.${this.{core::_Enum::_name}{core::String}}";
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect b/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
index 4f6ab2a..ae5eef8 100644
--- a/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
@@ -16,9 +16,9 @@
 RESULT: _T {}?
 ------------ TestEnum. ------------
 %this = _Parameter #0 [_T (#lib::TestEnum)+]
-%index = _Parameter #1 [_T (dart.core::int)+?]
-%name = _Parameter #2 [_T (dart.core::String)+?]
-t3 = _Call direct [dart.core::_Enum.] (%this, %index, %name)
+%#index = _Parameter #1 [_T (dart.core::int)+?]
+%#name = _Parameter #2 [_T (dart.core::String)+?]
+t3 = _Call direct [dart.core::_Enum.] (%this, %#index, %#name)
 RESULT: _T {}?
 ------------ TestEnum.toString ------------
 %this = _Parameter #0 [_T (#lib::TestEnum)+]
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 823e4a8..44c61f9 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -2405,6 +2405,12 @@
                 new Range(RangeBoundary::FromConstant(shift_amount),
                           RangeBoundary::FromConstant(shift_amount)));
           }
+          if (!MayThrow()) {
+            ASSERT(!shift->MayThrow());
+          }
+          if (!CanDeoptimize()) {
+            ASSERT(!shift->CanDeoptimize());
+          }
           flow_graph->InsertBefore(this, shift, env(), FlowGraph::kValue);
           return shift;
         }
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 55899ac..08971e8 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -8162,7 +8162,7 @@
     return kNotSpeculative;
   }
   virtual bool ComputeCanDeoptimize() const { return false; }
-  virtual bool MayThrow() const { return true; }
+  virtual bool MayThrow() const { return !IsShiftCountInRange(); }
 
   virtual Representation representation() const { return kUnboxedInt64; }
 
diff --git a/tools/VERSION b/tools/VERSION
index ef07cf2..dd9f35e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 139
+PRERELEASE 140
 PRERELEASE_PATCH 0
\ No newline at end of file
