Version 2.17.0-144.0.dev

Merge commit 'cc1366ee73806e7f0b6132245be77da0e68b52de' into 'dev'
diff --git a/docs/process/breaking-changes.md b/docs/process/breaking-changes.md
index 4ea8bda..65d85f7 100644
--- a/docs/process/breaking-changes.md
+++ b/docs/process/breaking-changes.md
@@ -29,7 +29,7 @@
 
 * Must contain no static analysis **errors**.
 
-* Must not rely on a certain runtime **error** being thrown (in other words, 
+* Must not rely on a certain runtime **error** being thrown (in other words,
   a new SDK might throw fewer errors than an old SDK).
 
 * Must access libraries via the public API (for example, must not reach into
@@ -45,6 +45,13 @@
 Compatibility is only considered between stable releases (i.e. releases from the
 [Dart stable channel](https://dart.dev/tools/sdk/archive#stable-channel)).
 
+## Breaking change implementation timing
+
+To avoid shipping features that have not been thoroughly vetted, we implement a
+policy of not including breaking changes in the final beta before a release.
+Breaking changes must be included in the beta before the final beta to be
+considered for the next stable release.
+
 ## Breaking change notification
 
 Anyone wishing to make a breaking change to Dart is expected to perform the
@@ -76,7 +83,7 @@
   * A request that developers may leave comments in the linked issue, if this
     breaking change poses a severe problem.
 
-Once you have sent the announce email, please let devoncarew@ know in order
+Once you have sent the announce email, please let kevinjchisholm@ know in order
 to start the review and approval process.
 
 ### Step 2: Approval
diff --git a/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart b/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart
index ca35c17..f29fc9f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart
@@ -844,9 +844,11 @@
               actualData[marker] = {};
 
           void addActualData(Uri uri, Map<Id, ActualData<T>> actualData) {
-            // ignore: unnecessary_null_comparison
-            assert(uri != null && testData.code.containsKey(uri) ||
-                actualData.isEmpty);
+            assert(
+                // ignore: unnecessary_null_comparison
+                uri != null && testData.code.containsKey(uri) ||
+                    actualData.isEmpty,
+                "Unexpected data ${actualData} for $uri");
             // ignore: unnecessary_null_comparison
             if (uri == null || actualData.isEmpty) {
               // TODO(johnniwinther): Avoid collecting data without
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 1e2e07c..d3aa340 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -438,12 +438,21 @@
     loader.resolveTypes(augmentationLibraries);
   }
 
-  /// Builds [augmentationLibrary] to the state expected after applying phase
+  /// Builds [augmentationLibraries] to the state expected after applying phase
   /// 2 macros.
-  void _buildForPhase2(SourceLibraryBuilder augmentationLibrary) {
-    augmentationLibrary.finishTypeVariables(objectClassBuilder, dynamicType);
-    augmentationLibrary.build(loader.coreLibrary, modifyTarget: false);
-    augmentationLibrary.resolveConstructors();
+  void _buildForPhase2(List<SourceLibraryBuilder> augmentationLibraries) {
+    loader.finishTypeVariables(
+        augmentationLibraries, objectClassBuilder, dynamicType);
+    for (SourceLibraryBuilder augmentationLibrary in augmentationLibraries) {
+      augmentationLibrary.build(loader.coreLibrary, modifyTarget: false);
+    }
+    loader.resolveConstructors(augmentationLibraries);
+  }
+
+  /// Builds [augmentationLibraries] to the state expected after applying phase
+  /// 3 macros.
+  void _buildForPhase3(List<SourceLibraryBuilder> augmentationLibraries) {
+    // Currently there nothing to do here. The method is left in for symmetry.
   }
 
   Future<BuildResult> buildOutlines({CanonicalName? nameRoot}) async {
@@ -533,8 +542,11 @@
         benchmarker?.enterPhase(BenchmarkPhases.outline_applyDeclarationMacros);
         await macroApplications.applyDeclarationsMacros(loader.hierarchyBuilder,
             (SourceLibraryBuilder augmentationLibrary) async {
-          await _buildForPhase1([augmentationLibrary]);
-          _buildForPhase2(augmentationLibrary);
+          List<SourceLibraryBuilder> augmentationLibraries = [
+            augmentationLibrary
+          ];
+          await _buildForPhase1(augmentationLibraries);
+          _buildForPhase2(augmentationLibraries);
         });
       }
 
@@ -620,8 +632,17 @@
     return withCrashReporting<BuildResult>(() async {
       ticker.logMs("Building component");
 
+      if (macroApplications != null) {
+        benchmarker?.enterPhase(BenchmarkPhases.body_applyDefinitionMacros);
+        List<SourceLibraryBuilder> augmentationLibraries =
+            await macroApplications.applyDefinitionMacros();
+        await _buildForPhase1(augmentationLibraries);
+        _buildForPhase2(augmentationLibraries);
+        _buildForPhase3(augmentationLibraries);
+      }
+
       benchmarker?.enterPhase(BenchmarkPhases.body_buildBodies);
-      await loader.buildBodies();
+      await loader.buildBodies(loader.sourceLibraryBuilders);
 
       benchmarker?.enterPhase(BenchmarkPhases.body_finishSynthesizedParameters);
       finishSynthesizedParameters();
@@ -636,11 +657,6 @@
       benchmarker?.enterPhase(BenchmarkPhases.body_collectSourceClasses);
       List<SourceClassBuilder>? sourceClasses = loader.collectSourceClasses();
 
-      if (macroApplications != null) {
-        benchmarker?.enterPhase(BenchmarkPhases.body_applyDefinitionMacros);
-        await macroApplications.applyDefinitionMacros();
-      }
-
       benchmarker?.enterPhase(BenchmarkPhases.body_finishNativeMethods);
       loader.finishNativeMethods();
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro.dart b/pkg/front_end/lib/src/fasta/kernel/macro.dart
index 554ec8f..048df44 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro.dart
@@ -35,6 +35,8 @@
 
 bool enableMacros = false;
 
+const String augmentationScheme = 'org-dartlang-augmentation';
+
 final Uri macroLibraryUri =
     Uri.parse('package:_fe_analyzer_shared/src/macros/api.dart');
 const String macroClassName = 'Macro';
@@ -80,6 +82,7 @@
 class MacroApplicationDataForTesting {
   Map<SourceLibraryBuilder, LibraryMacroApplicationData> libraryData = {};
   Map<SourceLibraryBuilder, String> libraryTypesResult = {};
+  Map<SourceLibraryBuilder, String> libraryDefinitionResult = {};
   Map<SourceClassBuilder, List<macro.MacroExecutionResult>> classTypesResults =
       {};
   Map<SourceClassBuilder, List<macro.MacroExecutionResult>>
@@ -330,7 +333,9 @@
         macro.MacroExecutionResult result =
             await _macroExecutor.executeTypesPhase(
                 macroApplication.instanceIdentifier, declaration);
-        results.add(result);
+        if (result.isNotEmpty) {
+          results.add(result);
+        }
       }
     }
 
@@ -351,19 +356,29 @@
     for (_ApplicationData macroApplication in _applicationData) {
       List<macro.MacroExecutionResult> executionResults =
           await _applyTypeMacros(macroApplication);
-      (results[macroApplication.libraryBuilder] ??= [])
-          .addAll(executionResults);
+      if (executionResults.isNotEmpty) {
+        (results[macroApplication.libraryBuilder] ??= [])
+            .addAll(executionResults);
+      }
     }
     for (MapEntry<SourceLibraryBuilder, List<macro.MacroExecutionResult>> entry
         in results.entries) {
       SourceLibraryBuilder sourceLibraryBuilder = entry.key;
-      String result = _macroExecutor.buildAugmentationLibrary(
-          entry.value, _resolveIdentifier);
-      if (retainDataForTesting) {
-        dataForTesting?.libraryTypesResult[sourceLibraryBuilder] = result;
+      assert(entry.value.isNotEmpty);
+      String result = _macroExecutor
+          .buildAugmentationLibrary(entry.value, _resolveIdentifier)
+          .trim();
+      assert(
+          result.trim().isNotEmpty,
+          "Empty types phase augmentation library source for "
+          "$sourceLibraryBuilder}");
+      if (result.isNotEmpty) {
+        if (retainDataForTesting) {
+          dataForTesting?.libraryTypesResult[sourceLibraryBuilder] = result;
+        }
+        augmentationLibraries
+            .add(await sourceLibraryBuilder.createAugmentationLibrary(result));
       }
-      augmentationLibraries
-          .add(await sourceLibraryBuilder.createAugmentationLibrary(result));
     }
     return augmentationLibraries;
   }
@@ -382,14 +397,16 @@
                 declaration,
                 typeResolver,
                 classIntrospector);
-        String source = _macroExecutor
-            .buildAugmentationLibrary([result], _resolveIdentifier);
-        SourceLibraryBuilder augmentationLibrary = await applicationData
-            .libraryBuilder
-            .createAugmentationLibrary(source);
-        await onAugmentationLibrary(augmentationLibrary);
-        if (retainDataForTesting) {
-          results.add(result);
+        if (result.isNotEmpty) {
+          String source = _macroExecutor
+              .buildAugmentationLibrary([result], _resolveIdentifier);
+          SourceLibraryBuilder augmentationLibrary = await applicationData
+              .libraryBuilder
+              .createAugmentationLibrary(source);
+          await onAugmentationLibrary(augmentationLibrary);
+          if (retainDataForTesting) {
+            results.add(result);
+          }
         }
       }
     }
@@ -433,7 +450,9 @@
                 typeResolver,
                 classIntrospector,
                 typeDeclarationResolver);
-        results.add(result);
+        if (result.isNotEmpty) {
+          results.add(result);
+        }
       }
     }
     if (retainDataForTesting) {
@@ -450,11 +469,34 @@
 
   late macro.TypeDeclarationResolver typeDeclarationResolver;
 
-  Future<void> applyDefinitionMacros() async {
+  Future<List<SourceLibraryBuilder>> applyDefinitionMacros() async {
     typeDeclarationResolver = new _TypeDeclarationResolver();
+    List<SourceLibraryBuilder> augmentationLibraries = [];
+    Map<SourceLibraryBuilder, List<macro.MacroExecutionResult>> results = {};
     for (_ApplicationData macroApplication in _applicationData) {
-      await _applyDefinitionMacros(macroApplication);
+      List<macro.MacroExecutionResult> executionResults =
+          await _applyDefinitionMacros(macroApplication);
+      if (executionResults.isNotEmpty) {
+        (results[macroApplication.libraryBuilder] ??= [])
+            .addAll(executionResults);
+      }
     }
+    for (MapEntry<SourceLibraryBuilder, List<macro.MacroExecutionResult>> entry
+        in results.entries) {
+      SourceLibraryBuilder sourceLibraryBuilder = entry.key;
+      String result = _macroExecutor.buildAugmentationLibrary(
+          entry.value, _resolveIdentifier);
+      assert(
+          result.trim().isNotEmpty,
+          "Empty definitions phase augmentation library source for "
+          "$sourceLibraryBuilder}");
+      if (retainDataForTesting) {
+        dataForTesting?.libraryDefinitionResult[sourceLibraryBuilder] = result;
+      }
+      augmentationLibraries
+          .add(await sourceLibraryBuilder.createAugmentationLibrary(result));
+    }
+    return augmentationLibraries;
   }
 
   void close() {
@@ -708,11 +750,7 @@
                   typeBuilder: typeBuilder,
                   libraryBuilder: libraryBuilder,
                   id: macro.RemoteInstance.uniqueId,
-                  // TODO: We probably shouldn't be including the qualifier
-                  // here. Kernel should probably have its own implementation
-                  // of Identifier which holds on to the qualified reference
-                  // instead.
-                  name: '${name.qualifier}.${name.name}'),
+                  name: name.name),
               typeArguments: typeArguments,
               isNullable: isNullable);
         }
@@ -993,3 +1031,7 @@
   _ApplicationData(this.libraryBuilder, this.builder, this.declaration,
       this.macroApplications);
 }
+
+extension on macro.MacroExecutionResult {
+  bool get isNotEmpty => augmentations.isNotEmpty;
+}
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 970cc29..5030ef3 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
@@ -66,6 +66,7 @@
 import '../kernel/internal_ast.dart';
 import '../kernel/kernel_helper.dart';
 import '../kernel/load_library_builder.dart';
+import '../kernel/macro.dart';
 import '../kernel/type_algorithms.dart'
     show
         NonSimplicityIssue,
@@ -519,8 +520,8 @@
   /// unparsed library on the [loader].
   SourceLibraryBuilder createAugmentationLibrary(String source) {
     int index = _patchLibraries?.length ?? 0;
-    Uri uri = new Uri(
-        scheme: 'org-dartlang-augmentation', path: '${fileUri.path}-$index');
+    Uri uri =
+        new Uri(scheme: augmentationScheme, path: '${fileUri.path}-$index');
     SourceLibraryBuilder augmentationLibrary = new SourceLibraryBuilder(
         fileUri: uri,
         importUri: uri,
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 57a4561..68f2d84 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -647,9 +647,9 @@
     }
   }
 
-  Future<Null> buildBodies() async {
+  Future<Null> buildBodies(List<SourceLibraryBuilder> libraryBuilders) async {
     assert(_coreLibrary != null);
-    for (SourceLibraryBuilder library in sourceLibraryBuilders) {
+    for (SourceLibraryBuilder library in libraryBuilders) {
       currentUriForCrashReporting = library.importUri;
       await buildBody(library);
     }
diff --git a/pkg/front_end/lib/src/testing/id_testing_helper.dart b/pkg/front_end/lib/src/testing/id_testing_helper.dart
index be478b3..102912e 100644
--- a/pkg/front_end/lib/src/testing/id_testing_helper.dart
+++ b/pkg/front_end/lib/src/testing/id_testing_helper.dart
@@ -25,6 +25,7 @@
 import '../api_prototype/terminal_color_support.dart'
     show printDiagnosticMessage;
 import '../base/common.dart';
+import '../fasta/kernel/macro.dart';
 import '../fasta/messages.dart' show FormattedMessage;
 import '../kernel_generator_impl.dart' show InternalCompilerResult;
 import 'compiler_common.dart' show compileScript, toTestUri;
@@ -380,6 +381,10 @@
   Map<Id, ActualData<T>> globalData = <Id, ActualData<T>>{};
 
   Map<Id, ActualData<T>> actualMapForUri(Uri? uri) {
+    if (uri?.scheme == augmentationScheme) {
+      throw new UnsupportedError(
+          "Annotations are not support on augmentation uris.");
+    }
     return actualMaps.putIfAbsent(uri ?? nullUri, () => <Id, ActualData<T>>{});
   }
 
@@ -391,9 +396,15 @@
 
     Map<Uri, Map<int, List<FormattedMessage>>> errorMap = {};
     for (FormattedMessage error in errors) {
+      Uri? uri = error.uri;
+      bool isAugmentation = uri?.scheme == augmentationScheme;
+      if (isAugmentation) {
+        uri = testData.entryPoint;
+      }
       Map<int, List<FormattedMessage>> map =
-          errorMap.putIfAbsent(error.uri ?? nullUri, () => {});
-      List<FormattedMessage> list = map.putIfAbsent(error.charOffset, () => []);
+          errorMap.putIfAbsent(uri ?? nullUri, () => {});
+      List<FormattedMessage> list =
+          map.putIfAbsent(isAugmentation ? -1 : error.charOffset, () => []);
       list.add(error);
     }
 
@@ -418,7 +429,14 @@
     Uri uri = node is Library
         ? node.fileUri
         : (node is Member ? node.fileUri : node.location!.file);
-    return actualMaps.putIfAbsent(uri, () => <Id, ActualData<T>>{});
+    if (uri.scheme == augmentationScheme) {
+      TreeNode library = node;
+      while (library is! Library) {
+        library = library.parent!;
+      }
+      uri = library.fileUri;
+    }
+    return actualMapForUri(uri);
   }
 
   void processMember(Member member, Map<Id, ActualData<T>> actualMap) {
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.expect
index c4af2cb..a931181 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.expect
@@ -326,13 +326,13 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
             handleIdentifier(y, fieldDeclaration)
             handleNoFieldInitializer(;)
-          endClassFields(null, null, null, null, null, null, 1, int, ;)
+          endClassFields(null, null, null, null, null, null, null, 1, int, ;)
         endMember()
         beginMetadataStar(C)
         endMetadataStar(0)
@@ -468,13 +468,13 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, final, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
             handleIdentifier(y, fieldDeclaration)
             handleNoFieldInitializer(;)
-          endClassFields(null, null, null, null, null, final, 1, final, ;)
+          endClassFields(null, null, null, null, null, null, final, 1, final, ;)
         endMember()
         beginMetadataStar(E)
         endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.intertwined.expect
index bd0147c..290de57 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48411.dart.intertwined.expect
@@ -6,8 +6,7 @@
     parseMetadataStar()
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(, class)
+    parseTopLevelKeywordDeclaration(, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -122,8 +121,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -256,8 +254,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -398,8 +395,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -585,8 +581,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -614,16 +609,16 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', y, DeclarationKind.Class, C, false)
-                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
+              parseFields({, null, null, null, null, null, null, null, {, Instance of 'SimpleType', y, DeclarationKind.Class, C, false)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
                 ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
-                parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, C)
+                parseFieldInitializerOpt(y, y, null, null, null, null, null, DeclarationKind.Class, C)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
@@ -736,8 +731,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -873,8 +867,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -902,16 +895,16 @@
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleType', y, DeclarationKind.Class, E, false)
-                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
+              parseFields({, null, null, null, null, null, null, final, final, Instance of 'SimpleType', y, DeclarationKind.Class, E, false)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, final, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
                 ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
-                parseFieldInitializerOpt(y, y, null, null, null, final, DeclarationKind.Class, E)
+                parseFieldInitializerOpt(y, y, null, null, null, null, final, DeclarationKind.Class, E)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+                listener: endClassFields(null, null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, E)
             parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, E)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.expect
index b416e9d..5001a0f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.expect
@@ -297,13 +297,13 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
             handleIdentifier(y, fieldDeclaration)
             handleNoFieldInitializer(;)
-          endClassFields(null, null, null, null, null, null, 1, int, ;)
+          endClassFields(null, null, null, null, null, null, null, 1, int, ;)
         endMember()
         beginMetadataStar(C)
         endMetadataStar(0)
@@ -437,13 +437,13 @@
         beginMetadataStar(final)
         endMetadataStar(0)
         beginMember()
-          beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
+          beginFields(DeclarationKind.Class, null, null, null, null, null, null, final, {)
             handleIdentifier(int, typeReference)
             handleNoTypeArguments(y)
             handleType(int, null)
             handleIdentifier(y, fieldDeclaration)
             handleNoFieldInitializer(;)
-          endClassFields(null, null, null, null, null, final, 1, final, ;)
+          endClassFields(null, null, null, null, null, null, final, 1, final, ;)
         endMember()
         beginMetadataStar(E)
         endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.intertwined.expect
index d3c0fc3..2366abd 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime.dart.intertwined.expect
@@ -6,8 +6,7 @@
     parseMetadataStar()
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(, class)
+    parseTopLevelKeywordDeclaration(, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -122,8 +121,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -253,8 +251,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -392,8 +389,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -576,8 +572,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -605,16 +600,16 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, null, {, Instance of 'SimpleType', y, DeclarationKind.Class, C, false)
-                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, {)
+              parseFields({, null, null, null, null, null, null, null, {, Instance of 'SimpleType', y, DeclarationKind.Class, C, false)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
                 ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
-                parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.Class, C)
+                parseFieldInitializerOpt(y, y, null, null, null, null, null, DeclarationKind.Class, C)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, null, null, 1, int, ;)
+                listener: endClassFields(null, null, null, null, null, null, null, 1, int, ;)
               listener: endMember()
             notEofOrValue(}, C)
             parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
@@ -724,8 +719,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -858,8 +852,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -887,16 +880,16 @@
                 listener: beginMetadataStar(final)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, final, final, Instance of 'SimpleType', y, DeclarationKind.Class, E, false)
-                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, final, {)
+              parseFields({, null, null, null, null, null, null, final, final, Instance of 'SimpleType', y, DeclarationKind.Class, E, false)
+                listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, final, {)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
                 ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
-                parseFieldInitializerOpt(y, y, null, null, null, final, DeclarationKind.Class, E)
+                parseFieldInitializerOpt(y, y, null, null, null, null, final, DeclarationKind.Class, E)
                   listener: handleNoFieldInitializer(;)
-                listener: endClassFields(null, null, null, null, null, final, 1, final, ;)
+                listener: endClassFields(null, null, null, null, null, null, final, 1, final, ;)
               listener: endMember()
             notEofOrValue(}, E)
             parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, E)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime_1.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime_1.dart.intertwined.expect
index eb2c5841..b6f199c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime_1.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48411_prime_1.dart.intertwined.expect
@@ -6,8 +6,7 @@
     parseMetadataStar()
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(, class)
+    parseTopLevelKeywordDeclaration(, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -104,7 +103,7 @@
                 listener: beginMetadataStar(0)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
                 reportRecoverableErrorWithToken(0, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '0'., null, {lexeme: 0}], 0, 0)
                 listener: handleInvalidMember(0)
@@ -115,7 +114,7 @@
                 listener: beginMetadataStar(;)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              recoverFromInvalidMember(0, 0, null, null, null, null, null, null, 0, Instance of 'NoType', null, DeclarationKind.Class, C)
+              recoverFromInvalidMember(0, 0, null, null, null, null, null, null, null, 0, Instance of 'NoType', null, DeclarationKind.Class, C)
                 reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {lexeme: ;}], ;, ;)
                 listener: handleInvalidMember(;)
@@ -128,8 +127,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -228,7 +226,7 @@
                 listener: beginMetadataStar(null)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, C)
+              recoverFromInvalidMember(}, }, null, null, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, C)
                 reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {lexeme: null}], null, null)
                 listener: handleInvalidMember(null)
@@ -239,7 +237,7 @@
                 listener: beginMetadataStar(=)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              recoverFromInvalidMember(null, null, null, null, null, null, null, null, null, Instance of 'NoType', null, DeclarationKind.Class, C)
+              recoverFromInvalidMember(null, null, null, null, null, null, null, null, null, null, Instance of 'NoType', null, DeclarationKind.Class, C)
                 parseInvalidOperatorDeclaration(null, null, null, null, null, null, null, null, DeclarationKind.Class, C)
                   reportRecoverableError(=, MissingOperatorKeyword)
                     listener: handleRecoverableError(MissingOperatorKeyword, =, =)
@@ -284,7 +282,7 @@
                 listener: beginMetadataStar(0)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, C)
+              recoverFromInvalidMember(}, }, null, null, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, C)
                 reportRecoverableErrorWithToken(0, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '0'., null, {lexeme: 0}], 0, 0)
                 listener: handleInvalidMember(0)
@@ -295,7 +293,7 @@
                 listener: beginMetadataStar(;)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              recoverFromInvalidMember(0, 0, null, null, null, null, null, null, 0, Instance of 'NoType', null, DeclarationKind.Class, C)
+              recoverFromInvalidMember(0, 0, null, null, null, null, null, null, null, 0, Instance of 'NoType', null, DeclarationKind.Class, C)
                 reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
                   listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {lexeme: ;}], ;, ;)
                 listener: handleInvalidMember(;)
@@ -308,8 +306,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
@@ -385,8 +382,7 @@
     parseMetadataStar(})
       listener: beginMetadataStar(class)
       listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(}, class, null, null, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(}, class)
+    parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
       parseClassOrNamedMixinApplication(null, null, null, class)
         listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
         ensureIdentifier(class, classOrMixinDeclaration)
diff --git a/pkg/front_end/test/macro_application/data/pkgs/macro/lib/macro.dart b/pkg/front_end/test/macro_application/data/pkgs/macro/lib/macro.dart
index ad78c6f..5a90a29 100644
--- a/pkg/front_end/test/macro_application/data/pkgs/macro/lib/macro.dart
+++ b/pkg/front_end/test/macro_application/data/pkgs/macro/lib/macro.dart
@@ -13,7 +13,7 @@
   FutureOr<void> buildDefinitionForFunction(FunctionDeclaration function,
       FunctionDefinitionBuilder builder) {
     builder.augment(new FunctionBodyCode.fromString('''{
-  return 42;
+  throw 42;
 }'''));
   }
 }
@@ -34,6 +34,7 @@
     builder.augment(new FunctionBodyCode.fromString('''{
   print('isExactly=${await returnType.isExactly(parameterType)}');
   print('isSubtype=${await returnType.isSubtypeOf(parameterType)}');
+  throw 42;
 }'''));
   }
 }
diff --git a/pkg/front_end/test/macro_application/data/tests/declarations.dart b/pkg/front_end/test/macro_application/data/tests/declarations.dart
index 7a69a25..a225e74 100644
--- a/pkg/front_end/test/macro_application/data/tests/declarations.dart
+++ b/pkg/front_end/test/macro_application/data/tests/declarations.dart
@@ -2,11 +2,6 @@
 // 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.
 
-/*library: 
-
-
-*/
-
 import 'package:macro/macro.dart';
 
 /*member: topLevelFunction1:
diff --git a/pkg/front_end/test/macro_application/data/tests/declarations.dart.expect b/pkg/front_end/test/macro_application/data/tests/declarations.dart.expect
index dfe99d0..27bb5b1 100644
--- a/pkg/front_end/test/macro_application/data/tests/declarations.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/declarations.dart.expect
@@ -19,9 +19,9 @@
   constructor •() → self::Class1
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-18 */ Class1_GeneratedMethod_() → void {}
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-19 */ Class1_redirectGeneratedMethod_f() → void {}
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-20 */ Class1_factGeneratedMethod_f() → void {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-17 */ Class1_GeneratedMethod_() → void {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-18 */ Class1_redirectGeneratedMethod_f() → void {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-19 */ Class1_factGeneratedMethod_f() → void {}
   @#C5
   static factory redirect() → self::Class1
     return new self::Class1::•();
@@ -71,35 +71,35 @@
   return null;
 @#C8
 static set topLevelSetter1(core::int? value) → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ topLevelFunction1GeneratedMethod_() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ topLevelFunction2GeneratedMethod_e() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-3 */ topLevelField1GeneratedMethod_() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelField2GeneratedMethod_e() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-5 */ topLevelField3GeneratedMethod_f() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-6 */ topLevelField4GeneratedMethod_l() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-7 */ topLevelGetter1GeneratedMethod_g() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-8 */ topLevelSetter1GeneratedMethod_s() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-9 */ Class1GeneratedMethod_() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-10 */ Class1Introspection() → void {
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction1GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ topLevelFunction2GeneratedMethod_e() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ topLevelField1GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-3 */ topLevelField2GeneratedMethod_e() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelField3GeneratedMethod_f() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-5 */ topLevelField4GeneratedMethod_l() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-6 */ topLevelGetter1GeneratedMethod_g() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-7 */ topLevelSetter1GeneratedMethod_s() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-8 */ Class1GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-9 */ Class1Introspection() → void {
   core::print("constructors=''");
   core::print("fields='instanceField1','instanceField2','instanceField3'");
   core::print("methods='instanceMethod1','instanceGetter1','[]','instanceSetter1'");
 }
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-11 */ Class1_instanceMethod1GeneratedMethod_() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-12 */ Class1_instanceGetter1GeneratedMethod_g() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-13 */ Class1_operatorGeneratedMethod_o() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-14 */ Class1_instanceField1GeneratedMethod_() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-15 */ Class1_instanceField2GeneratedMethod_f() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-16 */ Class1_instanceField3GeneratedMethod_fl() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-17 */ Class1_instanceSetter1GeneratedMethod_s() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-21 */ Class2GeneratedMethod_a() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-22 */ Class2Introspection() → void {
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-10 */ Class1_instanceMethod1GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-11 */ Class1_instanceGetter1GeneratedMethod_g() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-12 */ Class1_operatorGeneratedMethod_o() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-13 */ Class1_instanceField1GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-14 */ Class1_instanceField2GeneratedMethod_f() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-15 */ Class1_instanceField3GeneratedMethod_fl() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-16 */ Class1_instanceSetter1GeneratedMethod_s() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-20 */ Class2GeneratedMethod_a() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-21 */ Class2Introspection() → void {
   core::print("constructors=");
   core::print("fields='instanceField1'");
   core::print("methods='instanceMethod1'");
 }
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-23 */ Class2_instanceMethod1GeneratedMethod_a() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-24 */ Class2_instanceField1GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-22 */ Class2_instanceMethod1GeneratedMethod_a() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-23 */ Class2_instanceField1GeneratedMethod_() → void {}
 
 constants  {
   #C1 = mac::ClassDeclarationsMacro1 {}
diff --git a/pkg/front_end/test/macro_application/data/tests/parameters.dart b/pkg/front_end/test/macro_application/data/tests/parameters.dart
index 89fa87e..c71841a 100644
--- a/pkg/front_end/test/macro_application/data/tests/parameters.dart
+++ b/pkg/front_end/test/macro_application/data/tests/parameters.dart
@@ -3,36 +3,50 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /*library: 
+Definitions:
+import 'dart:core' as i0;
 
 
+augment void topLevelFunction1(i0.int a, ) {
+  throw 42;
+}
+augment void topLevelFunction2(i0.int a, i0.int b, ) {
+  throw 42;
+}
+augment void topLevelFunction3(i0.int a, [i0.int? b, ]) {
+  throw 42;
+}
+augment void topLevelFunction4(i0.int a, {i0.int? b, i0.int? c, }) {
+  throw 42;
+}
 */
 
 import 'package:macro/macro.dart';
 
 /*member: topLevelFunction1:
 augment void topLevelFunction1(int a, ) {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external void topLevelFunction1(int a);
 
 /*member: topLevelFunction2:
 augment void topLevelFunction2(int a, int b, ) {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external void topLevelFunction2(int a, int b);
 
 /*member: topLevelFunction3:
 augment void topLevelFunction3(int a, [int? b, ]) {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external void topLevelFunction3(int a, [int? b]);
 
 /*member: topLevelFunction4:
 augment void topLevelFunction4(int a, {int? b, int? c, }) {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external void topLevelFunction4(int a, {int? b, int? c});
diff --git a/pkg/front_end/test/macro_application/data/tests/parameters.dart.expect b/pkg/front_end/test/macro_application/data/tests/parameters.dart.expect
index 8f916e5..91ba10d 100644
--- a/pkg/front_end/test/macro_application/data/tests/parameters.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/parameters.dart.expect
@@ -6,13 +6,21 @@
 import "package:macro/macro.dart";
 
 @#C1
-external static method topLevelFunction1(core::int a) → void;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction1(core::int a) → void {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction2(core::int a, core::int b) → void;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction2(core::int a, core::int b) → void {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction3(core::int a, [core::int? b = #C2]) → void;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction3(core::int a, [core::int? b = #C2]) → void {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction4(core::int a, {core::int? b = #C2, core::int? c = #C2}) → void;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction4(core::int a, {core::int? b = #C2, core::int? c = #C2}) → void {
+  throw 42;
+}
 
 constants  {
   #C1 = mac::FunctionDefinitionMacro1 {}
diff --git a/pkg/front_end/test/macro_application/data/tests/sequence.dart b/pkg/front_end/test/macro_application/data/tests/sequence.dart
index 785b423..7d43bf3 100644
--- a/pkg/front_end/test/macro_application/data/tests/sequence.dart
+++ b/pkg/front_end/test/macro_application/data/tests/sequence.dart
@@ -2,11 +2,6 @@
 // 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.
 
-/*library: 
-
-
-*/
-
 import 'package:macro/macro.dart';
 
 @SequenceMacro()
diff --git a/pkg/front_end/test/macro_application/data/tests/sequence.dart.expect b/pkg/front_end/test/macro_application/data/tests/sequence.dart.expect
index 263cee0..273f4d9 100644
--- a/pkg/front_end/test/macro_application/data/tests/sequence.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/sequence.dart.expect
@@ -10,7 +10,7 @@
   synthetic constructor •() → self::Class1
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ method() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ method() → dynamic {}
 }
 @#C1
 @#C1
@@ -18,15 +18,15 @@
   synthetic constructor •() → self::Class2
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ method() → dynamic {}
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-3 */ method1() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ method() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ method1() → dynamic {}
 }
 @#C1
 class Class3 extends core::Object {
   synthetic constructor •() → self::Class3
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ method1() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-3 */ method1() → dynamic {}
   method method() → dynamic {}
 }
 @#C1
@@ -36,9 +36,9 @@
   synthetic constructor •() → self::Class4
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-5 */ method1() → dynamic {}
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-6 */ method3() → dynamic {}
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-7 */ method4() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ method1() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-5 */ method3() → dynamic {}
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-6 */ method4() → dynamic {}
   method method() → dynamic {}
   method method2() → dynamic {}
 }
diff --git a/pkg/front_end/test/macro_application/data/tests/subtypes.dart b/pkg/front_end/test/macro_application/data/tests/subtypes.dart
index ffdd9f7..b4028fd 100644
--- a/pkg/front_end/test/macro_application/data/tests/subtypes.dart
+++ b/pkg/front_end/test/macro_application/data/tests/subtypes.dart
@@ -3,8 +3,30 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /*library: 
+Definitions:
+import 'org-dartlang-test:///a/b/c/main.dart' as i0;
 
 
+augment i0.A topLevelFunction1(i0.A a, ) {
+  print('isExactly=true');
+  print('isSubtype=true');
+  throw 42;
+}
+augment i0.B2 topLevelFunction2(i0.B1 a, ) {
+  print('isExactly=false');
+  print('isSubtype=true');
+  throw 42;
+}
+augment i0.C2 topLevelFunction3(i0.C1 a, ) {
+  print('isExactly=false');
+  print('isSubtype=false');
+  throw 42;
+}
+augment i0.D2 topLevelFunction4(i0.D1 a, ) {
+  print('isExactly=false');
+  print('isSubtype=false');
+  throw 42;
+}
 */
 
 import 'package:macro/macro.dart';
@@ -29,6 +51,7 @@
 augment A topLevelFunction1(A a, ) {
   print('isExactly=true');
   print('isSubtype=true');
+  throw 42;
 }*/
 @FunctionDeclarationsMacro2()
 @FunctionDefinitionMacro2()
@@ -40,6 +63,7 @@
 augment B2 topLevelFunction2(B1 a, ) {
   print('isExactly=false');
   print('isSubtype=true');
+  throw 42;
 }*/
 @FunctionDeclarationsMacro2()
 @FunctionDefinitionMacro2()
@@ -51,6 +75,7 @@
 augment C2 topLevelFunction3(C1 a, ) {
   print('isExactly=false');
   print('isSubtype=false');
+  throw 42;
 }*/
 @FunctionDeclarationsMacro2()
 @FunctionDefinitionMacro2()
@@ -62,6 +87,7 @@
 augment D2 topLevelFunction4(D1 a, ) {
   print('isExactly=false');
   print('isSubtype=false');
+  throw 42;
 }*/
 @FunctionDeclarationsMacro2()
 @FunctionDefinitionMacro2()
diff --git a/pkg/front_end/test/macro_application/data/tests/subtypes.dart.expect b/pkg/front_end/test/macro_application/data/tests/subtypes.dart.expect
index 07374b2..5488629 100644
--- a/pkg/front_end/test/macro_application/data/tests/subtypes.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/subtypes.dart.expect
@@ -42,20 +42,36 @@
 }
 @#C1
 @#C2
-external static method topLevelFunction1(self::A a) → self::A;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelFunction1(self::A a) → self::A {
+  core::print("isExactly=true");
+  core::print("isSubtype=true");
+  throw 42;
+}
 @#C1
 @#C2
-external static method topLevelFunction2(self::B1 a) → self::B2;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelFunction2(self::B1 a) → self::B2 {
+  core::print("isExactly=false");
+  core::print("isSubtype=true");
+  throw 42;
+}
 @#C1
 @#C2
-external static method topLevelFunction3(self::C1 a) → self::C2;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelFunction3(self::C1 a) → self::C2 {
+  core::print("isExactly=false");
+  core::print("isSubtype=false");
+  throw 42;
+}
 @#C1
 @#C2
-external static method topLevelFunction4(self::D1 a) → self::D2;
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ topLevelFunction1GeneratedMethod_es() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ topLevelFunction2GeneratedMethod_s() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-3 */ topLevelFunction3GeneratedMethod_() → void {}
-static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelFunction4GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-4 */ topLevelFunction4(self::D1 a) → self::D2 {
+  core::print("isExactly=false");
+  core::print("isSubtype=false");
+  throw 42;
+}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction1GeneratedMethod_es() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ topLevelFunction2GeneratedMethod_s() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ topLevelFunction3GeneratedMethod_() → void {}
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-3 */ topLevelFunction4GeneratedMethod_() → void {}
 
 constants  {
   #C1 = mac::FunctionDeclarationsMacro2 {}
diff --git a/pkg/front_end/test/macro_application/data/tests/supertypes.dart b/pkg/front_end/test/macro_application/data/tests/supertypes.dart
index 5690609..37c4038 100644
--- a/pkg/front_end/test/macro_application/data/tests/supertypes.dart
+++ b/pkg/front_end/test/macro_application/data/tests/supertypes.dart
@@ -3,8 +3,30 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /*library: 
+Definitions:
+import 'dart:core' as i0;
 
 
+augment class A {
+augment i0.String getSuperClass() {
+    return "Object";
+  }
+}
+augment class B {
+augment i0.String getSuperClass() {
+    return "A";
+  }
+}
+augment class M {
+augment i0.String getSuperClass() {
+    return "Object";
+  }
+}
+augment class C {
+augment i0.String getSuperClass() {
+    return "A";
+  }
+}
 */
 
 import 'package:macro/macro.dart';
diff --git a/pkg/front_end/test/macro_application/data/tests/supertypes.dart.expect b/pkg/front_end/test/macro_application/data/tests/supertypes.dart.expect
index 3351c329..535be53b 100644
--- a/pkg/front_end/test/macro_application/data/tests/supertypes.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/supertypes.dart.expect
@@ -10,18 +10,24 @@
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  external method getSuperClass() → core::String;
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
+    return "Object";
+  }
 }
 @#C1
 class B extends self::A {
   synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  external method getSuperClass() → core::String;
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
+    return "A";
+  }
 }
 @#C1
-abstract class M extends core::Object /*isMixinDeclaration*/  {
-  external method getSuperClass() → core::String;
+class M extends core::Object /*isMixinDeclaration*/  {
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
+    return "Object";
+  }
 }
 abstract class _C&A&M = self::A with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_C&A&M
@@ -35,7 +41,9 @@
   synthetic constructor •() → self::C
     : super self::_C&A&M::•()
     ;
-  external method getSuperClass() → core::String;
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
+    return "A";
+  }
 }
 
 constants  {
diff --git a/pkg/front_end/test/macro_application/data/tests/to_string.dart b/pkg/front_end/test/macro_application/data/tests/to_string.dart
index b5327e5..7a0be62 100644
--- a/pkg/front_end/test/macro_application/data/tests/to_string.dart
+++ b/pkg/front_end/test/macro_application/data/tests/to_string.dart
@@ -2,11 +2,6 @@
 // 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.
 
-/*library: 
-
-
-*/
-
 import 'package:macro/macro.dart';
 
 @ToStringMacro()
diff --git a/pkg/front_end/test/macro_application/data/tests/to_string.dart.expect b/pkg/front_end/test/macro_application/data/tests/to_string.dart.expect
index 431c8a2..3a56029 100644
--- a/pkg/front_end/test/macro_application/data/tests/to_string.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/to_string.dart.expect
@@ -12,7 +12,7 @@
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ toString() → dynamic {
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ toString() → dynamic {
     return "A(a=${this.{self::A::a}{dynamic}},b=${this.{self::A::b}{dynamic}})";
   }
 }
@@ -24,7 +24,7 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method /* from org-dartlang-augmentation:/a/b/c/main.dart-2 */ toString() → dynamic {
+  method /* from org-dartlang-augmentation:/a/b/c/main.dart-1 */ toString() → dynamic {
     return "B(c=${this.{self::B::c}{dynamic}},d=${this.{self::B::d}{dynamic}},e=${this.{self::B::e}{dynamic}})";
   }
 }
diff --git a/pkg/front_end/test/macro_application/data/tests/type_annotations.dart b/pkg/front_end/test/macro_application/data/tests/type_annotations.dart
index dfee364..f61a9a2 100644
--- a/pkg/front_end/test/macro_application/data/tests/type_annotations.dart
+++ b/pkg/front_end/test/macro_application/data/tests/type_annotations.dart
@@ -3,8 +3,35 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /*library: 
+Definitions:
+import 'dart:core' as i0;
+import 'dart:math' as i1;
 
 
+augment void topLevelFunction1() {
+  throw 42;
+}
+augment i0.dynamic topLevelFunction2() {
+  throw 42;
+}
+augment i0.int topLevelFunction3() {
+  throw 42;
+}
+augment i0.dynamic topLevelFunction4() {
+  throw 42;
+}
+augment i1.Random topLevelFunction5() {
+  throw 42;
+}
+augment i0.List<i0.int> topLevelFunction6() {
+  throw 42;
+}
+augment i0.Map<i1.Random, i0.List<i0.int>> topLevelFunction7() {
+  throw 42;
+}
+augment i0.Map<i0.int?, i0.String>? topLevelFunction8() {
+  throw 42;
+}
 */
 
 import 'dart:math' as math;
@@ -13,56 +40,56 @@
 
 /*member: topLevelFunction1:
 augment void topLevelFunction1() {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external void topLevelFunction1();
 
 /*member: topLevelFunction2:
 augment dynamic topLevelFunction2() {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external dynamic topLevelFunction2();
 
 /*member: topLevelFunction3:
 augment int topLevelFunction3() {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external int topLevelFunction3();
 
 /*member: topLevelFunction4:
 augment dynamic topLevelFunction4() {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external topLevelFunction4();
 
 /*member: topLevelFunction5:
-augment math.Random topLevelFunction5() {
-  return 42;
+augment Random topLevelFunction5() {
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external math.Random topLevelFunction5();
 
 /*member: topLevelFunction6:
 augment List<int> topLevelFunction6() {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external List<int> topLevelFunction6();
 
 /*member: topLevelFunction7:
-augment Map<math.Random, List<int>> topLevelFunction7() {
-  return 42;
+augment Map<Random, List<int>> topLevelFunction7() {
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external Map<math.Random, List<int>> topLevelFunction7();
 
 /*member: topLevelFunction8:
 augment Map<int?, String>? topLevelFunction8() {
-  return 42;
+  throw 42;
 }*/
 @FunctionDefinitionMacro1()
 external Map<int?, String>? topLevelFunction8();
diff --git a/pkg/front_end/test/macro_application/data/tests/type_annotations.dart.expect b/pkg/front_end/test/macro_application/data/tests/type_annotations.dart.expect
index 219150c..ac3d6e3 100644
--- a/pkg/front_end/test/macro_application/data/tests/type_annotations.dart.expect
+++ b/pkg/front_end/test/macro_application/data/tests/type_annotations.dart.expect
@@ -8,21 +8,37 @@
 import "package:macro/macro.dart";
 
 @#C1
-external static method topLevelFunction1() → void;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction1() → void {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction2() → dynamic;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction2() → dynamic {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction3() → core::int;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction3() → core::int {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction4() → dynamic;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction4() → dynamic {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction5() → math::Random;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction5() → math::Random {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction6() → core::List<core::int>;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction6() → core::List<core::int> {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction7() → core::Map<math::Random, core::List<core::int>>;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction7() → core::Map<math::Random, core::List<core::int>> {
+  throw 42;
+}
 @#C1
-external static method topLevelFunction8() → core::Map<core::int?, core::String>?;
+static method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ topLevelFunction8() → core::Map<core::int?, core::String>? {
+  throw 42;
+}
 
 constants  {
   #C1 = mac::FunctionDefinitionMacro1 {}
diff --git a/pkg/front_end/test/macro_application/data/tests/types.dart b/pkg/front_end/test/macro_application/data/tests/types.dart
index 883e037..5da560d 100644
--- a/pkg/front_end/test/macro_application/data/tests/types.dart
+++ b/pkg/front_end/test/macro_application/data/tests/types.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /*library: 
+Types:
 import 'dart:core' as i0;
 import 'package:macro/macro.dart' as i1;
 
@@ -21,8 +22,7 @@
 }
 class topLevelFunction5GeneratedClass {
   external i0.dynamic method();
-}
-*/
+}*/
 
 import 'package:macro/macro.dart';
 
diff --git a/pkg/front_end/test/macro_application/macro_application_test.dart b/pkg/front_end/test/macro_application/macro_application_test.dart
index 647c544..c563333 100644
--- a/pkg/front_end/test/macro_application/macro_application_test.dart
+++ b/pkg/front_end/test/macro_application/macro_application_test.dart
@@ -23,6 +23,7 @@
 import 'package:front_end/src/testing/compiler_common.dart';
 import 'package:front_end/src/testing/id_extractor.dart';
 import 'package:front_end/src/testing/id_testing_helper.dart';
+import 'package:front_end/src/testing/id_testing_utils.dart';
 import 'package:kernel/ast.dart' hide Arguments;
 import 'package:kernel/kernel.dart';
 import 'package:kernel/target/targets.dart';
@@ -157,6 +158,16 @@
       if (sourceLibraryBuilder.library == library) {
         String source =
             macroApplicationData.libraryTypesResult[sourceLibraryBuilder]!;
+        sb.write('\nTypes:');
+        sb.write('\n${source}');
+      }
+    }
+    for (SourceLibraryBuilder sourceLibraryBuilder
+        in macroApplicationData.libraryDefinitionResult.keys) {
+      if (sourceLibraryBuilder.library == library) {
+        String source =
+            macroApplicationData.libraryDefinitionResult[sourceLibraryBuilder]!;
+        sb.write('\nDefinitions:');
         sb.write('\n${source}');
       }
     }
@@ -256,8 +267,10 @@
     }
     if (sb.isNotEmpty) {
       Id id = computeMemberId(member);
-      registry.registerValue(
-          member.fileUri, member.fileOffset, id, sb.toString(), member);
+      MemberBuilder memberBuilder =
+          lookupMemberBuilder(testResultData.compilerResult, member)!;
+      registry.registerValue(memberBuilder.fileUri!, memberBuilder.charOffset,
+          id, sb.toString(), member);
     }
   }
 }
diff --git a/tools/VERSION b/tools/VERSION
index 0910538..de4d810 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 143
+PRERELEASE 144
 PRERELEASE_PATCH 0
\ No newline at end of file