[cfe] Check inline class constructor initializers

Change-Id: I6872ccd948f679e1e0b04b9f59bea833df11d5a2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/277141
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
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 4285b76..1b25846 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -68,6 +68,7 @@
 import '../source/source_class_builder.dart' show SourceClassBuilder;
 import '../source/source_constructor_builder.dart';
 import '../source/source_field_builder.dart';
+import '../source/source_inline_class_builder.dart';
 import '../source/source_library_builder.dart' show SourceLibraryBuilder;
 import '../source/source_loader.dart' show SourceLoader;
 import '../target_implementation.dart' show TargetImplementation;
@@ -620,7 +621,9 @@
       loader.finishNoSuchMethodForwarders();
 
       benchmarker?.enterPhase(BenchmarkPhases.body_collectSourceClasses);
-      List<SourceClassBuilder>? sourceClasses = loader.collectSourceClasses();
+      List<SourceClassBuilder>? sourceClasses = [];
+      List<SourceInlineClassBuilder>? inlineClasses = [];
+      loader.collectSourceClasses(sourceClasses, inlineClasses);
 
       benchmarker?.enterPhase(BenchmarkPhases.body_finishNativeMethods);
       loader.finishNativeMethods();
@@ -629,7 +632,7 @@
       loader.buildBodyNodes();
 
       benchmarker?.enterPhase(BenchmarkPhases.body_finishAllConstructors);
-      finishAllConstructors(sourceClasses);
+      finishAllConstructors(sourceClasses, inlineClasses);
 
       benchmarker?.enterPhase(BenchmarkPhases.body_runBuildTransformations);
       runBuildTransformations();
@@ -649,6 +652,7 @@
       // (for whatever amount of time) even though we convert them to dill
       // library builders. To avoid it we null it out here.
       sourceClasses = null;
+      inlineClasses = null;
       return new BuildResult(
           component: component, macroApplications: macroApplications);
     }, () => loader.currentUriForCrashReporting);
@@ -1244,22 +1248,27 @@
     loader.computeCoreTypes(platformLibraries);
   }
 
-  void finishAllConstructors(List<SourceClassBuilder> builders) {
+  void finishAllConstructors(List<SourceClassBuilder> sourceClassBuilders,
+      List<SourceInlineClassBuilder> inlineClassBuilders) {
     Class objectClass = this.objectClass;
-    for (SourceClassBuilder builder in builders) {
+    for (SourceClassBuilder builder in sourceClassBuilders) {
       Class cls = builder.cls;
       if (cls != objectClass) {
         finishConstructors(builder);
       }
     }
+    for (SourceInlineClassBuilder builder in inlineClassBuilders) {
+      finishInlineConstructors(builder);
+    }
+
     ticker.logMs("Finished constructors");
   }
 
-  /// Ensure constructors of [builder] have the correct initializers and other
-  /// requirements.
-  void finishConstructors(SourceClassBuilder builder) {
-    if (builder.isPatch) return;
-    Class cls = builder.cls;
+  /// Ensure constructors of [classBuilder] have the correct initializers and
+  /// other requirements.
+  void finishConstructors(SourceClassBuilder classBuilder) {
+    if (classBuilder.isPatch) return;
+    Class cls = classBuilder.cls;
 
     Constructor? superTarget;
     for (Constructor constructor in cls.constructors) {
@@ -1270,8 +1279,10 @@
       for (Initializer initializer in constructor.initializers) {
         if (initializer is RedirectingInitializer) {
           if (constructor.isConst && !initializer.target.isConst) {
-            builder.addProblem(messageConstConstructorRedirectionToNonConst,
-                initializer.fileOffset, initializer.target.name.text.length);
+            classBuilder.addProblem(
+                messageConstConstructorRedirectionToNonConst,
+                initializer.fileOffset,
+                initializer.target.name.text.length);
           }
           isRedirecting = true;
           break;
@@ -1289,7 +1300,7 @@
             if (offset == -1 && constructor.isSynthetic) {
               offset = cls.fileOffset;
             }
-            builder.addProblem(
+            classBuilder.addProblem(
                 templateSuperclassHasNoDefaultConstructor
                     .withArguments(cls.superclass!.name),
                 offset,
@@ -1313,11 +1324,15 @@
       }
     }
 
-    finishConstructorsInternal(builder);
+    _finishConstructors(classBuilder);
   }
 
-  void finishConstructorsInternal(ClassDeclaration builder) {
-    SourceLibraryBuilder libraryBuilder = builder.libraryBuilder;
+  void finishInlineConstructors(SourceInlineClassBuilder inlineClass) {
+    _finishConstructors(inlineClass);
+  }
+
+  void _finishConstructors(ClassDeclaration classDeclaration) {
+    SourceLibraryBuilder libraryBuilder = classDeclaration.libraryBuilder;
 
     /// Quotes below are from [Dart Programming Language Specification, 4th
     /// Edition](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf):
@@ -1326,7 +1341,7 @@
     List<SourceFieldBuilder> lateFinalFields = [];
 
     Iterator<SourceFieldBuilder> fieldIterator =
-        builder.fullMemberIterator<SourceFieldBuilder>();
+        classDeclaration.fullMemberIterator<SourceFieldBuilder>();
     while (fieldIterator.moveNext()) {
       SourceFieldBuilder fieldBuilder = fieldIterator.current;
       if (fieldBuilder.isAbstract || fieldBuilder.isExternal) {
@@ -1352,12 +1367,12 @@
     Set<SourceFieldBuilder>? initializedFieldBuilders = null;
 
     Iterator<ConstructorDeclaration> constructorIterator =
-        builder.fullConstructorIterator<ConstructorDeclaration>();
+        classDeclaration.fullConstructorIterator<ConstructorDeclaration>();
     while (constructorIterator.moveNext()) {
       ConstructorDeclaration constructor = constructorIterator.current;
       if (constructor.isEffectivelyRedirecting) continue;
       if (constructor.isConst && nonFinalFields.isNotEmpty) {
-        builder.addProblem(messageConstConstructorNonFinalField,
+        classDeclaration.addProblem(messageConstConstructorNonFinalField,
             constructor.charOffset, noLength,
             context: nonFinalFields
                 .map((field) => messageConstConstructorNonFinalFieldCause
@@ -1368,8 +1383,10 @@
       if (libraryBuilder.isNonNullableByDefault) {
         if (constructor.isConst && lateFinalFields.isNotEmpty) {
           for (FieldBuilder field in lateFinalFields) {
-            builder.addProblem(messageConstConstructorLateFinalFieldError,
-                field.charOffset, noLength,
+            classDeclaration.addProblem(
+                messageConstConstructorLateFinalFieldError,
+                field.charOffset,
+                noLength,
                 context: [
                   messageConstConstructorLateFinalFieldCause.withLocation(
                       constructor.fileUri!, constructor.charOffset, noLength)
@@ -1393,8 +1410,8 @@
           !initializedFieldBuilders.contains(fieldBuilder)) {
         bool uninitializedFinalOrNonNullableFieldIsError =
             libraryBuilder.isNonNullableByDefault ||
-                builder.hasGenerativeConstructor ||
-                builder.isMixinDeclaration;
+                classDeclaration.hasGenerativeConstructor ||
+                classDeclaration.isMixinDeclaration;
         if (!fieldBuilder.isLate) {
           if (fieldBuilder.isFinal &&
               uninitializedFinalOrNonNullableFieldIsError) {
diff --git a/pkg/front_end/lib/src/fasta/source/class_declaration.dart b/pkg/front_end/lib/src/fasta/source/class_declaration.dart
index 200c78c..f1da77c 100644
--- a/pkg/front_end/lib/src/fasta/source/class_declaration.dart
+++ b/pkg/front_end/lib/src/fasta/source/class_declaration.dart
@@ -2,8 +2,11 @@
 // 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 '../builder/builder.dart';
 import '../builder/class_builder.dart';
 import '../builder/declaration_builder.dart';
+import '../builder/member_builder.dart';
+import '../builder/name_iterator.dart';
 import 'source_library_builder.dart';
 
 /// Common interface for builders for a class declarations in source code, such
@@ -19,3 +22,212 @@
   /// either explicitly or implicitly through a no-name default constructor.
   bool get hasGenerativeConstructor;
 }
+
+abstract class ClassDeclarationAugmentationAccess<D extends ClassDeclaration> {
+  D getOrigin(D classDeclaration);
+  Iterable<D>? getAugmentations(D classDeclaration);
+}
+
+class ClassDeclarationMemberIterator<D extends ClassDeclaration,
+    T extends Builder> implements Iterator<T> {
+  Iterator<T>? _iterator;
+  Iterator<D>? augmentationBuilders;
+  final bool includeDuplicates;
+
+  factory ClassDeclarationMemberIterator(
+      ClassDeclarationAugmentationAccess<D> patching, D classBuilder,
+      {required bool includeDuplicates}) {
+    return new ClassDeclarationMemberIterator._(
+        patching.getOrigin(classBuilder),
+        patching.getAugmentations(classBuilder)?.iterator,
+        includeDuplicates: includeDuplicates);
+  }
+
+  ClassDeclarationMemberIterator._(
+      D classDeclaration, this.augmentationBuilders,
+      {required this.includeDuplicates})
+      : _iterator = classDeclaration.scope.filteredIterator<T>(
+            parent: classDeclaration,
+            includeDuplicates: includeDuplicates,
+            includeAugmentations: false);
+
+  @override
+  bool moveNext() {
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
+      D augmentationClassDeclaration = augmentationBuilders!.current;
+      _iterator = augmentationClassDeclaration.scope.filteredIterator<T>(
+          parent: augmentationClassDeclaration,
+          includeDuplicates: includeDuplicates,
+          includeAugmentations: false);
+    }
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  T get current => _iterator?.current ?? (throw new StateError('No element'));
+}
+
+class ClassDeclarationMemberNameIterator<D extends ClassDeclaration,
+    T extends Builder> implements NameIterator<T> {
+  NameIterator<T>? _iterator;
+  Iterator<D>? augmentationBuilders;
+  final bool includeDuplicates;
+
+  factory ClassDeclarationMemberNameIterator(
+      ClassDeclarationAugmentationAccess<D> patching, D classBuilder,
+      {required bool includeDuplicates}) {
+    return new ClassDeclarationMemberNameIterator._(
+        patching.getOrigin(classBuilder),
+        patching.getAugmentations(classBuilder)?.iterator,
+        includeDuplicates: includeDuplicates);
+  }
+
+  ClassDeclarationMemberNameIterator._(
+      D classDeclaration, this.augmentationBuilders,
+      {required this.includeDuplicates})
+      : _iterator = classDeclaration.scope.filteredNameIterator<T>(
+            parent: classDeclaration,
+            includeDuplicates: includeDuplicates,
+            includeAugmentations: false);
+
+  @override
+  bool moveNext() {
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
+      D augmentationClassDeclaration = augmentationBuilders!.current;
+      _iterator = augmentationClassDeclaration.scope.filteredNameIterator<T>(
+          parent: augmentationClassDeclaration,
+          includeDuplicates: includeDuplicates,
+          includeAugmentations: false);
+    }
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  T get current => _iterator?.current ?? (throw new StateError('No element'));
+
+  @override
+  String get name => _iterator?.name ?? (throw new StateError('No element'));
+}
+
+class ClassDeclarationConstructorIterator<D extends ClassDeclaration,
+    T extends MemberBuilder> implements Iterator<T> {
+  Iterator<T>? _iterator;
+  Iterator<D>? augmentationBuilders;
+  final bool includeDuplicates;
+
+  factory ClassDeclarationConstructorIterator(
+      ClassDeclarationAugmentationAccess<D> patching, D classBuilder,
+      {required bool includeDuplicates}) {
+    return new ClassDeclarationConstructorIterator._(
+        patching.getOrigin(classBuilder),
+        patching.getAugmentations(classBuilder)?.iterator,
+        includeDuplicates: includeDuplicates);
+  }
+
+  ClassDeclarationConstructorIterator._(
+      D classDeclaration, this.augmentationBuilders,
+      {required this.includeDuplicates})
+      : _iterator = classDeclaration.constructorScope.filteredIterator<T>(
+            parent: classDeclaration,
+            includeDuplicates: includeDuplicates,
+            includeAugmentations: false);
+
+  @override
+  bool moveNext() {
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
+      D augmentationClassDeclaration = augmentationBuilders!.current;
+      _iterator = augmentationClassDeclaration.constructorScope
+          .filteredIterator<T>(
+              parent: augmentationClassDeclaration,
+              includeDuplicates: includeDuplicates,
+              includeAugmentations: false);
+    }
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  T get current => _iterator?.current ?? (throw new StateError('No element'));
+}
+
+class ClassDeclarationConstructorNameIterator<D extends ClassDeclaration,
+    T extends MemberBuilder> implements NameIterator<T> {
+  NameIterator<T>? _iterator;
+  Iterator<D>? augmentationBuilders;
+  final bool includeDuplicates;
+
+  factory ClassDeclarationConstructorNameIterator(
+      ClassDeclarationAugmentationAccess<D> patching, D classDeclaration,
+      {required bool includeDuplicates}) {
+    return new ClassDeclarationConstructorNameIterator._(
+        patching.getOrigin(classDeclaration),
+        patching.getAugmentations(classDeclaration)?.iterator,
+        includeDuplicates: includeDuplicates);
+  }
+
+  ClassDeclarationConstructorNameIterator._(
+      D classBuilder, this.augmentationBuilders,
+      {required this.includeDuplicates})
+      : _iterator = classBuilder.constructorScope.filteredNameIterator<T>(
+            parent: classBuilder,
+            includeDuplicates: includeDuplicates,
+            includeAugmentations: false);
+
+  @override
+  bool moveNext() {
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
+      D augmentationClassDeclaration = augmentationBuilders!.current;
+      _iterator = augmentationClassDeclaration.constructorScope
+          .filteredNameIterator<T>(
+              parent: augmentationClassDeclaration,
+              includeDuplicates: includeDuplicates,
+              includeAugmentations: false);
+    }
+    if (_iterator != null) {
+      if (_iterator!.moveNext()) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  T get current => _iterator?.current ?? (throw new StateError('No element'));
+
+  @override
+  String get name => _iterator?.name ?? (throw new StateError('No element'));
+}
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 9739d76..0943688 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -385,19 +385,27 @@
 
   @override
   Iterator<T> fullMemberIterator<T extends Builder>() =>
-      new ClassMemberIterator<T>(this, includeDuplicates: false);
+      new ClassDeclarationMemberIterator<SourceClassBuilder, T>(
+          const _SourceClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
   NameIterator<T> fullMemberNameIterator<T extends Builder>() =>
-      new ClassMemberNameIterator<T>(this, includeDuplicates: false);
+      new ClassDeclarationMemberNameIterator<SourceClassBuilder, T>(
+          const _SourceClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
   Iterator<T> fullConstructorIterator<T extends MemberBuilder>() =>
-      new ClassConstructorIterator<T>(this, includeDuplicates: false);
+      new ClassDeclarationConstructorIterator<SourceClassBuilder, T>(
+          const _SourceClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
   NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>() =>
-      new ClassConstructorNameIterator<T>(this, includeDuplicates: false);
+      new ClassDeclarationConstructorNameIterator<SourceClassBuilder, T>(
+          const _SourceClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
   bool get hasGenerativeConstructor =>
@@ -2362,6 +2370,20 @@
   return null;
 }
 
+class _SourceClassBuilderAugmentationAccess
+    implements ClassDeclarationAugmentationAccess<SourceClassBuilder> {
+  const _SourceClassBuilderAugmentationAccess();
+
+  @override
+  SourceClassBuilder getOrigin(SourceClassBuilder classDeclaration) =>
+      classDeclaration.origin;
+
+  @override
+  Iterable<SourceClassBuilder>? getAugmentations(
+          SourceClassBuilder classDeclaration) =>
+      classDeclaration._patches;
+}
+
 class _RedirectingConstructorsFieldBuilder extends DillFieldBuilder
     with SourceMemberBuilderMixin {
   _RedirectingConstructorsFieldBuilder(Field field, SourceClassBuilder parent)
@@ -2387,195 +2409,3 @@
   void checkTypes(
       SourceLibraryBuilder library, TypeEnvironment typeEnvironment) {}
 }
-
-class ClassMemberIterator<T extends Builder> implements Iterator<T> {
-  Iterator<T>? _iterator;
-  Iterator<SourceClassBuilder>? augmentationBuilders;
-  final bool includeDuplicates;
-
-  factory ClassMemberIterator(SourceClassBuilder classBuilder,
-      {required bool includeDuplicates}) {
-    return new ClassMemberIterator._(classBuilder.origin,
-        includeDuplicates: includeDuplicates);
-  }
-
-  ClassMemberIterator._(SourceClassBuilder classBuilder,
-      {required this.includeDuplicates})
-      : _iterator = classBuilder.scope.filteredIterator<T>(
-            parent: classBuilder,
-            includeDuplicates: includeDuplicates,
-            includeAugmentations: false),
-        augmentationBuilders = classBuilder._patches?.iterator;
-
-  @override
-  bool moveNext() {
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
-      SourceClassBuilder augmentationClassBuilder =
-          augmentationBuilders!.current;
-      _iterator = augmentationClassBuilder.scope.filteredIterator<T>(
-          parent: augmentationClassBuilder,
-          includeDuplicates: includeDuplicates,
-          includeAugmentations: false);
-    }
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @override
-  T get current => _iterator?.current ?? (throw new StateError('No element'));
-}
-
-class ClassMemberNameIterator<T extends Builder> implements NameIterator<T> {
-  NameIterator<T>? _iterator;
-  Iterator<SourceClassBuilder>? augmentationBuilders;
-  final bool includeDuplicates;
-
-  factory ClassMemberNameIterator(SourceClassBuilder classBuilder,
-      {required bool includeDuplicates}) {
-    return new ClassMemberNameIterator._(classBuilder.origin,
-        includeDuplicates: includeDuplicates);
-  }
-
-  ClassMemberNameIterator._(SourceClassBuilder classBuilder,
-      {required this.includeDuplicates})
-      : _iterator = classBuilder.scope.filteredNameIterator<T>(
-            parent: classBuilder,
-            includeDuplicates: includeDuplicates,
-            includeAugmentations: false),
-        augmentationBuilders = classBuilder._patches?.iterator;
-
-  @override
-  bool moveNext() {
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
-      SourceClassBuilder augmentationClassBuilder =
-          augmentationBuilders!.current;
-      _iterator = augmentationClassBuilder.scope.filteredNameIterator<T>(
-          parent: augmentationClassBuilder,
-          includeDuplicates: includeDuplicates,
-          includeAugmentations: false);
-    }
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @override
-  T get current => _iterator?.current ?? (throw new StateError('No element'));
-
-  @override
-  String get name => _iterator?.name ?? (throw new StateError('No element'));
-}
-
-class ClassConstructorIterator<T extends MemberBuilder> implements Iterator<T> {
-  Iterator<T>? _iterator;
-  Iterator<SourceClassBuilder>? augmentationBuilders;
-  final bool includeDuplicates;
-
-  factory ClassConstructorIterator(SourceClassBuilder classBuilder,
-      {required bool includeDuplicates}) {
-    return new ClassConstructorIterator._(classBuilder.origin,
-        includeDuplicates: includeDuplicates);
-  }
-
-  ClassConstructorIterator._(SourceClassBuilder classBuilder,
-      {required this.includeDuplicates})
-      : _iterator = classBuilder.constructorScope.filteredIterator<T>(
-            parent: classBuilder,
-            includeDuplicates: includeDuplicates,
-            includeAugmentations: false),
-        augmentationBuilders = classBuilder._patches?.iterator;
-
-  @override
-  bool moveNext() {
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
-      SourceClassBuilder augmentationClassBuilder =
-          augmentationBuilders!.current;
-      _iterator = augmentationClassBuilder.constructorScope.filteredIterator<T>(
-          parent: augmentationClassBuilder,
-          includeDuplicates: includeDuplicates,
-          includeAugmentations: false);
-    }
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @override
-  T get current => _iterator?.current ?? (throw new StateError('No element'));
-}
-
-class ClassConstructorNameIterator<T extends MemberBuilder>
-    implements NameIterator<T> {
-  NameIterator<T>? _iterator;
-  Iterator<SourceClassBuilder>? augmentationBuilders;
-  final bool includeDuplicates;
-
-  factory ClassConstructorNameIterator(SourceClassBuilder classBuilder,
-      {required bool includeDuplicates}) {
-    return new ClassConstructorNameIterator._(classBuilder.origin,
-        includeDuplicates: includeDuplicates);
-  }
-
-  ClassConstructorNameIterator._(SourceClassBuilder classBuilder,
-      {required this.includeDuplicates})
-      : _iterator = classBuilder.constructorScope.filteredNameIterator<T>(
-            parent: classBuilder,
-            includeDuplicates: includeDuplicates,
-            includeAugmentations: false),
-        augmentationBuilders = classBuilder._patches?.iterator;
-
-  @override
-  bool moveNext() {
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    if (augmentationBuilders != null && augmentationBuilders!.moveNext()) {
-      SourceClassBuilder augmentationClassBuilder =
-          augmentationBuilders!.current;
-      _iterator = augmentationClassBuilder.constructorScope
-          .filteredNameIterator<T>(
-              parent: augmentationClassBuilder,
-              includeDuplicates: includeDuplicates,
-              includeAugmentations: false);
-    }
-    if (_iterator != null) {
-      if (_iterator!.moveNext()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @override
-  T get current => _iterator?.current ?? (throw new StateError('No element'));
-
-  @override
-  String get name => _iterator?.name ?? (throw new StateError('No element'));
-}
diff --git a/pkg/front_end/lib/src/fasta/source/source_inline_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_inline_class_builder.dart
index b11f305..ba66135 100644
--- a/pkg/front_end/lib/src/fasta/source/source_inline_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_inline_class_builder.dart
@@ -203,35 +203,50 @@
   DartType get declaredRepresentationType => throw new UnimplementedError();
 
   @override
-  Iterator<T> fullConstructorIterator<T extends MemberBuilder>() {
-    // TODO(johnniwinther): Implement fullConstructorIterator
-    throw new UnimplementedError();
-  }
+  Iterator<T> fullMemberIterator<T extends Builder>() =>
+      new ClassDeclarationMemberIterator<SourceInlineClassBuilder, T>(
+          const _SourceInlineClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
-  NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>() {
-    // TODO(johnniwinther): Implement fullConstructorNameIterator
-    throw new UnimplementedError();
-  }
+  NameIterator<T> fullMemberNameIterator<T extends Builder>() =>
+      new ClassDeclarationMemberNameIterator<SourceInlineClassBuilder, T>(
+          const _SourceInlineClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
-  Iterator<T> fullMemberIterator<T extends Builder>() {
-    // TODO(johnniwinther): Implement fullMemberIterator
-    throw new UnimplementedError();
-  }
+  Iterator<T> fullConstructorIterator<T extends MemberBuilder>() =>
+      new ClassDeclarationConstructorIterator<SourceInlineClassBuilder, T>(
+          const _SourceInlineClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
-  NameIterator<T> fullMemberNameIterator<T extends Builder>() {
-    // TODO(johnniwinther): Implement fullMemberNameIterator
-    throw new UnimplementedError();
-  }
+  NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>() =>
+      new ClassDeclarationConstructorNameIterator<SourceInlineClassBuilder, T>(
+          const _SourceInlineClassBuilderAugmentationAccess(), this,
+          includeDuplicates: false);
 
   @override
   bool get isMixinDeclaration => false;
 
   @override
   bool get hasGenerativeConstructor {
-    // TODO(johnniwinther): Implement hasGenerativeConstructor
-    throw new UnimplementedError();
+    // TODO(johnniwinther): Support default constructor? and factories.
+    return true;
   }
 }
+
+class _SourceInlineClassBuilderAugmentationAccess
+    implements ClassDeclarationAugmentationAccess<SourceInlineClassBuilder> {
+  const _SourceInlineClassBuilderAugmentationAccess();
+
+  @override
+  SourceInlineClassBuilder getOrigin(
+          SourceInlineClassBuilder classDeclaration) =>
+      classDeclaration.origin;
+
+  @override
+  Iterable<SourceInlineClassBuilder>? getAugmentations(
+          SourceInlineClassBuilder classDeclaration) =>
+      null;
+}
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 74c880d..88d73dff 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
@@ -1558,19 +1558,24 @@
     }
   }
 
-  void collectSourceClasses(List<SourceClassBuilder> sourceClasses) {
+  void collectSourceClasses(List<SourceClassBuilder> sourceClasses,
+      List<SourceInlineClassBuilder>? inlineClasses) {
     Iterable<SourceLibraryBuilder>? patches = this.patchLibraries;
     if (patches != null) {
       for (SourceLibraryBuilder patchLibrary in patches) {
-        patchLibrary.collectSourceClasses(sourceClasses);
+        patchLibrary.collectSourceClasses(sourceClasses, inlineClasses);
       }
     }
 
-    Iterator<SourceClassBuilder> iterator = localMembersIteratorOfType();
+    Iterator<Builder> iterator = localMembersIterator;
     while (iterator.moveNext()) {
-      SourceClassBuilder member = iterator.current;
-      if (!member.isPatch) {
+      Builder member = iterator.current;
+      if (member is SourceClassBuilder && !member.isPatch) {
         sourceClasses.add(member);
+      } else if (inlineClasses != null &&
+          member is SourceInlineClassBuilder &&
+          !member.isPatch) {
+        inlineClasses.add(member);
       }
     }
   }
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 b64c774..b07298c 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -97,6 +97,7 @@
 import 'source_extension_builder.dart';
 import 'source_factory_builder.dart';
 import 'source_field_builder.dart';
+import 'source_inline_class_builder.dart';
 import 'source_library_builder.dart'
     show
         ImplicitLanguageVersion,
@@ -1936,13 +1937,13 @@
     }
   }
 
-  /// Returns classes defined in libraries in this [SourceLoader].
-  List<SourceClassBuilder> collectSourceClasses() {
-    List<SourceClassBuilder> sourceClasses = <SourceClassBuilder>[];
+  /// Add classes (and inline classes) defined in libraries in this
+  /// [SourceLoader] to [sourceClasses], and [inlineClasses], if provided.
+  void collectSourceClasses(List<SourceClassBuilder> sourceClasses,
+      [List<SourceInlineClassBuilder>? inlineClasses]) {
     for (SourceLibraryBuilder library in sourceLibraryBuilders) {
-      library.collectSourceClasses(sourceClasses);
+      library.collectSourceClasses(sourceClasses, inlineClasses);
     }
-    return sourceClasses;
   }
 
   /// Returns a list of all class builders declared in this loader.  As the
@@ -1969,8 +1970,10 @@
     }
 
     // Sort the classes topologically.
+    List<SourceClassBuilder> sourceClasses = [];
+    collectSourceClasses(sourceClasses);
     _SourceClassGraph classGraph =
-        new _SourceClassGraph(collectSourceClasses(), objectClass);
+        new _SourceClassGraph(sourceClasses, objectClass);
     TopologicalSortResult<SourceClassBuilder> result =
         topologicalSort(classGraph);
     List<SourceClassBuilder> classes = result.sortedVertices;
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart b/pkg/front_end/testcases/inline_class/initializers.dart
new file mode 100644
index 0000000..a476b35
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2022, 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.
+
+inline class Class1 {
+  final int field;
+
+  Class1(this.field);
+}
+
+inline class Class2 {
+  final int field;
+
+  Class2(int field) : this.field = field;
+}
+
+inline class Class3 {
+  final int field;
+}
+
+inline class Class4 {
+  final int field;
+
+  Class4(this.field, this.nonexisting);
+}
+
+inline class Class5 {
+  final int field;
+
+  Class5(this.field) : this.field = 42;
+}
+
+inline class Class6 {
+  final int field;
+
+  Class6(this.field) : this.nonexisting = 42;
+}
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.strong.expect b/pkg/front_end/testcases/inline_class/initializers.dart.strong.expect
new file mode 100644
index 0000000..3b0e996
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.strong.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:24:27: Error: 'nonexisting' isn't an instance field of this class.
+//   Class4(this.field, this.nonexisting);
+//                           ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:30:35: Error: 'field' was already initialized by this constructor.
+//   Class5(this.field) : this.field = 42;
+//                                   ^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:36:29: Error: 'nonexisting' isn't an instance field of this class.
+//   Class6(this.field) : this.nonexisting = 42;
+//                             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:18:13: Error: Final field 'field' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int field;
+//             ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+inline class Class1 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class1|;
+}
+inline class Class2 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class2|;
+}
+inline class Class3 /* declaredRepresentationType = core::int */ {
+}
+inline class Class4 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class4|;
+}
+inline class Class5 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class5|;
+}
+inline class Class6 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class6|;
+}
+method Class1|(core::int field) → self::Class1
+  ;
+method Class2|(core::int field) → self::Class2
+  ;
+method Class4|(core::int field, dynamic nonexisting) → self::Class4
+  ;
+method Class5|(core::int field) → self::Class5
+  ;
+method Class6|(core::int field) → self::Class6
+  ;
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.strong.transformed.expect b/pkg/front_end/testcases/inline_class/initializers.dart.strong.transformed.expect
new file mode 100644
index 0000000..3b0e996
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.strong.transformed.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:24:27: Error: 'nonexisting' isn't an instance field of this class.
+//   Class4(this.field, this.nonexisting);
+//                           ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:30:35: Error: 'field' was already initialized by this constructor.
+//   Class5(this.field) : this.field = 42;
+//                                   ^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:36:29: Error: 'nonexisting' isn't an instance field of this class.
+//   Class6(this.field) : this.nonexisting = 42;
+//                             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:18:13: Error: Final field 'field' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int field;
+//             ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+inline class Class1 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class1|;
+}
+inline class Class2 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class2|;
+}
+inline class Class3 /* declaredRepresentationType = core::int */ {
+}
+inline class Class4 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class4|;
+}
+inline class Class5 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class5|;
+}
+inline class Class6 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class6|;
+}
+method Class1|(core::int field) → self::Class1
+  ;
+method Class2|(core::int field) → self::Class2
+  ;
+method Class4|(core::int field, dynamic nonexisting) → self::Class4
+  ;
+method Class5|(core::int field) → self::Class5
+  ;
+method Class6|(core::int field) → self::Class6
+  ;
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.textual_outline.expect b/pkg/front_end/testcases/inline_class/initializers.dart.textual_outline.expect
new file mode 100644
index 0000000..029ff7b
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.textual_outline.expect
@@ -0,0 +1,29 @@
+inline
+class Class1 {
+  final int field;
+  Class1(this.field);
+}
+inline
+class Class2 {
+  final int field;
+  Class2(int field) : this.field = field;
+}
+inline
+class Class3 {
+  final int field;
+}
+inline
+class Class4 {
+  final int field;
+  Class4(this.field, this.nonexisting);
+}
+inline
+class Class5 {
+  final int field;
+  Class5(this.field) : this.field = 42;
+}
+inline
+class Class6 {
+  final int field;
+  Class6(this.field) : this.nonexisting = 42;
+}
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.weak.expect b/pkg/front_end/testcases/inline_class/initializers.dart.weak.expect
new file mode 100644
index 0000000..3b0e996
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.weak.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:24:27: Error: 'nonexisting' isn't an instance field of this class.
+//   Class4(this.field, this.nonexisting);
+//                           ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:30:35: Error: 'field' was already initialized by this constructor.
+//   Class5(this.field) : this.field = 42;
+//                                   ^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:36:29: Error: 'nonexisting' isn't an instance field of this class.
+//   Class6(this.field) : this.nonexisting = 42;
+//                             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:18:13: Error: Final field 'field' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int field;
+//             ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+inline class Class1 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class1|;
+}
+inline class Class2 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class2|;
+}
+inline class Class3 /* declaredRepresentationType = core::int */ {
+}
+inline class Class4 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class4|;
+}
+inline class Class5 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class5|;
+}
+inline class Class6 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class6|;
+}
+method Class1|(core::int field) → self::Class1
+  ;
+method Class2|(core::int field) → self::Class2
+  ;
+method Class4|(core::int field, dynamic nonexisting) → self::Class4
+  ;
+method Class5|(core::int field) → self::Class5
+  ;
+method Class6|(core::int field) → self::Class6
+  ;
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.weak.modular.expect b/pkg/front_end/testcases/inline_class/initializers.dart.weak.modular.expect
new file mode 100644
index 0000000..3b0e996
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.weak.modular.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:24:27: Error: 'nonexisting' isn't an instance field of this class.
+//   Class4(this.field, this.nonexisting);
+//                           ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:30:35: Error: 'field' was already initialized by this constructor.
+//   Class5(this.field) : this.field = 42;
+//                                   ^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:36:29: Error: 'nonexisting' isn't an instance field of this class.
+//   Class6(this.field) : this.nonexisting = 42;
+//                             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:18:13: Error: Final field 'field' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int field;
+//             ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+inline class Class1 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class1|;
+}
+inline class Class2 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class2|;
+}
+inline class Class3 /* declaredRepresentationType = core::int */ {
+}
+inline class Class4 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class4|;
+}
+inline class Class5 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class5|;
+}
+inline class Class6 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class6|;
+}
+method Class1|(core::int field) → self::Class1
+  ;
+method Class2|(core::int field) → self::Class2
+  ;
+method Class4|(core::int field, dynamic nonexisting) → self::Class4
+  ;
+method Class5|(core::int field) → self::Class5
+  ;
+method Class6|(core::int field) → self::Class6
+  ;
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.weak.outline.expect b/pkg/front_end/testcases/inline_class/initializers.dart.weak.outline.expect
new file mode 100644
index 0000000..74753da
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.weak.outline.expect
@@ -0,0 +1,31 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+inline class Class1 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class1|;
+}
+inline class Class2 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class2|;
+}
+inline class Class3 /* declaredRepresentationType = core::int */ {
+}
+inline class Class4 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class4|;
+}
+inline class Class5 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class5|;
+}
+inline class Class6 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class6|;
+}
+method Class1|(core::int field) → self::Class1
+  ;
+method Class2|(core::int field) → self::Class2
+  ;
+method Class4|(core::int field, dynamic nonexisting) → self::Class4
+  ;
+method Class5|(core::int field) → self::Class5
+  ;
+method Class6|(core::int field) → self::Class6
+  ;
diff --git a/pkg/front_end/testcases/inline_class/initializers.dart.weak.transformed.expect b/pkg/front_end/testcases/inline_class/initializers.dart.weak.transformed.expect
new file mode 100644
index 0000000..3b0e996
--- /dev/null
+++ b/pkg/front_end/testcases/inline_class/initializers.dart.weak.transformed.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:24:27: Error: 'nonexisting' isn't an instance field of this class.
+//   Class4(this.field, this.nonexisting);
+//                           ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:30:35: Error: 'field' was already initialized by this constructor.
+//   Class5(this.field) : this.field = 42;
+//                                   ^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:36:29: Error: 'nonexisting' isn't an instance field of this class.
+//   Class6(this.field) : this.nonexisting = 42;
+//                             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/initializers.dart:18:13: Error: Final field 'field' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int field;
+//             ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+inline class Class1 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class1|;
+}
+inline class Class2 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class2|;
+}
+inline class Class3 /* declaredRepresentationType = core::int */ {
+}
+inline class Class4 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class4|;
+}
+inline class Class5 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class5|;
+}
+inline class Class6 /* declaredRepresentationType = core::int */ {
+  constructor • = self::Class6|;
+}
+method Class1|(core::int field) → self::Class1
+  ;
+method Class2|(core::int field) → self::Class2
+  ;
+method Class4|(core::int field, dynamic nonexisting) → self::Class4
+  ;
+method Class5|(core::int field) → self::Class5
+  ;
+method Class6|(core::int field) → self::Class6
+  ;
diff --git a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.expect b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.expect
index 17de42b..4cfec83 100644
--- a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:7:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:11:17: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final List<T> it;
+//                 ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.transformed.expect
index 0bef8c1..2c63a24 100644
--- a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.strong.transformed.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:7:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:11:17: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final List<T> it;
+//                 ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.expect b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.expect
index 17de42b..4cfec83 100644
--- a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.expect
+++ b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:7:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:11:17: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final List<T> it;
+//                 ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.modular.expect b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.modular.expect
index 17de42b..4cfec83 100644
--- a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.modular.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:7:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:11:17: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final List<T> it;
+//                 ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.transformed.expect
index 0bef8c1..2c63a24 100644
--- a/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inline_class/inline_class_declaration.dart.weak.transformed.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:7:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/inline_class_declaration.dart:11:17: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final List<T> it;
+//                 ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/procedures.dart.strong.expect b/pkg/front_end/testcases/inline_class/procedures.dart.strong.expect
index 65cef0e..03cd44e 100644
--- a/pkg/front_end/testcases/inline_class/procedures.dart.strong.expect
+++ b/pkg/front_end/testcases/inline_class/procedures.dart.strong.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:6:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:39:11: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T it;
+//           ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/procedures.dart.strong.transformed.expect b/pkg/front_end/testcases/inline_class/procedures.dart.strong.transformed.expect
index 65cef0e..03cd44e 100644
--- a/pkg/front_end/testcases/inline_class/procedures.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inline_class/procedures.dart.strong.transformed.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:6:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:39:11: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T it;
+//           ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/procedures.dart.weak.expect b/pkg/front_end/testcases/inline_class/procedures.dart.weak.expect
index 65cef0e..03cd44e 100644
--- a/pkg/front_end/testcases/inline_class/procedures.dart.weak.expect
+++ b/pkg/front_end/testcases/inline_class/procedures.dart.weak.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:6:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:39:11: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T it;
+//           ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/procedures.dart.weak.modular.expect b/pkg/front_end/testcases/inline_class/procedures.dart.weak.modular.expect
index 65cef0e..03cd44e 100644
--- a/pkg/front_end/testcases/inline_class/procedures.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inline_class/procedures.dart.weak.modular.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:6:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:39:11: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T it;
+//           ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/procedures.dart.weak.transformed.expect b/pkg/front_end/testcases/inline_class/procedures.dart.weak.transformed.expect
index 65cef0e..03cd44e 100644
--- a/pkg/front_end/testcases/inline_class/procedures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inline_class/procedures.dart.weak.transformed.expect
@@ -1,4 +1,17 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:6:13: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int it;
+//             ^^
+//
+// pkg/front_end/testcases/inline_class/procedures.dart:39:11: Error: Final field 'it' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final T it;
+//           ^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/representation.dart.strong.expect b/pkg/front_end/testcases/inline_class/representation.dart.strong.expect
index bc1ba48..6982699 100644
--- a/pkg/front_end/testcases/inline_class/representation.dart.strong.expect
+++ b/pkg/front_end/testcases/inline_class/representation.dart.strong.expect
@@ -9,6 +9,26 @@
 //   final bool instanceField;
 //              ^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/inline_class/representation.dart:9:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:13:14: Error: Final field 'instanceField1' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField1;
+//              ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:14:13: Error: Final field 'instanceField2' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int instanceField2;
+//             ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:18:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/representation.dart.strong.transformed.expect b/pkg/front_end/testcases/inline_class/representation.dart.strong.transformed.expect
index bc1ba48..6982699 100644
--- a/pkg/front_end/testcases/inline_class/representation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inline_class/representation.dart.strong.transformed.expect
@@ -9,6 +9,26 @@
 //   final bool instanceField;
 //              ^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/inline_class/representation.dart:9:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:13:14: Error: Final field 'instanceField1' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField1;
+//              ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:14:13: Error: Final field 'instanceField2' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int instanceField2;
+//             ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:18:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/representation.dart.weak.expect b/pkg/front_end/testcases/inline_class/representation.dart.weak.expect
index bc1ba48..6982699 100644
--- a/pkg/front_end/testcases/inline_class/representation.dart.weak.expect
+++ b/pkg/front_end/testcases/inline_class/representation.dart.weak.expect
@@ -9,6 +9,26 @@
 //   final bool instanceField;
 //              ^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/inline_class/representation.dart:9:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:13:14: Error: Final field 'instanceField1' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField1;
+//              ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:14:13: Error: Final field 'instanceField2' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int instanceField2;
+//             ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:18:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/representation.dart.weak.modular.expect b/pkg/front_end/testcases/inline_class/representation.dart.weak.modular.expect
index bc1ba48..6982699 100644
--- a/pkg/front_end/testcases/inline_class/representation.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inline_class/representation.dart.weak.modular.expect
@@ -9,6 +9,26 @@
 //   final bool instanceField;
 //              ^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/inline_class/representation.dart:9:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:13:14: Error: Final field 'instanceField1' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField1;
+//              ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:14:13: Error: Final field 'instanceField2' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int instanceField2;
+//             ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:18:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inline_class/representation.dart.weak.transformed.expect b/pkg/front_end/testcases/inline_class/representation.dart.weak.transformed.expect
index bc1ba48..6982699 100644
--- a/pkg/front_end/testcases/inline_class/representation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inline_class/representation.dart.weak.transformed.expect
@@ -9,6 +9,26 @@
 //   final bool instanceField;
 //              ^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/inline_class/representation.dart:9:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:13:14: Error: Final field 'instanceField1' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField1;
+//              ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:14:13: Error: Final field 'instanceField2' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final int instanceField2;
+//             ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/inline_class/representation.dart:18:14: Error: Final field 'instanceField' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final bool instanceField;
+//              ^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect
index 9aa345d..eb2b0e2 100644
--- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.expect
@@ -22,11 +22,6 @@
 //   void patchedMethod([int i]) {}
 //                           ^
 //
-// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
-// Try adding either an explicit non-'null' default value or the 'required' modifier.
-//   void _injectedMethod([int i]) {}
-//                             ^
-//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:17:25: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void patchedMethod([int i]) {}
@@ -37,6 +32,11 @@
 // void _injectedMethod([int i]) {}
 //                           ^
 //
+// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
+// Try adding either an explicit non-'null' default value or the 'required' modifier.
+//   void _injectedMethod([int i]) {}
+//                             ^
+//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/origin_lib.dart:11:18: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void method([int i]) {}
diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.transformed.expect
index 9aa345d..eb2b0e2 100644
--- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.strong.transformed.expect
@@ -22,11 +22,6 @@
 //   void patchedMethod([int i]) {}
 //                           ^
 //
-// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
-// Try adding either an explicit non-'null' default value or the 'required' modifier.
-//   void _injectedMethod([int i]) {}
-//                             ^
-//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:17:25: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void patchedMethod([int i]) {}
@@ -37,6 +32,11 @@
 // void _injectedMethod([int i]) {}
 //                           ^
 //
+// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
+// Try adding either an explicit non-'null' default value or the 'required' modifier.
+//   void _injectedMethod([int i]) {}
+//                             ^
+//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/origin_lib.dart:11:18: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void method([int i]) {}
diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect
index 9aa345d..eb2b0e2 100644
--- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.expect
@@ -22,11 +22,6 @@
 //   void patchedMethod([int i]) {}
 //                           ^
 //
-// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
-// Try adding either an explicit non-'null' default value or the 'required' modifier.
-//   void _injectedMethod([int i]) {}
-//                             ^
-//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:17:25: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void patchedMethod([int i]) {}
@@ -37,6 +32,11 @@
 // void _injectedMethod([int i]) {}
 //                           ^
 //
+// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
+// Try adding either an explicit non-'null' default value or the 'required' modifier.
+//   void _injectedMethod([int i]) {}
+//                             ^
+//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/origin_lib.dart:11:18: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void method([int i]) {}
diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect
index 9aa345d..eb2b0e2 100644
--- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.modular.expect
@@ -22,11 +22,6 @@
 //   void patchedMethod([int i]) {}
 //                           ^
 //
-// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
-// Try adding either an explicit non-'null' default value or the 'required' modifier.
-//   void _injectedMethod([int i]) {}
-//                             ^
-//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:17:25: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void patchedMethod([int i]) {}
@@ -37,6 +32,11 @@
 // void _injectedMethod([int i]) {}
 //                           ^
 //
+// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
+// Try adding either an explicit non-'null' default value or the 'required' modifier.
+//   void _injectedMethod([int i]) {}
+//                             ^
+//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/origin_lib.dart:11:18: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void method([int i]) {}
diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect
index ede4192..9ea4887 100644
--- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.outline.expect
@@ -20,11 +20,6 @@
 //   void patchedMethod([int i]) {}
 //                           ^
 //
-// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
-// Try adding either an explicit non-'null' default value or the 'required' modifier.
-//   void _injectedMethod([int i]) {}
-//                             ^
-//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:17:25: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void patchedMethod([int i]) {}
@@ -35,6 +30,11 @@
 // void _injectedMethod([int i]) {}
 //                           ^
 //
+// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
+// Try adding either an explicit non-'null' default value or the 'required' modifier.
+//   void _injectedMethod([int i]) {}
+//                             ^
+//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/origin_lib.dart:11:18: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void method([int i]) {}
diff --git a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.transformed.expect
index 9aa345d..eb2b0e2 100644
--- a/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/platform_optional_parameters/main.dart.weak.transformed.expect
@@ -22,11 +22,6 @@
 //   void patchedMethod([int i]) {}
 //                           ^
 //
-// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
-// Try adding either an explicit non-'null' default value or the 'required' modifier.
-//   void _injectedMethod([int i]) {}
-//                             ^
-//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:17:25: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void patchedMethod([int i]) {}
@@ -37,6 +32,11 @@
 // void _injectedMethod([int i]) {}
 //                           ^
 //
+// pkg/front_end/testcases/nnbd/platform_optional_parameters/patch_lib.dart:13:29: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
+// Try adding either an explicit non-'null' default value or the 'required' modifier.
+//   void _injectedMethod([int i]) {}
+//                             ^
+//
 // pkg/front_end/testcases/nnbd/platform_optional_parameters/origin_lib.dart:11:18: Error: The parameter 'i' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
 // Try adding either an explicit non-'null' default value or the 'required' modifier.
 // void method([int i]) {}
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 56f36f2..7957341 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -117,6 +117,7 @@
 general/type_variable_in_static_context: FormatterCrash
 general/var_as_type_name: FormatterCrash
 inline_class/constructors: FormatterCrash
+inline_class/initializers: FormatterCrash
 inline_class/inline_class_declaration: FormatterCrash
 inline_class/procedures: FormatterCrash
 inline_class/representation: FormatterCrash