Version 2.16.0-136.0.dev

Merge commit '58255db1d3d439c24da04de370e2fdf42c825117' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
index ecc964c..a77692c 100644
--- a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
@@ -121,7 +121,8 @@
       int charOffset,
       int charEndOffset,
       IndexedClass? referencesFromIndexed,
-      Scope scope) {
+      Scope scope,
+      ConstructorScope constructorScope) {
     assert(enumConstantInfos == null || enumConstantInfos.isNotEmpty);
 
     Uri fileUri = parent.fileUri;
@@ -374,7 +375,7 @@
             parent: parent.scope,
             debugName: "enum $name",
             isModifiable: false),
-        new ConstructorScope(name, constructors),
+        constructorScope..local.addAll(constructors),
         cls,
         enumConstantInfos,
         intType,
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro.dart b/pkg/front_end/lib/src/fasta/kernel/macro.dart
index afa9dca..dd6dfb1 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro.dart
@@ -6,7 +6,8 @@
 
 bool enableMacros = false;
 
-final Uri macroLibraryUri = Uri.parse('package:macro_builder/src/macro.dart');
+final Uri macroLibraryUri =
+    Uri.parse('package:_fe_analyzer_shared/src/macros/api.dart');
 const String macroClassName = 'Macro';
 
 class MacroDeclarationData {
@@ -26,9 +27,7 @@
 }
 
 class LibraryMacroApplicationData {
-  MacroApplications? libraryApplications;
   Map<Class, ClassMacroApplicationData> classData = {};
-  Map<Typedef, MacroApplications> typedefApplications = {};
   Map<Member, MacroApplications> memberApplications = {};
 }
 
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 82bbe12..c4e44e2 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -1775,6 +1775,7 @@
         case _MethodKind.classConstructor:
         case _MethodKind.mixinConstructor:
         case _MethodKind.extensionConstructor:
+        case _MethodKind.enumConstructor:
           constructorName = libraryBuilder.computeAndValidateConstructorName(
                   name, charOffset) ??
               name as String?;
@@ -2340,6 +2341,14 @@
   @override
   void handleEnumElements(Token elementsEndToken, int elementsCount) {
     debugEvent("EnumElements");
+    push(elementsCount);
+  }
+
+  @override
+  void endEnum(Token enumKeyword, Token leftBrace, int memberCount) {
+    debugEvent("Enum");
+
+    int elementsCount = pop() as int;
     List<EnumConstantInfo?>? enumConstantInfos =
         const FixedNullableList<EnumConstantInfo>().pop(stack, elementsCount);
     int endCharOffset = popCharOffset();
@@ -2354,19 +2363,15 @@
     checkEmpty(startCharOffset);
 
     if (name is! ParserRecovery) {
-      libraryBuilder.addEnum(metadata, name as String, enumConstantInfos,
-          startCharOffset, charOffset, endCharOffset);
+      libraryBuilder.addEnum(metadata, name as String, typeVariables,
+          enumConstantInfos, startCharOffset, charOffset, endCharOffset);
     } else {
       libraryBuilder
           .endNestedDeclaration(
               TypeParameterScopeKind.enumDeclaration, "<syntax-error>")
           .resolveNamedTypes(typeVariables, libraryBuilder);
     }
-  }
 
-  @override
-  void endEnum(Token enumKeyword, Token leftBrace, int memberCount) {
-    debugEvent("Enum");
     checkEmpty(enumKeyword.charOffset);
     popDeclarationContext(DeclarationContext.Enum);
   }
@@ -3029,7 +3034,6 @@
     pop(); // name
     pop(); // modifiers
     pop(); // metadata
-    checkEmpty(beginToken.charOffset);
     popDeclarationContext();
     // TODO(cstefantsova): Use actual type parameters.
     libraryBuilder
@@ -3068,7 +3072,6 @@
     int modifiers = Modifier.toMask(pop() as List<Modifier>?);
     popCharOffset(); // final or const offset
     pop(); // metadata
-    checkEmpty(beginToken.charOffset);
     popDeclarationContext();
     TypeParameterScopeKind scopeKind;
     if ((modifiers & staticMask) != 0) {
@@ -3107,7 +3110,6 @@
     popFieldInfos(count); // field infos
     pop(); // type
     pop(); // metadata
-    checkEmpty(beginToken.charOffset);
     popDeclarationContext();
     // Skip the declaration. An error as already been produced by the parser.
 
@@ -3123,36 +3125,15 @@
   @override
   void endEnumConstructor(Token? getOrSet, Token beginToken, Token beginParam,
       Token? beginInitializers, Token endToken) {
-    // TODO(cstefantsova): Call endClassConstructor instead.
-    debugEvent("EnumMethod");
-    MethodBody bodyKind = pop() as MethodBody;
-    if (bodyKind == MethodBody.RedirectingFactoryBody) {
-      pop(); // reference
-    }
-    pop(); // async marker
-    pop(); // formals
-    popCharOffset(); // formals char offset
-    pop(); // type variables
-    popCharOffset(); // char offset
-    pop(); // name
-    pop(); // return type
-    pop(); // modifiers
-    popCharOffset(); // final or const offset
-    pop(); // metadata
-    checkEmpty(beginToken.charOffset);
-    popDeclarationContext();
-    // TODO(cstefantsova): Use actual type parameters.
-    libraryBuilder
-        .endNestedDeclaration(TypeParameterScopeKind.instanceMethod, "#method")
-        .resolveNamedTypes([], libraryBuilder);
-    // Skip the declaration. An error as already been produced by the parser.
-
     if (!libraryBuilder.enableEnhancedEnumsInLibrary) {
       addProblem(
           templateExperimentNotEnabled.withArguments('enhanced-enums',
               libraryBuilder.enableEnhancedEnumsVersionInLibrary.toText()),
           beginToken.charOffset,
           -1);
+    } else {
+      _endClassMethod(getOrSet, beginToken, beginParam, beginInitializers,
+          endToken, _MethodKind.enumConstructor);
     }
   }
 
@@ -3337,4 +3318,5 @@
   mixinMethod,
   extensionConstructor,
   extensionMethod,
+  enumConstructor,
 }
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 3c68b27..03de64a 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -2815,6 +2815,7 @@
   void addEnum(
       List<MetadataBuilder>? metadata,
       String name,
+      List<TypeVariableBuilder>? typeVariables,
       List<EnumConstantInfo?>? enumConstantInfos,
       int startCharOffset,
       int charOffset,
@@ -2829,7 +2830,11 @@
     TypeParameterScopeBuilder declaration =
         endNestedDeclaration(TypeParameterScopeKind.enumDeclaration, name)
           ..resolveNamedTypes([], this);
-    EnumBuilder builder = new EnumBuilder(
+    Map<String, Builder> members = declaration.members!;
+    Map<String, MemberBuilder> constructors = declaration.constructors!;
+    Map<String, MemberBuilder> setters = declaration.setters!;
+
+    EnumBuilder enumBuilder = new EnumBuilder(
         metadata,
         name,
         enumConstantInfos,
@@ -2839,12 +2844,44 @@
         charEndOffset,
         referencesFromIndexedClass,
         new Scope(
-            local: declaration.members!,
-            setters: declaration.setters!,
+            local: members,
+            setters: setters,
             parent: scope.withTypeVariables(<TypeVariableBuilder>[]),
             debugName: "enum $name",
-            isModifiable: false));
-    addBuilder(name, builder, charOffset,
+            isModifiable: false),
+        new ConstructorScope(name, constructors));
+
+    Map<String, TypeVariableBuilder>? typeVariablesByName =
+        checkTypeVariables(typeVariables, enumBuilder);
+
+    void setParent(String name, MemberBuilder? member) {
+      while (member != null) {
+        member.parent = enumBuilder;
+        member = member.next as MemberBuilder?;
+      }
+    }
+
+    void setParentAndCheckConflicts(String name, Builder member) {
+      if (typeVariablesByName != null) {
+        TypeVariableBuilder? tv = typeVariablesByName[name];
+        if (tv != null) {
+          enumBuilder.addProblem(
+              templateConflictsWithTypeVariable.withArguments(name),
+              member.charOffset,
+              name.length,
+              context: [
+                messageConflictsWithTypeVariableCause.withLocation(
+                    tv.fileUri!, tv.charOffset, name.length)
+              ]);
+        }
+      }
+      setParent(name, member as MemberBuilder);
+    }
+
+    members.forEach(setParentAndCheckConflicts);
+    constructors.forEach(setParentAndCheckConflicts);
+    setters.forEach(setParentAndCheckConflicts);
+    addBuilder(name, enumBuilder, charOffset,
         getterReference: referencesFromIndexedClass?.cls.reference);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index 2f6b52c..e0779c4 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -1409,8 +1409,6 @@
       LibraryMacroApplicationData libraryMacroApplicationData =
           new LibraryMacroApplicationData();
       Library library = libraryBuilder.library;
-      libraryMacroApplicationData.libraryApplications =
-          computeApplications(library.annotations);
       for (Class cls in library.classes) {
         ClassMacroApplicationData classMacroApplicationData =
             new ClassMacroApplicationData();
@@ -1438,17 +1436,7 @@
               macroApplications;
         }
       }
-      for (Typedef typedef in library.typedefs) {
-        MacroApplications? macroApplications =
-            computeApplications(typedef.annotations);
-        if (macroApplications != null) {
-          libraryMacroApplicationData.typedefApplications[typedef] =
-              macroApplications;
-        }
-      }
-      if (libraryMacroApplicationData.libraryApplications != null ||
-          libraryMacroApplicationData.classData.isNotEmpty ||
-          libraryMacroApplicationData.typedefApplications.isNotEmpty ||
+      if (libraryMacroApplicationData.classData.isNotEmpty ||
           libraryMacroApplicationData.memberApplications.isNotEmpty) {
         if (retainDataForTesting) {
           dataForTesting!.macroApplicationData.libraryData[library] =
diff --git a/pkg/front_end/test/macros/data/package_config.json b/pkg/front_end/test/macros/data/package_config.json
index 97031ce..9de8189 100644
--- a/pkg/front_end/test/macros/data/package_config.json
+++ b/pkg/front_end/test/macros/data/package_config.json
@@ -6,8 +6,8 @@
       "rootUri": "pkgs/macro/lib/"
     },
     {
-      "name": "macro_builder",
-      "rootUri": "pkgs/macro_builder/lib/"
+      "name": "_fe_analyzer_shared",
+      "rootUri": "../../../../_fe_analyzer_shared/lib/"
     }
   ]
 }
\ No newline at end of file
diff --git a/pkg/front_end/test/macros/data/pkgs/macro/lib/macro.dart b/pkg/front_end/test/macros/data/pkgs/macro/lib/macro.dart
index f79b175..d7bf92d 100644
--- a/pkg/front_end/test/macros/data/pkgs/macro/lib/macro.dart
+++ b/pkg/front_end/test/macros/data/pkgs/macro/lib/macro.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class Macro1 implements Macro {
   const Macro1();
diff --git a/pkg/front_end/test/macros/data/pkgs/macro_builder/lib/macro_builder.dart b/pkg/front_end/test/macros/data/pkgs/macro_builder/lib/macro_builder.dart
deleted file mode 100644
index 14354da..0000000
--- a/pkg/front_end/test/macros/data/pkgs/macro_builder/lib/macro_builder.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-export 'src/macro.dart';
diff --git a/pkg/front_end/test/macros/data/pkgs/macro_builder/lib/src/macro.dart b/pkg/front_end/test/macros/data/pkgs/macro_builder/lib/src/macro.dart
deleted file mode 100644
index 434331b..0000000
--- a/pkg/front_end/test/macros/data/pkgs/macro_builder/lib/src/macro.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-class Macro {}
diff --git a/pkg/front_end/test/macros/data/tests/declare_macro.dart b/pkg/front_end/test/macros/data/tests/declare_macro.dart
index e6d329e..056edbd 100644
--- a/pkg/front_end/test/macros/data/tests/declare_macro.dart
+++ b/pkg/front_end/test/macros/data/tests/declare_macro.dart
@@ -4,13 +4,13 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  main.dart|package:macro_builder/macro_builder.dart],
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  main.dart],
  declaredMacros=[MyMacro],
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class MyMacro implements Macro {}
 
diff --git a/pkg/front_end/test/macros/data/tests/declare_vs_apply/macro_lib.dart b/pkg/front_end/test/macros/data/tests/declare_vs_apply/macro_lib.dart
index f1aac83..6deb22b 100644
--- a/pkg/front_end/test/macros/data/tests/declare_vs_apply/macro_lib.dart
+++ b/pkg/front_end/test/macros/data/tests/declare_vs_apply/macro_lib.dart
@@ -7,7 +7,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 import 'macro_lib_dep.dart';
 
 macro class Macro1 extends MacroBase implements Macro {
diff --git a/pkg/front_end/test/macros/data/tests/declare_vs_apply/main.dart b/pkg/front_end/test/macros/data/tests/declare_vs_apply/main.dart
index 868f08d..a710753 100644
--- a/pkg/front_end/test/macros/data/tests/declare_vs_apply/main.dart
+++ b/pkg/front_end/test/macros/data/tests/declare_vs_apply/main.dart
@@ -4,8 +4,8 @@
 
 /*library: 
  compilationSequence=[
-  apply_lib_dep.dart|macro_lib_dep.dart|main_lib_dep.dart|package:macro_builder/src/macro.dart,
-  macro_lib.dart|package:macro_builder/macro_builder.dart,
+  apply_lib_dep.dart|macro_lib_dep.dart|main_lib_dep.dart|package:_fe_analyzer_shared/src/macros/api.dart,
+  macro_lib.dart,
   apply_lib.dart|main.dart],
  macrosAreAvailable
 */
diff --git a/pkg/front_end/test/macros/data/tests/direct_import.dart b/pkg/front_end/test/macros/data/tests/direct_import.dart
index f3484cd..a07f128 100644
--- a/pkg/front_end/test/macros/data/tests/direct_import.dart
+++ b/pkg/front_end/test/macros/data/tests/direct_import.dart
@@ -4,12 +4,12 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
+  package:_fe_analyzer_shared/src/macros/api.dart,
   main.dart],
  macrosAreAvailable
 */
 
 // ignore: unused_import
-import 'package:macro_builder/src/macro.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 void main() {}
diff --git a/pkg/front_end/test/macros/data/tests/import_macro_builder.dart b/pkg/front_end/test/macros/data/tests/import_macro_builder.dart
index dca3012..a07f128 100644
--- a/pkg/front_end/test/macros/data/tests/import_macro_builder.dart
+++ b/pkg/front_end/test/macros/data/tests/import_macro_builder.dart
@@ -4,12 +4,12 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  main.dart|package:macro_builder/macro_builder.dart],
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  main.dart],
  macrosAreAvailable
 */
 
 // ignore: unused_import
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 void main() {}
diff --git a/pkg/front_end/test/macros/data/tests/import_macro_package.dart b/pkg/front_end/test/macros/data/tests/import_macro_package.dart
index 1fabb48..0c25eea 100644
--- a/pkg/front_end/test/macros/data/tests/import_macro_package.dart
+++ b/pkg/front_end/test/macros/data/tests/import_macro_package.dart
@@ -4,8 +4,8 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  package:macro/macro.dart|package:macro_builder/macro_builder.dart,
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  package:macro/macro.dart,
   main.dart],
  macrosAreAvailable
 */
diff --git a/pkg/front_end/test/macros/data/tests/import_macro_source/macro_lib.dart b/pkg/front_end/test/macros/data/tests/import_macro_source/macro_lib.dart
index c08cbcd..536ad16 100644
--- a/pkg/front_end/test/macros/data/tests/import_macro_source/macro_lib.dart
+++ b/pkg/front_end/test/macros/data/tests/import_macro_source/macro_lib.dart
@@ -7,7 +7,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class Macro1 implements Macro {
   const Macro1();
diff --git a/pkg/front_end/test/macros/data/tests/import_macro_source/main.dart b/pkg/front_end/test/macros/data/tests/import_macro_source/main.dart
index 5b109f4..dce865b 100644
--- a/pkg/front_end/test/macros/data/tests/import_macro_source/main.dart
+++ b/pkg/front_end/test/macros/data/tests/import_macro_source/main.dart
@@ -4,8 +4,8 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  macro_lib.dart|package:macro_builder/macro_builder.dart,
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  macro_lib.dart,
   main.dart],
  macrosAreAvailable
 */
diff --git a/pkg/front_end/test/macros/data/tests/macro_declarations.dart b/pkg/front_end/test/macros/data/tests/macro_declarations.dart
index f5f5a5f..b6cb47f 100644
--- a/pkg/front_end/test/macros/data/tests/macro_declarations.dart
+++ b/pkg/front_end/test/macros/data/tests/macro_declarations.dart
@@ -4,8 +4,8 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  main.dart|package:macro_builder/macro_builder.dart],
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  main.dart],
  declaredMacros=[
   Extends,
   ExtendsAlias,
@@ -18,7 +18,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class Extends extends Macro {}
 
diff --git a/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib1.dart b/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib1.dart
index c08cbcd..536ad16 100644
--- a/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib1.dart
+++ b/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib1.dart
@@ -7,7 +7,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class Macro1 implements Macro {
   const Macro1();
diff --git a/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2a.dart b/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2a.dart
index 729e7f1..fc0d199 100644
--- a/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2a.dart
+++ b/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2a.dart
@@ -7,7 +7,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class Macro2a implements Macro {
   const Macro2a();
diff --git a/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2b.dart b/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2b.dart
index df143f5..1c2e947 100644
--- a/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2b.dart
+++ b/pkg/front_end/test/macros/data/tests/multiple_macros/macro_lib2b.dart
@@ -8,7 +8,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 import 'macro_lib2a.dart';
 
 @Macro2a()
diff --git a/pkg/front_end/test/macros/data/tests/multiple_macros/main.dart b/pkg/front_end/test/macros/data/tests/multiple_macros/main.dart
index 9dee592..9a3839e 100644
--- a/pkg/front_end/test/macros/data/tests/multiple_macros/main.dart
+++ b/pkg/front_end/test/macros/data/tests/multiple_macros/main.dart
@@ -4,8 +4,8 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  macro_lib1.dart|macro_lib2a.dart|package:macro_builder/macro_builder.dart,
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  macro_lib1.dart|macro_lib2a.dart,
   macro_lib2b.dart,
   main.dart],
  macrosAreApplied,
diff --git a/pkg/front_end/test/macros/data/tests/use_macro_package.dart b/pkg/front_end/test/macros/data/tests/use_macro_package.dart
index 74f18ff..a830bb3 100644
--- a/pkg/front_end/test/macros/data/tests/use_macro_package.dart
+++ b/pkg/front_end/test/macros/data/tests/use_macro_package.dart
@@ -3,15 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /*library: 
- appliedMacros=[Macro3],
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  package:macro/macro.dart|package:macro_builder/macro_builder.dart,
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  package:macro/macro.dart,
   main.dart],
  macrosAreApplied,
  macrosAreAvailable
 */
-@Macro3()
 library use_macro_package;
 
 import 'package:macro/macro.dart';
@@ -26,6 +24,10 @@
  macrosAreApplied
 */
 class Class1 {
+  @Macro3()
+  /*member: Class1.:appliedMacros=[Macro3]*/
+  Class1();
+
   @Macro1()
   @Macro2()
   /*member: Class1.method:appliedMacros=[
@@ -48,3 +50,21 @@
   @NonMacro()
   var field;
 }
+
+@Macro1()
+/*member: field:appliedMacros=[Macro1]*/
+var field;
+
+extension Extension on int {
+  @Macro1()
+  /*member: Extension|field:appliedMacros=[Macro1]*/
+  static var field;
+
+  @Macro2()
+  /*member: Extension|method:appliedMacros=[Macro2]*/
+  void method() {}
+
+  @Macro3()
+  /*member: Extension|staticMethod:appliedMacros=[Macro3]*/
+  static void staticMethod() {}
+}
diff --git a/pkg/front_end/test/macros/data/tests/use_macro_source/macro_lib.dart b/pkg/front_end/test/macros/data/tests/use_macro_source/macro_lib.dart
index f3767a5..9369d7d 100644
--- a/pkg/front_end/test/macros/data/tests/use_macro_source/macro_lib.dart
+++ b/pkg/front_end/test/macros/data/tests/use_macro_source/macro_lib.dart
@@ -9,7 +9,7 @@
  macrosAreAvailable
 */
 
-import 'package:macro_builder/macro_builder.dart';
+import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 macro class Macro1 implements Macro {
   const Macro1();
diff --git a/pkg/front_end/test/macros/data/tests/use_macro_source/main.dart b/pkg/front_end/test/macros/data/tests/use_macro_source/main.dart
index 930eb5c..7c78a01 100644
--- a/pkg/front_end/test/macros/data/tests/use_macro_source/main.dart
+++ b/pkg/front_end/test/macros/data/tests/use_macro_source/main.dart
@@ -4,8 +4,8 @@
 
 /*library: 
  compilationSequence=[
-  package:macro_builder/src/macro.dart,
-  macro_lib.dart|package:macro_builder/macro_builder.dart,
+  package:_fe_analyzer_shared/src/macros/api.dart,
+  macro_lib.dart,
   main.dart],
  macrosAreApplied,
  macrosAreAvailable
diff --git a/pkg/front_end/test/macros/macro_test.dart b/pkg/front_end/test/macros/macro_test.dart
index c1aa33e..6042432 100644
--- a/pkg/front_end/test/macros/macro_test.dart
+++ b/pkg/front_end/test/macros/macro_test.dart
@@ -112,10 +112,6 @@
     return macroApplicationData.libraryData[library];
   }
 
-  MacroApplications? getLibraryMacroApplications(Library library) {
-    return getLibraryMacroApplicationData(library)?.libraryApplications;
-  }
-
   ClassMacroApplicationData? getClassMacroApplicationData(Class cls) {
     LibraryMacroApplicationData? applicationData =
         getLibraryMacroApplicationData(cls.enclosingLibrary);
@@ -184,7 +180,6 @@
     if (getLibraryMacroApplicationData(node) != null) {
       features.add(Tags.macrosAreApplied);
     }
-    registerMacroApplications(features, getLibraryMacroApplications(node));
     return features;
   }
 
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 b4016d7..6ad6b41 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
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.named(int value);
+//         ^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -10,6 +17,11 @@
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
+  const constructor named(core::int value) → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.named(int value);
+        ^^^^^"
+    ;
   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 b4016d7..6ad6b41 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
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.named(int value);
+//         ^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -10,6 +17,11 @@
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
+  const constructor named(core::int value) → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.named(int value);
+        ^^^^^"
+    ;
   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 a7d67d3..5081c27 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
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.named(int value);
+//         ^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -10,6 +17,11 @@
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
+  const constructor named(core::int value) → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.named(int value);
+        ^^^^^"
+    ;
   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 a7d67d3..5081c27 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
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.named(int value);
+//         ^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -10,6 +17,11 @@
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
+  const constructor named(core::int value) → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.named(int value);
+        ^^^^^"
+    ;
   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 61d174a..584e232 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
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.named(int value);
+//         ^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -10,6 +17,11 @@
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
+  const constructor named(core::int value) → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.named(int value);
+        ^^^^^"
+    ;
   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 a7d67d3..5081c27 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
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.named(int value);
+//         ^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -10,6 +17,11 @@
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
+  const constructor named(core::int value) → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:11:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.named(int value);
+        ^^^^^"
+    ;
   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.expect b/pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart.strong.expect
index b209df1..43b585e 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
@@ -1,10 +1,22 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.b();
+//         ^
+//
 import self as self;
 import "dart:core" as core;
 
 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() → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.b();
+        ^"
+    ;
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
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 b209df1..43b585e 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
@@ -1,10 +1,22 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.b();
+//         ^
+//
 import self as self;
 import "dart:core" as core;
 
 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() → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.b();
+        ^"
+    ;
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
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 5cc89c4..d44bcfc 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
@@ -1,10 +1,22 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.b();
+//         ^
+//
 import self as self;
 import "dart:core" as core;
 
 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() → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.b();
+        ^"
+    ;
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
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 5cc89c4..d44bcfc 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
@@ -1,10 +1,22 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.b();
+//         ^
+//
 import self as self;
 import "dart:core" as core;
 
 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() → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.b();
+        ^"
+    ;
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
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 2732493..b0ba4b4 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
@@ -1,10 +1,22 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.b();
+//         ^
+//
 import self as self;
 import "dart:core" as core;
 
 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::•(0, "a");
+  const constructor b() → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.b();
+        ^"
+    ;
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
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 5cc89c4..d44bcfc 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
@@ -1,10 +1,22 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+//   const E.b();
+//         ^
+//
 import self as self;
 import "dart:core" as core;
 
 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() → self::E
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/enhanced_enums/qualified_names_with_no_type_arguments.dart:8:9: Error: The superclass, '_Enum', has no unnamed constructor that takes no arguments.
+  const E.b();
+        ^"
+    ;
   const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
diff --git a/tools/VERSION b/tools/VERSION
index 3999cce..bc4419c 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 135
+PRERELEASE 136
 PRERELEASE_PATCH 0
\ No newline at end of file