diff --git a/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart b/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
index 0a4424c..68f16e3 100644
--- a/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
@@ -8,7 +8,7 @@
     show FormalParameterKind, FormalParameterKindExtension;
 import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show Token;
 import 'package:kernel/ast.dart'
-    show DartType, DynamicType, Expression, VariableDeclaration;
+    show DartType, DynamicType, Expression, NullLiteral, VariableDeclaration;
 
 import '../constant_context.dart' show ConstantContext;
 import '../kernel/body_builder.dart' show BodyBuilder;
@@ -219,23 +219,23 @@
   /// formal parameter on a const constructor or instance method.
   void buildOutlineExpressions(SourceLibraryBuilder library,
       List<DelayedActionPerformer> delayedActionPerformers) {
-    if (initializerToken != null) {
-      // For modular compilation we need to include default values for optional
-      // and named parameters in several cases:
-      // * for const constructors to enable constant evaluation,
-      // * for instance methods because these might be needed to generated
-      //   noSuchMethod forwarders, and
-      // * for generative constructors to support forwarding constructors
-      //   in mixin applications.
-      bool needsDefaultValues = false;
-      if (parent is ConstructorBuilder) {
-        needsDefaultValues = true;
-      } else if (parent is SourceFactoryBuilder) {
-        needsDefaultValues = parent!.isFactory && parent!.isConst;
-      } else {
-        needsDefaultValues = parent!.isClassInstanceMember;
-      }
-      if (needsDefaultValues) {
+    // For modular compilation we need to include default values for optional
+    // and named parameters in several cases:
+    // * for const constructors to enable constant evaluation,
+    // * for instance methods because these might be needed to generated
+    //   noSuchMethod forwarders, and
+    // * for generative constructors to support forwarding constructors
+    //   in mixin applications.
+    bool needsDefaultValues = false;
+    if (parent is ConstructorBuilder) {
+      needsDefaultValues = true;
+    } else if (parent is SourceFactoryBuilder) {
+      needsDefaultValues = parent!.isFactory && parent!.isConst;
+    } else {
+      needsDefaultValues = parent!.isClassInstanceMember;
+    }
+    if (needsDefaultValues) {
+      if (initializerToken != null) {
         final ClassBuilder classBuilder = parent!.parent as ClassBuilder;
         Scope scope = classBuilder.scope;
         BodyBuilder bodyBuilder = library.loader
@@ -255,6 +255,9 @@
             library.library);
         initializerWasInferred = true;
         bodyBuilder.performBacklogComputations(delayedActionPerformers);
+      } else if (kind != FormalParameterKind.requiredPositional) {
+        // As done by BodyBuilder.endFormalParameter.
+        variable!.initializer = new NullLiteral()..parent = variable;
       }
     }
     initializerToken = null;
diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart
index 84d3b6c..a8394f1 100644
--- a/pkg/front_end/test/incremental_suite.dart
+++ b/pkg/front_end/test/incremental_suite.dart
@@ -59,6 +59,13 @@
 import 'package:kernel/class_hierarchy.dart'
     show ClassHierarchy, ClosedWorldClassHierarchy, ForTestingClassInfo;
 
+import 'package:kernel/src/equivalence.dart'
+    show
+        EquivalenceResult,
+        EquivalenceStrategy,
+        EquivalenceVisitor,
+        checkEquivalence;
+
 import 'package:kernel/target/targets.dart'
     show
         LateLowering,
@@ -110,6 +117,7 @@
     const Expectation.fail("UnexpectedInitializationError");
 const Expectation ReachableLibrariesError =
     const Expectation.fail("ReachableLibrariesError");
+const Expectation EquivalenceError = const Expectation.fail("EquivalenceError");
 const Expectation UriToSourceError = const Expectation.fail("UriToSourceError");
 const Expectation MissingPlatformLibraries =
     const Expectation.fail("MissingPlatformLibraries");
@@ -761,6 +769,16 @@
         }
       }
 
+      if (world["compareToPrevious"] == true && newestWholeComponent != null) {
+        EquivalenceResult result = checkEquivalence(
+            newestWholeComponent!, component!,
+            strategy: const Strategy());
+        if (!result.isEquivalent) {
+          return new Result<TestData>(
+              data, EquivalenceError, result.toString());
+        }
+      }
+
       newestWholeComponentData = util.postProcess(component!);
       newestWholeComponent = component;
       String actualSerialized = componentToStringSdkFiltered(component!);
@@ -1135,6 +1153,31 @@
   }
 }
 
+class Strategy extends EquivalenceStrategy {
+  const Strategy();
+
+  @override
+  bool checkComponent_libraries(
+      EquivalenceVisitor visitor, Component node, Component other) {
+    return visitor.checkSets(node.libraries.toSet(), other.libraries.toSet(),
+        visitor.matchNamedNodes, visitor.checkNodes, 'libraries');
+  }
+
+  @override
+  bool checkClass_procedures(
+      EquivalenceVisitor visitor, Class node, Class other) {
+    // Check procedures as a set instead of a list to allow for reordering.
+    return visitor.checkSets(node.procedures.toSet(), other.procedures.toSet(),
+        visitor.matchNamedNodes, visitor.checkNodes, 'procedures');
+  }
+
+  @override
+  bool checkVariableDeclaration_binaryOffsetNoTag(EquivalenceVisitor visitor,
+      VariableDeclaration node, VariableDeclaration other) {
+    return true;
+  }
+}
+
 Result? checkNNBDSettings(Component component) {
   NonNullableByDefaultCompiledMode mode = component.mode;
   if (mode == NonNullableByDefaultCompiledMode.Invalid) return null;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/constructor_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/constructor_tear_off.dart.weak.outline.expect
index 7c7ba9c..822ba26 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/constructor_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/constructor_tear_off.dart.weak.outline.expect
@@ -23,7 +23,7 @@
 }
 class Class4 extends core::Object {
   final field core::int? field;
-  constructor •([core::int? field]) → self::Class4
+  constructor •([core::int? field = null]) → self::Class4
     ;
   static method _#new#tearOff([core::int? field]) → self::Class4
     return new self::Class4::•(field);
@@ -31,7 +31,7 @@
 class Class5 extends core::Object {
   final field core::int field1;
   final field core::int? field2;
-  constructor •(core::int field1, [core::int? field2]) → self::Class5
+  constructor •(core::int field1, [core::int? field2 = null]) → self::Class5
     ;
   static method _#new#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::•(field1, field2);
@@ -40,7 +40,7 @@
   final field core::int field1;
   final field core::int? field2;
   final field core::int field3;
-  constructor •(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
+  constructor •(core::int field1, {core::int? field2 = null, required core::int field3 = null}) → self::Class6
     ;
   static method _#new#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::•(field1, field2: field2, field3: field3);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect
index daea2b6..830da60 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect
@@ -35,7 +35,7 @@
 }
 class Class4 extends core::Object {
   final field core::int? field;
-  constructor _([core::int? field]) → self::Class4
+  constructor _([core::int? field = null]) → self::Class4
     ;
   static method _#_#tearOff([core::int? field]) → self::Class4
     return new self::Class4::_(field);
@@ -47,7 +47,7 @@
 class Class5 extends core::Object {
   final field core::int field1;
   final field core::int? field2;
-  constructor _(core::int field1, [core::int? field2]) → self::Class5
+  constructor _(core::int field1, [core::int? field2 = null]) → self::Class5
     ;
   static method _#_#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::_(field1, field2);
@@ -60,7 +60,7 @@
   final field core::int field1;
   final field core::int? field2;
   final field core::int field3;
-  constructor _(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
+  constructor _(core::int field1, {core::int? field2 = null, required core::int field3 = null}) → self::Class6
     ;
   static method _#_#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::_(field1, field2: field2, field3: field3);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
index 146ad99..d38cf02 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
@@ -43,7 +43,7 @@
 class Class4 extends core::Object {
   final field core::int? field;
   static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
-  constructor _([core::int? field]) → self::Class4
+  constructor _([core::int? field = null]) → self::Class4
     ;
   static method _#_#tearOff([core::int? field]) → self::Class4
     return new self::Class4::_(field);
@@ -56,7 +56,7 @@
   final field core::int field1;
   final field core::int? field2;
   static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
-  constructor _(core::int field1, [core::int? field2]) → self::Class5
+  constructor _(core::int field1, [core::int? field2 = null]) → self::Class5
     ;
   static method _#_#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::_(field1, field2);
@@ -70,7 +70,7 @@
   final field core::int? field2;
   final field core::int field3;
   static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
-  constructor _(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
+  constructor _(core::int field1, {core::int? field2 = null, required core::int field3 = null}) → self::Class6
     ;
   static method _#_#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::_(field1, field2: field2, field3: field3);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
index 451d45b..b5be0c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
@@ -10,7 +10,7 @@
   static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
   constructor •(self::Class::S% a, self::Class::T% b) → self::Class<self::Class::S%, self::Class::T%>
     ;
-  constructor named(self::Class::S% a, [self::Class::T? b, core::int c = 42]) → self::Class<self::Class::S%, self::Class::T%>
+  constructor named(self::Class::S% a, [self::Class::T? b = null, core::int c = 42]) → self::Class<self::Class::S%, self::Class::T%>
     ;
   static method _#new#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#new#tearOff::S% a, self::Class::_#new#tearOff::T% b) → self::Class<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>
     return new self::Class::•<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>(a, b);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect
index 53cbd09..b458764 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect
@@ -74,7 +74,7 @@
   return mai::A::_#redirect#tearOff<self::_#H#redirect#tearOff::Y%>();
 static method /* from org-dartlang-testcase:///main_lib.dart */ _#H#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<self::_#H#new#tearOff::Y%>
   return new mai::A::•<self::_#H#new#tearOff::Y%>();
-static method /* from org-dartlang-testcase:///main_lib.dart */ _#H#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(self::_#H#named#tearOff::Y% a, [core::int? b]) → mai::A<self::_#H#named#tearOff::Y%>
+static method /* from org-dartlang-testcase:///main_lib.dart */ _#H#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(self::_#H#named#tearOff::Y% a, [core::int? b = #C9]) → mai::A<self::_#H#named#tearOff::Y%>
   return new mai::A::named<self::_#H#named#tearOff::Y%>(a, b);
 
 constants  {
@@ -86,4 +86,5 @@
   #C6 = static-tearoff mai::_#F#named#tearOff
   #C7 = static-tearoff mai::_#F#fact#tearOff
   #C8 = static-tearoff mai::_#F#redirect#tearOff
+  #C9 = null
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
index fdfd1c3..829a8ce 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
@@ -37,7 +37,7 @@
   static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
   constructor •() → mai::A<mai::A::T%>
     ;
-  constructor named(mai::A::T% a, [core::int? b]) → mai::A<mai::A::T%>
+  constructor named(mai::A::T% a, [core::int? b = #C2]) → mai::A<mai::A::T%>
     ;
   static method _#new#tearOff<T extends core::Object? = dynamic>() → mai::A<mai::A::_#new#tearOff::T%>
     return new mai::A::•<mai::A::_#new#tearOff::T%>();
@@ -79,4 +79,5 @@
 
 constants  {
   #C1 = constructor-tearoff mai::A::redirect
+  #C2 = null
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
index 26c6cb7..6a47350 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
@@ -37,7 +37,7 @@
   static final field dynamic _redirecting# = <dynamic>[typ::A::redirect]/*isLegacy*/;
   constructor •() → typ::A<typ::A::T%>
     ;
-  constructor named(typ::A::T% a, [core::int? b]) → typ::A<typ::A::T%>
+  constructor named(typ::A::T% a, [core::int? b = null]) → typ::A<typ::A::T%>
     ;
   static method _#new#tearOff<T extends core::Object? = dynamic>() → typ::A<typ::A::_#new#tearOff::T%>
     return new typ::A::•<typ::A::_#new#tearOff::T%>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
index bae6873..23dbb32 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
@@ -29,7 +29,7 @@
 class Class4 extends core::Object {
   final field core::int? field;
   static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
-  constructor _([core::int? field]) → self::Class4
+  constructor _([core::int? field = null]) → self::Class4
     ;
   static factory •([core::int? field]) → self::Class4
     return new self::Class4::_(field);
@@ -38,7 +38,7 @@
   final field core::int field1;
   final field core::int? field2;
   static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
-  constructor _(core::int field1, [core::int? field2]) → self::Class5
+  constructor _(core::int field1, [core::int? field2 = null]) → self::Class5
     ;
   static factory •(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::_(field1, field2);
@@ -48,7 +48,7 @@
   final field core::int? field2;
   final field core::int field3;
   static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
-  constructor _(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
+  constructor _(core::int field1, {core::int? field2 = null, required core::int field3 = null}) → self::Class6
     ;
   static factory •(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::_(field1, field2: field2, field3: field3);
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
index 927a4e3..839811b 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
@@ -8,7 +8,7 @@
   final field core::int bar;
   static const field self::E0 one = const self::E0::•(0, "one", 1, bar: 1);
   static const field self::E0 two = const self::E0::•(1, "two", 2, bar: 2);
-  const constructor •(core::int index, core::String name, core::int foo, {required core::int bar}) → self::E0
+  const constructor •(core::int index, core::String name, core::int foo, {required core::int bar = null}) → self::E0
     : self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
     ;
   method toString() → core::String
@@ -19,7 +19,7 @@
   final field self::E1::X% foo;
   static const field self::E1<core::String> one = const self::E1::•<core::String>(0, "one", foo: "1");
   static const field self::E1<core::int> two = const self::E1::•<core::int>(1, "two", foo: 2);
-  const constructor •(core::int index, core::String name, {required self::E1::X% foo}) → self::E1<self::E1::X%>
+  const constructor •(core::int index, core::String name, {required self::E1::X% foo = null}) → self::E1<self::E1::X%>
     : self::E1::foo = foo, super core::_Enum::•(index, name)
     ;
   method toString() → core::String
@@ -33,7 +33,7 @@
   static const field self::E2<core::int, core::String, core::double> one = const self::E2::•<core::int, core::String, core::double>(0, "one", 1, bar: "1", baz: 3.14);
   static const field self::E2<core::String, core::int, core::double> two = const self::E2::•<core::String, core::int, core::double>(1, "two", "2", baz: 3.14, bar: 2);
   static const field self::E2<core::double, core::bool, dynamic> three = const self::E2::•<core::double, core::bool, dynamic>(2, "three", 3.0, bar: false);
-  const constructor •(core::int index, core::String name, self::E2::X% foo, {required self::E2::Y% bar, has-declared-initializer self::E2::Z? baz = null}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
+  const constructor •(core::int index, core::String name, self::E2::X% foo, {required self::E2::Y% bar = null, has-declared-initializer self::E2::Z? baz = null}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
     : self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
     ;
   method toString() → core::String
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.weak.outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.weak.outline.expect
index 670f664..9119e8f 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete.dart.weak.outline.expect
@@ -44,12 +44,12 @@
 abstract class I extends core::Object {
   synthetic constructor •() → self::I
     ;
-  abstract method foo([dynamic a]) → void;
+  abstract method foo([dynamic a = null]) → void;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B
     ;
-  abstract method foo([dynamic a]) → void;
+  abstract method foo([dynamic a = null]) → void;
 }
 class C extends self::B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.weak.outline.expect b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.weak.outline.expect
index 2ca5306..8bd0275 100644
--- a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.weak.outline.expect
@@ -16,9 +16,9 @@
     ;
   static factory bazFactory(dynamic factoryFormal) → self::Baz
     ;
-  method fisk(dynamic formal1, dynamic formal2, dynamic formal3, dynamic formal4, [dynamic optional]) → dynamic
+  method fisk(dynamic formal1, dynamic formal2, dynamic formal3, dynamic formal4, [dynamic optional = null]) → dynamic
     ;
-  method hest({dynamic named}) → dynamic
+  method hest({dynamic named = null}) → dynamic
     ;
 }
 static const field core::int foo = 42;
diff --git a/pkg/front_end/testcases/general/async_nested.dart.weak.outline.expect b/pkg/front_end/testcases/general/async_nested.dart.weak.outline.expect
index 60f8e3e..39e35eb 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.weak.outline.expect
@@ -7,7 +7,7 @@
 class Node extends core::Object {
   final field core::List<self::Node>? nested;
   final field core::String name;
-  constructor •(core::String name, [core::List<self::Node>? nested]) → self::Node
+  constructor •(core::String name, [core::List<self::Node>? nested = null]) → self::Node
     ;
   method toString() → core::String
     ;
diff --git a/pkg/front_end/testcases/general/bug32426.dart.weak.outline.expect b/pkg/front_end/testcases/general/bug32426.dart.weak.outline.expect
index 4da5082..1f233dd 100644
--- a/pkg/front_end/testcases/general/bug32426.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/bug32426.dart.weak.outline.expect
@@ -20,7 +20,7 @@
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
-  method call([core::int* x]) → void
+  method call([core::int* x = null]) → void
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
index d73794e..c83eee4 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
@@ -125,7 +125,7 @@
   @core::override
   method removeWhere((core::String, core::String) → core::bool predicate) → void
     ;
-  method update(covariant-by-class core::String key, covariant-by-class (core::String) → core::String update, {covariant-by-class () →? core::String ifAbsent}) → core::String
+  method update(covariant-by-class core::String key, covariant-by-class (core::String) → core::String update, {covariant-by-class () →? core::String ifAbsent = null}) → core::String
     ;
   method map<K2 extends core::Object? = dynamic, V2 extends core::Object? = dynamic>((core::String, core::String) → core::MapEntry<self::CustomMap::map::K2%, self::CustomMap::map::V2%> f) → core::Map<self::CustomMap::map::K2%, self::CustomMap::map::V2%>
     ;
diff --git a/pkg/front_end/testcases/general/forwarding_semi_stub.dart.weak.outline.expect b/pkg/front_end/testcases/general/forwarding_semi_stub.dart.weak.outline.expect
index 413db05..d738bdb 100644
--- a/pkg/front_end/testcases/general/forwarding_semi_stub.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/forwarding_semi_stub.dart.weak.outline.expect
@@ -7,27 +7,27 @@
     ;
   method method1(core::int a) → void
     ;
-  method method2({core::int? a}) → void
+  method method2({core::int? a = null}) → void
     ;
   method method3(core::int a) → void
     ;
   method method4(core::num a) → void
     ;
-  method method5({core::int? a}) → void
+  method method5({core::int? a = null}) → void
     ;
-  method method6({core::num? a}) → void
+  method method6({core::num? a = null}) → void
     ;
   method method7(covariant-by-class core::List<self::Super::T%> a) → void
     ;
-  method method8({covariant-by-class core::List<self::Super::T%>? a}) → void
+  method method8({covariant-by-class core::List<self::Super::T%>? a = null}) → void
     ;
   method method9(covariant-by-class core::List<self::Super::T%> a) → void
     ;
   method method10(covariant-by-class core::Iterable<self::Super::T%> a) → void
     ;
-  method method11({covariant-by-class core::List<self::Super::T%>? a}) → void
+  method method11({covariant-by-class core::List<self::Super::T%>? a = null}) → void
     ;
-  method method12({covariant-by-class core::Iterable<self::Super::T%>? a}) → void
+  method method12({covariant-by-class core::Iterable<self::Super::T%>? a = null}) → void
     ;
   set setter1(core::int a) → void
     ;
@@ -43,11 +43,11 @@
     ;
   method method1(covariant-by-declaration core::num a) → void
     ;
-  method method2({covariant-by-declaration core::num? a}) → void
+  method method2({covariant-by-declaration core::num? a = null}) → void
     ;
   method method7(covariant-by-declaration covariant-by-class core::Iterable<self::Interface::T%> a) → void
     ;
-  method method8({covariant-by-declaration covariant-by-class core::Iterable<self::Interface::T%>? a}) → void
+  method method8({covariant-by-declaration covariant-by-class core::Iterable<self::Interface::T%>? a = null}) → void
     ;
   set setter1(covariant-by-declaration core::num a) → void
     ;
@@ -61,17 +61,17 @@
     return super.{self::Super::method3}(a);
   forwarding-stub forwarding-semi-stub method /* signature-type: (core::int) → void */ method4(covariant-by-declaration core::num a) → void
     return super.{self::Super::method4}(a);
-  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::num?}) → void */ method5({covariant-by-declaration core::int? a}) → void
+  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::num?}) → void */ method5({covariant-by-declaration core::int? a = null}) → void
     return super.{self::Super::method5}(a: a);
-  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::int?}) → void */ method6({covariant-by-declaration core::num? a}) → void
+  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::int?}) → void */ method6({covariant-by-declaration core::num? a = null}) → void
     return super.{self::Super::method6}(a: a);
   forwarding-stub forwarding-semi-stub method /* signature-type: (core::Iterable<self::Class::T%>) → void */ method9(covariant-by-declaration covariant-by-class core::List<self::Class::T%> a) → void
     return super.{self::Super::method9}(a);
   forwarding-stub forwarding-semi-stub method /* signature-type: (core::List<self::Class::T%>) → void */ method10(covariant-by-declaration covariant-by-class core::Iterable<self::Class::T%> a) → void
     return super.{self::Super::method10}(a);
-  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::Iterable<self::Class::T%>?}) → void */ method11({covariant-by-declaration covariant-by-class core::List<self::Class::T%>? a}) → void
+  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::Iterable<self::Class::T%>?}) → void */ method11({covariant-by-declaration covariant-by-class core::List<self::Class::T%>? a = null}) → void
     return super.{self::Super::method11}(a: a);
-  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::List<self::Class::T%>?}) → void */ method12({covariant-by-declaration covariant-by-class core::Iterable<self::Class::T%>? a}) → void
+  forwarding-stub forwarding-semi-stub method /* signature-type: ({a: core::List<self::Class::T%>?}) → void */ method12({covariant-by-declaration covariant-by-class core::Iterable<self::Class::T%>? a = null}) → void
     return super.{self::Super::method12}(a: a);
   forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter2(covariant-by-declaration core::num a) → void
     return super.{self::Super::setter2} = a;
@@ -95,27 +95,27 @@
     ;
   method method1(covariant-by-declaration core::num a) → void
     ;
-  method method2({covariant-by-declaration core::num? a}) → void
+  method method2({covariant-by-declaration core::num? a = null}) → void
     ;
   method method3(covariant-by-declaration core::num a) → void
     ;
   method method4(covariant-by-declaration core::num a) → void
     ;
-  method method5({covariant-by-declaration core::num? a}) → void
+  method method5({covariant-by-declaration core::num? a = null}) → void
     ;
-  method method6({covariant-by-declaration core::num? a}) → void
+  method method6({covariant-by-declaration core::num? a = null}) → void
     ;
   method method7(covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%> a) → void
     ;
-  method method8({covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%>? a}) → void
+  method method8({covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%>? a = null}) → void
     ;
   method method9(covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%> a) → void
     ;
   method method10(covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%> a) → void
     ;
-  method method11({covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%>? a}) → void
+  method method11({covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%>? a = null}) → void
     ;
-  method method12({covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%>? a}) → void
+  method method12({covariant-by-declaration covariant-by-class core::Iterable<self::Subclass::T%>? a = null}) → void
     ;
   set setter1(covariant-by-declaration core::num a) → void
     ;
diff --git a/pkg/front_end/testcases/general/implement_semi_stub.dart.weak.outline.expect b/pkg/front_end/testcases/general/implement_semi_stub.dart.weak.outline.expect
index a5176a6..4e28f66 100644
--- a/pkg/front_end/testcases/general/implement_semi_stub.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/implement_semi_stub.dart.weak.outline.expect
@@ -140,9 +140,9 @@
     ;
   method method3(core::num a, core::int b) → void
     ;
-  method method4({required core::num a}) → void
+  method method4({required core::num a = null}) → void
     ;
-  method method5({required core::int b}) → void
+  method method5({required core::int b = null}) → void
     ;
   method method7(covariant-by-class core::Iterable<self::Super::T%> a) → void
     ;
@@ -150,9 +150,9 @@
     ;
   method method9(covariant-by-class core::Iterable<self::Super::T%> a, covariant-by-class core::List<self::Super::T%> b) → void
     ;
-  method method10({required covariant-by-class core::Iterable<self::Super::T%> a}) → void
+  method method10({required covariant-by-class core::Iterable<self::Super::T%> a = null}) → void
     ;
-  method method11({required covariant-by-class core::List<self::Super::T%> b}) → void
+  method method11({required covariant-by-class core::List<self::Super::T%> b = null}) → void
     ;
   set setter1(core::num a) → void
     ;
@@ -166,13 +166,13 @@
     ;
   method method3(core::num a, covariant-by-declaration core::num b) → void
     ;
-  method method5({required core::int b}) → void
+  method method5({required core::int b = null}) → void
     ;
   method method8(covariant-by-declaration covariant-by-class core::Iterable<self::Interface::T%> b) → void
     ;
   method method9(covariant-by-class core::Iterable<self::Interface::T%> a, covariant-by-declaration covariant-by-class core::Iterable<self::Interface::T%> b) → void
     ;
-  method method11({required covariant-by-class core::List<self::Interface::T%> b}) → void
+  method method11({required covariant-by-class core::List<self::Interface::T%> b = null}) → void
     ;
 }
 class Class<T extends core::Object? = dynamic> extends self::Super<self::Class::T%> implements self::Interface<self::Class::T%> {
@@ -204,9 +204,9 @@
     ;
   method method3(covariant-by-declaration core::double a, covariant-by-declaration core::double b) → void
     ;
-  method method4({required core::double a}) → void
+  method method4({required core::double a = null}) → void
     ;
-  method method5({required core::double b}) → void
+  method method5({required core::double b = null}) → void
     ;
   method method7(covariant-by-declaration covariant-by-class core::Set<self::Class1::T%> a) → void
     ;
@@ -214,9 +214,9 @@
     ;
   method method9(covariant-by-declaration covariant-by-class core::Set<self::Class1::T%> a, covariant-by-declaration covariant-by-class core::Set<self::Class1::T%> b) → void
     ;
-  method method10({required covariant-by-class core::Set<self::Class1::T%> a}) → void
+  method method10({required covariant-by-class core::Set<self::Class1::T%> a = null}) → void
     ;
-  method method11({required covariant-by-class core::Set<self::Class1::T%> b}) → void
+  method method11({required covariant-by-class core::Set<self::Class1::T%> b = null}) → void
     ;
   set setter1(covariant-by-declaration core::double a) → void
     ;
diff --git a/pkg/front_end/testcases/general/implicit_super_call.dart.weak.outline.expect b/pkg/front_end/testcases/general/implicit_super_call.dart.weak.outline.expect
index 3f03f7a..9ec5019 100644
--- a/pkg/front_end/testcases/general/implicit_super_call.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/implicit_super_call.dart.weak.outline.expect
@@ -17,7 +17,7 @@
 class Super2 extends core::Object {
   synthetic constructor •() → self::Super2
     ;
-  method call(core::int a, [core::int? b]) → core::int
+  method call(core::int a, [core::int? b = null]) → core::int
     ;
 }
 class Class2 extends self::Super2 {
@@ -29,7 +29,7 @@
 class Super3 extends core::Object {
   synthetic constructor •() → self::Super3
     ;
-  method call(core::int a, {core::int? b, core::int? c}) → core::int
+  method call(core::int a, {core::int? b = null, core::int? c = null}) → core::int
     ;
 }
 class Class3 extends self::Super3 {
diff --git a/pkg/front_end/testcases/general/invalid_operator.dart.weak.outline.expect b/pkg/front_end/testcases/general/invalid_operator.dart.weak.outline.expect
index 839e7f4..92c304b 100644
--- a/pkg/front_end/testcases/general/invalid_operator.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_operator.dart.weak.outline.expect
@@ -686,167 +686,167 @@
     ;
   operator ==([core::Object a = 0]) → core::bool
     ;
-  operator <([dynamic a]) → dynamic
+  operator <([dynamic a = null]) → dynamic
     ;
-  operator >([dynamic a]) → dynamic
+  operator >([dynamic a = null]) → dynamic
     ;
-  operator <=([dynamic a]) → dynamic
+  operator <=([dynamic a = null]) → dynamic
     ;
-  operator >=([dynamic a]) → dynamic
+  operator >=([dynamic a = null]) → dynamic
     ;
-  operator -([dynamic a]) → dynamic
+  operator -([dynamic a = null]) → dynamic
     ;
-  operator +([dynamic a]) → dynamic
+  operator +([dynamic a = null]) → dynamic
     ;
-  operator /([dynamic a]) → dynamic
+  operator /([dynamic a = null]) → dynamic
     ;
-  operator ~/([dynamic a]) → dynamic
+  operator ~/([dynamic a = null]) → dynamic
     ;
-  operator *([dynamic a]) → dynamic
+  operator *([dynamic a = null]) → dynamic
     ;
-  operator %([dynamic a]) → dynamic
+  operator %([dynamic a = null]) → dynamic
     ;
-  operator |([dynamic a]) → dynamic
+  operator |([dynamic a = null]) → dynamic
     ;
-  operator ^([dynamic a]) → dynamic
+  operator ^([dynamic a = null]) → dynamic
     ;
-  operator &([dynamic a]) → dynamic
+  operator &([dynamic a = null]) → dynamic
     ;
-  operator <<([dynamic a]) → dynamic
+  operator <<([dynamic a = null]) → dynamic
     ;
-  operator >>([dynamic a]) → dynamic
+  operator >>([dynamic a = null]) → dynamic
     ;
-  operator []=([dynamic a, dynamic b]) → void
+  operator []=([dynamic a = null, dynamic b = null]) → void
     ;
-  operator []([dynamic a]) → dynamic
+  operator []([dynamic a = null]) → dynamic
     ;
-  operator ~([dynamic a]) → dynamic
+  operator ~([dynamic a = null]) → dynamic
     ;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4
     ;
-  operator ==({dynamic a}) → core::bool
+  operator ==({dynamic a = null}) → core::bool
     ;
-  operator <({dynamic a}) → dynamic
+  operator <({dynamic a = null}) → dynamic
     ;
-  operator >({dynamic a}) → dynamic
+  operator >({dynamic a = null}) → dynamic
     ;
-  operator <=({dynamic a}) → dynamic
+  operator <=({dynamic a = null}) → dynamic
     ;
-  operator >=({dynamic a}) → dynamic
+  operator >=({dynamic a = null}) → dynamic
     ;
-  operator -({dynamic a}) → dynamic
+  operator -({dynamic a = null}) → dynamic
     ;
-  operator +({dynamic a}) → dynamic
+  operator +({dynamic a = null}) → dynamic
     ;
-  operator /({dynamic a}) → dynamic
+  operator /({dynamic a = null}) → dynamic
     ;
-  operator ~/({dynamic a}) → dynamic
+  operator ~/({dynamic a = null}) → dynamic
     ;
-  operator *({dynamic a}) → dynamic
+  operator *({dynamic a = null}) → dynamic
     ;
-  operator %({dynamic a}) → dynamic
+  operator %({dynamic a = null}) → dynamic
     ;
-  operator |({dynamic a}) → dynamic
+  operator |({dynamic a = null}) → dynamic
     ;
-  operator ^({dynamic a}) → dynamic
+  operator ^({dynamic a = null}) → dynamic
     ;
-  operator &({dynamic a}) → dynamic
+  operator &({dynamic a = null}) → dynamic
     ;
-  operator <<({dynamic a}) → dynamic
+  operator <<({dynamic a = null}) → dynamic
     ;
-  operator >>({dynamic a}) → dynamic
+  operator >>({dynamic a = null}) → dynamic
     ;
-  operator []=({dynamic a, dynamic b}) → void
+  operator []=({dynamic a = null, dynamic b = null}) → void
     ;
-  operator []({dynamic a}) → dynamic
+  operator []({dynamic a = null}) → dynamic
     ;
-  operator ~({dynamic a}) → dynamic
+  operator ~({dynamic a = null}) → dynamic
     ;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5
     ;
-  operator ==(core::Object a, [dynamic b]) → core::bool
+  operator ==(core::Object a, [dynamic b = null]) → core::bool
     ;
-  operator <(dynamic a, [dynamic b]) → dynamic
+  operator <(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator >(dynamic a, [dynamic b]) → dynamic
+  operator >(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator <=(dynamic a, [dynamic b]) → dynamic
+  operator <=(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator >=(dynamic a, [dynamic b]) → dynamic
+  operator >=(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator -(dynamic a, [dynamic b]) → dynamic
+  operator -(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator +(dynamic a, [dynamic b]) → dynamic
+  operator +(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator /(dynamic a, [dynamic b]) → dynamic
+  operator /(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator ~/(dynamic a, [dynamic b]) → dynamic
+  operator ~/(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator *(dynamic a, [dynamic b]) → dynamic
+  operator *(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator %(dynamic a, [dynamic b]) → dynamic
+  operator %(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator |(dynamic a, [dynamic b]) → dynamic
+  operator |(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator ^(dynamic a, [dynamic b]) → dynamic
+  operator ^(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator &(dynamic a, [dynamic b]) → dynamic
+  operator &(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator <<(dynamic a, [dynamic b]) → dynamic
+  operator <<(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator >>(dynamic a, [dynamic b]) → dynamic
+  operator >>(dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator []=(dynamic a, dynamic b, [dynamic c]) → void
+  operator []=(dynamic a, dynamic b, [dynamic c = null]) → void
     ;
-  operator [](dynamic a, [dynamic b]) → dynamic
+  operator [](dynamic a, [dynamic b = null]) → dynamic
     ;
-  operator ~(dynamic a, [dynamic b]) → dynamic
+  operator ~(dynamic a, [dynamic b = null]) → dynamic
     ;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6
     ;
-  operator ==(core::Object a, {dynamic b}) → core::bool
+  operator ==(core::Object a, {dynamic b = null}) → core::bool
     ;
-  operator <(dynamic a, {dynamic b}) → dynamic
+  operator <(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator >(dynamic a, {dynamic b}) → dynamic
+  operator >(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator <=(dynamic a, {dynamic b}) → dynamic
+  operator <=(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator >=(dynamic a, {dynamic b}) → dynamic
+  operator >=(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator -(dynamic a, {dynamic b}) → dynamic
+  operator -(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator +(dynamic a, {dynamic b}) → dynamic
+  operator +(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator /(dynamic a, {dynamic b}) → dynamic
+  operator /(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator ~/(dynamic a, {dynamic b}) → dynamic
+  operator ~/(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator *(dynamic a, {dynamic b}) → dynamic
+  operator *(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator %(dynamic a, {dynamic b}) → dynamic
+  operator %(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator |(dynamic a, {dynamic b}) → dynamic
+  operator |(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator ^(dynamic a, {dynamic b}) → dynamic
+  operator ^(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator &(dynamic a, {dynamic b}) → dynamic
+  operator &(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator <<(dynamic a, {dynamic b}) → dynamic
+  operator <<(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator >>(dynamic a, {dynamic b}) → dynamic
+  operator >>(dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator []=(dynamic a, dynamic b, {dynamic c}) → void
+  operator []=(dynamic a, dynamic b, {dynamic c = null}) → void
     ;
-  operator [](dynamic a, {dynamic b}) → dynamic
+  operator [](dynamic a, {dynamic b = null}) → dynamic
     ;
-  operator ~(dynamic a, {dynamic b}) → dynamic
+  operator ~(dynamic a, {dynamic b = null}) → dynamic
     ;
 }
 class Operators7 extends core::Object {
diff --git a/pkg/front_end/testcases/general/issue42615.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue42615.dart.weak.outline.expect
index 1cd32a4..d0547dd 100644
--- a/pkg/front_end/testcases/general/issue42615.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue42615.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 import "dart:async";
 
 class Class<T extends core::Object* = dynamic> extends core::Object {
-  constructor •({() →* FutureOr<core::List<self::Class::T*>*>* a}) → self::Class<self::Class::T*>*
+  constructor •({() →* FutureOr<core::List<self::Class::T*>*>* a = null}) → self::Class<self::Class::T*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/issue46389.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46389.dart.weak.outline.expect
index 8ff791a..bb955ac 100644
--- a/pkg/front_end/testcases/general/issue46389.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue46389.dart.weak.outline.expect
@@ -8,7 +8,7 @@
     ;
   method foo(core::int n) → core::num
     ;
-  method bar({required core::int x}) → core::num
+  method bar({required core::int x = null}) → core::num
     ;
   set baz(core::int x) → void
     ;
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::B<self::B::X%>
     ;
   abstract method foo(covariant-by-class self::B::X% x) → self::B::X%;
-  abstract method bar({required covariant-by-class self::B::X% x}) → self::B::X%;
+  abstract method bar({required covariant-by-class self::B::X% x = null}) → self::B::X%;
   abstract set baz(covariant-by-class self::B::X% x) → void;
   abstract set boz(covariant-by-class self::B::X% x) → void;
 }
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
index bad6433..f84d0ad 100644
--- a/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
@@ -10,7 +10,7 @@
 }
 class Settings extends core::Object {
   static final field dynamic _redirecting# = <dynamic>[self::Settings::•]/*isLegacy*/;
-  static factory •({self::Sidebar sidebar}) → self::Settings
+  static factory •({self::Sidebar sidebar = null}) → self::Settings
     return self::_SSettings::•(sidebar: sidebar);
 }
 class Sidebar extends core::Object {
@@ -20,7 +20,7 @@
 }
 abstract class _SSettings extends core::Object implements self::Settings {
   static final field dynamic _redirecting# = <dynamic>[self::_SSettings::•]/*isLegacy*/;
-  static factory •({self::Sidebar sidebar}) → self::_SSettings
+  static factory •({self::Sidebar sidebar = null}) → self::_SSettings
     return new self::_$_SSettings::•(sidebar: sidebar);
 }
 class _$_SSettings extends core::Object implements self::_SSettings /*hasConstConstructor*/  {
diff --git a/pkg/front_end/testcases/general/issue47994a.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47994a.dart.weak.outline.expect
index 0347e2e..4e6414d 100644
--- a/pkg/front_end/testcases/general/issue47994a.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue47994a.dart.weak.outline.expect
@@ -8,7 +8,7 @@
     ;
 }
 class BuildAssert extends core::Object /*hasConstConstructor*/  {
-  const constructor •(core::bool condition, [core::Object? message]) → self::BuildAssert
+  const constructor •(core::bool condition, [core::Object? message = null]) → self::BuildAssert
     : assert(condition, message), super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue48242.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue48242.dart.weak.outline.expect
index fe420e8..e400a72 100644
--- a/pkg/front_end/testcases/general/issue48242.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue48242.dart.weak.outline.expect
@@ -8,7 +8,7 @@
 }
 abstract class TestFailure<A extends core::Object? = dynamic> extends self::Base /*isMixinDeclaration*/  {
   @core::override
-  abstract method methodWithDefaultImpl({covariant-by-class self::TestFailure::A? nameParam}) → core::Object?;
+  abstract method methodWithDefaultImpl({covariant-by-class self::TestFailure::A? nameParam = null}) → core::Object?;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect
index a0a1070..b5bf4ad 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect
@@ -128,7 +128,7 @@
 class S extends core::Object {
   synthetic constructor •() → self::S
     ;
-  method foo([dynamic x]) → dynamic
+  method foo([dynamic x = null]) → dynamic
     ;
 }
 class M extends core::Object {
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect
index 40e7e6a..27daeeb 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect
@@ -44,9 +44,9 @@
     ;
   method positional(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void
     ;
-  method optional([covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d]) → void
+  method optional([covariant-by-declaration core::int? a = null, core::int? b = null, covariant-by-declaration core::int? c = null, core::int? d = null]) → void
     ;
-  method named({covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d}) → void
+  method named({covariant-by-declaration core::int? a = null, core::int? b = null, covariant-by-declaration core::int? c = null, core::int? d = null}) → void
     ;
 }
 class Inherited extends self::Direct {
diff --git a/pkg/front_end/testcases/general/named_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/general/named_parameters.dart.weak.outline.expect
index a660886..9f54111 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/named_parameters.dart.weak.outline.expect
@@ -5,9 +5,9 @@
 class Superclass extends core::Object {
   synthetic constructor •() → self::Superclass
     ;
-  method foo({dynamic alpha, dynamic beta}) → dynamic
+  method foo({dynamic alpha = null, dynamic beta = null}) → dynamic
     ;
-  method bar({dynamic beta, dynamic alpha}) → dynamic
+  method bar({dynamic beta = null, dynamic alpha = null}) → dynamic
     ;
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic
     ;
@@ -15,9 +15,9 @@
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass
     ;
-  method foo({dynamic beta, dynamic alpha}) → dynamic
+  method foo({dynamic beta = null, dynamic alpha = null}) → dynamic
     ;
-  method bar({dynamic alpha, dynamic beta}) → dynamic
+  method bar({dynamic alpha = null, dynamic beta = null}) → dynamic
     ;
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic
     ;
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
index 6ab71bf..6a88f7b 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
@@ -62,17 +62,17 @@
   synthetic constructor •() → nsm::A<nsm::A::T%>
     ;
   abstract method _method1(core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d) → void;
-  abstract method _method2({core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d}) → void;
+  abstract method _method2({core::int a = null, core::int b = null, covariant-by-class nsm::A::T% c = null, covariant-by-class nsm::A::T% d = null}) → void;
   abstract method _method3(core::int a, covariant-by-class nsm::A::T% b) → void;
-  abstract method _method4({core::int a, covariant-by-class nsm::A::T% b}) → void;
+  abstract method _method4({core::int a = null, covariant-by-class nsm::A::T% b = null}) → void;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → nsm::B
     ;
   abstract method _method1(core::int x, covariant-by-declaration core::int y, core::int z, covariant-by-declaration core::int w) → void;
-  abstract method _method2({core::int a, covariant-by-declaration core::int b, core::int c, covariant-by-declaration core::int d}) → void;
+  abstract method _method2({core::int a = null, covariant-by-declaration core::int b = null, core::int c = null, covariant-by-declaration core::int d = null}) → void;
   abstract method _method3(covariant-by-declaration core::int x, core::int y) → void;
-  abstract method _method4({covariant-by-declaration core::int a, core::int b}) → void;
+  abstract method _method4({covariant-by-declaration core::int a = null, core::int b = null}) → void;
 }
 abstract class C1 extends core::Object implements nsm::A<core::int>, nsm::B {
   synthetic constructor •() → nsm::C1
diff --git a/pkg/front_end/testcases/general/optional.dart.weak.outline.expect b/pkg/front_end/testcases/general/optional.dart.weak.outline.expect
index 0d055ce..39abe43 100644
--- a/pkg/front_end/testcases/general/optional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/optional.dart.weak.outline.expect
@@ -5,36 +5,36 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo
     ;
-  method method(dynamic x, [dynamic y, dynamic z]) → dynamic
+  method method(dynamic x, [dynamic y = null, dynamic z = null]) → dynamic
     ;
 }
 abstract class External extends core::Object {
   synthetic constructor •() → self::External
     ;
-  abstract method externalMethod(core::int x, [core::int y, core::int z]) → core::String;
+  abstract method externalMethod(core::int x, [core::int y = null, core::int z = null]) → core::String;
   abstract method listen(self::Listener listener) → void;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener
     ;
-  abstract method event(core::String input, [core::int? x, core::int? y]) → void;
+  abstract method event(core::String input, [core::int? x = null, core::int? y = null]) → void;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener
     ;
-  method event(core::String input, [core::int? x, core::int? y]) → void
+  method event(core::String input, [core::int? x = null, core::int? y = null]) → void
     ;
 }
 class ExtendedListener extends self::Listener {
   synthetic constructor •() → self::ExtendedListener
     ;
-  method event(core::String input, [core::int? x, core::int? y, dynamic z]) → void
+  method event(core::String input, [core::int? x = null, core::int? y = null, dynamic z = null]) → void
     ;
 }
 class InvalidListener extends core::Object {
   synthetic constructor •() → self::InvalidListener
     ;
-  method event(dynamic input, [dynamic x]) → void
+  method event(dynamic input, [dynamic x = null]) → void
     ;
 }
 external static method createExternal() → self::External;
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect
index 50f0b43..85c382b 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect
@@ -58,9 +58,9 @@
     ;
   method f1(self::A x) → void
     ;
-  method f2([self::A? x]) → void
+  method f2([self::A? x = null]) → void
     ;
-  method f3({self::A? x}) → void
+  method f3({self::A? x = null}) → void
     ;
   method f4() → self::A?
     ;
@@ -70,9 +70,9 @@
     ;
   method f1(core::Object x) → void
     ;
-  method f2([core::Object? x]) → void
+  method f2([core::Object? x = null]) → void
     ;
-  method f3({core::Object? x}) → void
+  method f3({core::Object? x = null}) → void
     ;
   method f4() → self::B?
     ;
@@ -82,9 +82,9 @@
     ;
   method f1(self::B x) → void
     ;
-  method f2([self::B? x]) → void
+  method f2([self::B? x = null]) → void
     ;
-  method f3({self::B? x}) → void
+  method f3({self::B? x = null}) → void
     ;
   method f4() → core::Object?
     ;
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect
index 17f1de7..beb4abd 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect
@@ -5,37 +5,37 @@
 class A extends core::Object {
   synthetic constructor •() → self::A
     ;
-  method foo({core::bool? c = true, core::bool? a}) → dynamic
+  method foo({core::bool? c = true, core::bool? a = null}) → dynamic
     ;
 }
 class B extends self::A {
   synthetic constructor •() → self::B
     ;
-  method foo({core::bool? c = true, core::bool? a}) → dynamic
+  method foo({core::bool? c = true, core::bool? a = null}) → dynamic
     ;
 }
 class C extends self::B {
   synthetic constructor •() → self::C
     ;
-  method foo({core::bool? c = true, core::bool? a}) → dynamic
+  method foo({core::bool? c = true, core::bool? a = null}) → dynamic
     ;
 }
 class A1 extends core::Object {
   synthetic constructor •() → self::A1
     ;
-  method foo({core::bool? a = true, core::bool? c}) → dynamic
+  method foo({core::bool? a = true, core::bool? c = null}) → dynamic
     ;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1
     ;
-  method foo({core::bool? a = true, core::bool? c}) → dynamic
+  method foo({core::bool? a = true, core::bool? c = null}) → dynamic
     ;
 }
 class C1 extends self::B1 {
   synthetic constructor •() → self::C1
     ;
-  method foo({core::bool? a = true, core::bool? c}) → dynamic
+  method foo({core::bool? a = true, core::bool? c = null}) → dynamic
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect
index 70bc2cc..a663626 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect
@@ -16,7 +16,7 @@
   final field self::Class2 _c2;
   constructor •(self::Class2 _c2) → self::Class2
     ;
-  method method({dynamic a}) → dynamic
+  method method({dynamic a = null}) → dynamic
     ;
   get call() → core::int
     ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
index ac02ea3..d242338 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
@@ -31,10 +31,10 @@
   constructor •() → self::Class<self::Class::T%>
     ;
   @self::Const::internal()
-  method method1<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, [dynamic o2]) → dynamic
+  method method1<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = null]) → dynamic
     ;
   @self::Const::internal()
-  method method2<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, {dynamic o2}) → dynamic
+  method method2<@self::Const::internal() T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = null}) → dynamic
     ;
 }
 @self::Const::internal()
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect
index 8972be7..95eee3f 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
     ;
-  constructor _internal({required self::Foo::T x}) → self::Foo<self::Foo::T>
+  constructor _internal({required self::Foo::T x = null}) → self::Foo<self::Foo::T>
     ;
 }
 static method main() → void
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.weak.outline.expect
index 9c7ccb9..3aac044 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.weak.outline.expect
@@ -22,7 +22,7 @@
     ;
   constructor fromT(self::Foo::T* _init) → self::Foo<self::Foo::T*>*
     ;
-  constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
+  constructor _internal({self::Foo::T* x = null}) → self::Foo<self::Foo::T*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect
index 5e288fa..d0557a9 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect
@@ -6,7 +6,7 @@
   covariant-by-class field self::Foo::T% x;
   constructor from(core::String _init) → self::Foo<self::Foo::T%>
     ;
-  constructor _internal({required self::Foo::T% x}) → self::Foo<self::Foo::T%>
+  constructor _internal({required self::Foo::T% x = null}) → self::Foo<self::Foo::T%>
     ;
 }
 static method main() → void
diff --git a/pkg/front_end/testcases/general/trailing_comma1.dart.weak.outline.expect b/pkg/front_end/testcases/general/trailing_comma1.dart.weak.outline.expect
index 5048b8e..ed37270 100644
--- a/pkg/front_end/testcases/general/trailing_comma1.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/trailing_comma1.dart.weak.outline.expect
@@ -5,9 +5,9 @@
 class C extends core::Object {
   synthetic constructor •() → self::C
     ;
-  method instance1({dynamic z}) → void
+  method instance1({dynamic z = null}) → void
     ;
-  method instance2(dynamic a, {dynamic z}) → void
+  method instance2(dynamic a, {dynamic z = null}) → void
     ;
 }
 class Bad extends core::Object {
diff --git a/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml b/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml
new file mode 100644
index 0000000..e60bc44
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml
@@ -0,0 +1,29 @@
+# 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.md file.
+
+# Recompiling with no change shouldn't change the initializer - even from
+# null to Constant(null).
+
+type: newworld
+worlds:
+  - entry: main.dart
+    sources:
+      main.dart: |
+        import "lib.dart";
+        class B {}
+        class C = A with B;
+      lib.dart: |
+        class A {
+          final int? a;
+          A([this.a]);
+        }
+    expectedLibraryCount: 2
+
+  - entry: main.dart
+    worldType: updated
+    compareToPrevious: true
+    expectInitializeFromDill: false
+    invalidate:
+      - main.dart
+    expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml.world.1.expect b/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml.world.1.expect
new file mode 100644
index 0000000..8290d7d
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml.world.1.expect
@@ -0,0 +1,28 @@
+main = <No Member>;
+library from "org-dartlang-test:///lib.dart" as lib {
+
+  class A extends dart.core::Object {
+    final field dart.core::int? a;
+    constructor •([dart.core::int? a = #C1]) → lib::A
+      : lib::A::a = a, super dart.core::Object::•()
+      ;
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "org-dartlang-test:///lib.dart";
+
+  class B extends dart.core::Object {
+    synthetic constructor •() → main::B
+      : super dart.core::Object::•()
+      ;
+  }
+  class C extends lib::A implements main::B /*isEliminatedMixin*/  {
+    synthetic constructor •([dart.core::int? a = #C1]) → main::C
+      : super lib::A::•(a)
+      ;
+  }
+}
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml.world.2.expect b/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml.world.2.expect
new file mode 100644
index 0000000..8290d7d
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/initializer_implicit_null.yaml.world.2.expect
@@ -0,0 +1,28 @@
+main = <No Member>;
+library from "org-dartlang-test:///lib.dart" as lib {
+
+  class A extends dart.core::Object {
+    final field dart.core::int? a;
+    constructor •([dart.core::int? a = #C1]) → lib::A
+      : lib::A::a = a, super dart.core::Object::•()
+      ;
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "org-dartlang-test:///lib.dart";
+
+  class B extends dart.core::Object {
+    synthetic constructor •() → main::B
+      : super dart.core::Object::•()
+      ;
+  }
+  class C extends lib::A implements main::B /*isEliminatedMixin*/  {
+    synthetic constructor •([dart.core::int? a = #C1]) → main::C
+      : super lib::A::•(a)
+      ;
+  }
+}
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.weak.outline.expect b/pkg/front_end/testcases/inference/bug30624.dart.weak.outline.expect
index 7b44ed7..2d19b55 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.weak.outline.expect
@@ -5,17 +5,17 @@
 class C<E extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::E*>*
     ;
-  method barA([(self::C::E*, self::C::E*) →* core::int* cmp]) → void
+  method barA([(self::C::E*, self::C::E*) →* core::int* cmp = null]) → void
     ;
-  method barB([(self::C::E*, self::C::E*) →* core::int* cmp]) → void
+  method barB([(self::C::E*, self::C::E*) →* core::int* cmp = null]) → void
     ;
-  method barC([(self::C::E*, self::C::E*) →* core::int* cmp]) → void
+  method barC([(self::C::E*, self::C::E*) →* core::int* cmp = null]) → void
     ;
-  method barD([(self::C::E*, self::C::E*) →* core::int* cmp]) → void
+  method barD([(self::C::E*, self::C::E*) →* core::int* cmp = null]) → void
     ;
-  method barE([(self::C::E*, self::C::E*) →* core::int* cmp]) → void
+  method barE([(self::C::E*, self::C::E*) →* core::int* cmp = null]) → void
     ;
-  method barF([(self::C::E*, self::C::E*) →* core::int* cmp]) → void
+  method barF([(self::C::E*, self::C::E*) →* core::int* cmp = null]) → void
     ;
   static method _default(dynamic a, dynamic b) → core::int*
     ;
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.outline.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.outline.expect
index 79e8640..0e0f2e4 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 class ActionDispatcher<P extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::ActionDispatcher<self::ActionDispatcher::P*>*
     ;
-  method call([covariant-by-class self::ActionDispatcher::P* value]) → void
+  method call([covariant-by-class self::ActionDispatcher::P* value = null]) → void
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.weak.outline.expect
index b4bd378..f77a3ad 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.weak.outline.expect
@@ -17,7 +17,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class F1 extends core::Object {
-  constructor •({core::List<core::int*>* a}) → self::F1*
+  constructor •({core::List<core::int*>* a = null}) → self::F1*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -59,7 +59,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class F4 extends core::Object {
-  constructor •({core::Iterable<core::Iterable<core::int*>*>* a}) → self::F4*
+  constructor •({core::Iterable<core::Iterable<core::int*>*>* a = null}) → self::F4*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.weak.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.weak.outline.expect
index 0a9290c..568d09d 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.weak.outline.expect
@@ -17,7 +17,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a}) → self::F4<self::F4::T*>*
+  constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a = null}) → self::F4<self::F4::T*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.weak.outline.expect
index 6ad323d..bc46cfe 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.weak.outline.expect
@@ -17,7 +17,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class F1<T extends core::Object* = dynamic> extends core::Object {
-  constructor •({core::List<self::F1::T*>* a}) → self::F1<self::F1::T*>*
+  constructor •({core::List<self::F1::T*>* a = null}) → self::F1<self::F1::T*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -59,7 +59,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a}) → self::F4<self::F4::T*>*
+  constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a = null}) → self::F4<self::F4::T*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.weak.outline.expect
index 6b90f7f..a2ec85f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.weak.outline.expect
@@ -43,9 +43,9 @@
     ;
 }
 class F<S extends core::Object* = dynamic, T extends core::Object* = dynamic> extends self::A<self::F::S*, self::F::T*> {
-  constructor •(self::F::S* x, self::F::T* y, {core::List<self::F::S*>* a, core::List<self::F::T*>* b}) → self::F<self::F::S*, self::F::T*>*
+  constructor •(self::F::S* x, self::F::T* y, {core::List<self::F::S*>* a = null, core::List<self::F::T*>* b = null}) → self::F<self::F::S*, self::F::T*>*
     ;
-  constructor named(self::F::S* x, self::F::T* y, [self::F::S* a, self::F::T* b]) → self::F<self::F::S*, self::F::T*>*
+  constructor named(self::F::S* x, self::F::T* y, [self::F::S* a = null, self::F::T* b = null]) → self::F<self::F::S*, self::F::T*>*
     ;
 }
 static method test() → void
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
index 1e5bf1d..9492fb2 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
index 65c689a..6bf7851 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
index dec6dfa..d8325ea 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
index 716cde4..bd648b9 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
index b9060d8..bdf2de4 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
index f7c82fa..6308c69 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
index 3a661d0..c6f1986 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
index 68bc085..c076dc4 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
index bb3f357..9969d8c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
index c9869bc..242640b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
index c2dff99..072b257 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
index 4bf3e0c..78864f5 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
index 3719c43..174999b 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
index 0838a5b..2f7fa11 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
index 244190b..d1dd603 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
index 0096c45..1d10649 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
index 45d1408..41c31af 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
index 6e0c9a1..0b1b385 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
@@ -12,7 +12,7 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
index 53ccca1..871785f 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
@@ -8,11 +8,11 @@
 class MyFuture<T extends core::Object* = dynamic> extends core::Object implements asy::Future<self::MyFuture::T*> {
   constructor •() → self::MyFuture<self::MyFuture::T*>*
     ;
-  constructor value([dynamic x]) → self::MyFuture<self::MyFuture::T*>*
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T*>*
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
index f4f33bc..cec3e52 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
@@ -8,11 +8,11 @@
 class MyFuture<T extends core::Object* = dynamic> extends core::Object implements asy::Future<self::MyFuture::T*> {
   constructor •() → self::MyFuture<self::MyFuture::T*>*
     ;
-  constructor value([dynamic x]) → self::MyFuture<self::MyFuture::T*>*
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T*>*
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
index cd98612..2ba5919 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
@@ -8,11 +8,11 @@
 class MyFuture<T extends core::Object* = dynamic> extends core::Object implements asy::Future<self::MyFuture::T*> {
   constructor •() → self::MyFuture<self::MyFuture::T*>*
     ;
-  constructor value([dynamic x]) → self::MyFuture<self::MyFuture::T*>*
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T*>*
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
index 57e4893..a8d85df 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
@@ -8,11 +8,11 @@
 class MyFuture<T extends core::Object* = dynamic> extends core::Object implements asy::Future<self::MyFuture::T*> {
   constructor •() → self::MyFuture<self::MyFuture::T*>*
     ;
-  constructor value([dynamic x]) → self::MyFuture<self::MyFuture::T*>*
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T*>*
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
-  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
+  method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = null}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.outline.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.outline.expect
index 3603daa..d909d15 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 abstract class C<E extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::E*>*
     ;
-  method sort([(self::C::E*, self::C::E*) →* core::int* compare]) → void
+  method sort([(self::C::E*, self::C::E*) →* core::int* compare = null]) → void
     ;
   static method _compareAny(dynamic a, dynamic b) → core::int*
     ;
diff --git a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.weak.outline.expect b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.weak.outline.expect
index 6756bd4..66062f6 100644
--- a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.weak.outline.expect
@@ -41,11 +41,11 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
-  method f(self::A* x, {self::A* y}) → self::A*
+  method f(self::A* x, {self::A* y = null}) → self::A*
     ;
-  method g(self::A* x, {self::A* y}) → self::A*
+  method g(self::A* x, {self::A* y = null}) → self::A*
     ;
-  method h(self::A* x, {self::A* y}) → self::A*
+  method h(self::A* x, {self::A* y = null}) → self::A*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -61,21 +61,21 @@
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
     ;
-  method f(invalid-type x, {invalid-type y}) → invalid-type
+  method f(invalid-type x, {invalid-type y = null}) → invalid-type
     ;
-  method g(invalid-type x, {invalid-type y}) → invalid-type
+  method g(invalid-type x, {invalid-type y = null}) → invalid-type
     ;
-  method h(invalid-type x, {invalid-type y}) → invalid-type
+  method h(invalid-type x, {invalid-type y = null}) → invalid-type
     ;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
-  method f(self::I* x, {self::I* y}) → self::I*
+  method f(self::I* x, {self::I* y = null}) → self::I*
     ;
-  method g(self::I* x, {self::I* y}) → self::A*
+  method g(self::I* x, {self::I* y = null}) → self::A*
     ;
-  method h(self::A* x, {self::I* y}) → self::A*
+  method h(self::A* x, {self::I* y = null}) → self::A*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.outline.expect
index 3588046..01a5825 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
-  method m<T extends core::Object* = dynamic>(core::int* a, {core::String* b, self::C::m::T* c}) → self::C::m::T*
+  method m<T extends core::Object* = dynamic>(core::int* a, {core::String* b = null, self::C::m::T* c = null}) → self::C::m::T*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.outline.expect
index 7cd51f6..5e7e617 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
-  method m<T extends core::Object* = dynamic>(core::int* a, [self::C::m::T* b]) → self::C::m::T*
+  method m<T extends core::Object* = dynamic>(core::int* a, [self::C::m::T* b = null]) → self::C::m::T*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.outline.expect
index bc24a94..0ed9a74 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
-  method m<T extends core::Object* = dynamic>(core::int* a, [core::String* b, self::C::m::T* c]) → self::C::m::T*
+  method m<T extends core::Object* = dynamic>(core::int* a, [core::String* b = null, self::C::m::T* c = null]) → self::C::m::T*
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.weak.outline.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.weak.outline.expect
index bacc059..a063f88 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.weak.outline.expect
@@ -38,9 +38,9 @@
   synthetic constructor •() → self::A*
     ;
   abstract method f(core::int* x, core::int* y) → core::int*;
-  abstract method g(core::int* x, [core::int* y]) → core::int*;
-  abstract method h(core::int* x, {core::int* y}) → core::int*;
-  abstract method i(core::int* x, {core::int* y}) → core::int*;
+  abstract method g(core::int* x, [core::int* y = null]) → core::int*;
+  abstract method h(core::int* x, {core::int* y = null}) → core::int*;
+  abstract method i(core::int* x, {core::int* y = null}) → core::int*;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -58,7 +58,7 @@
   abstract method f(core::int* x) → core::int*;
   abstract method g(core::int* x) → core::int*;
   abstract method h(core::int* x) → core::int*;
-  abstract method i(core::int* x, {core::int* z}) → core::int*;
+  abstract method i(core::int* x, {core::int* z = null}) → core::int*;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -74,9 +74,9 @@
   synthetic constructor •() → self::C*
     ;
   abstract method f(invalid-type x, invalid-type y) → invalid-type;
-  abstract method g(core::int* x, [core::int* y]) → core::int*;
-  abstract method h(core::int* x, {core::int* y}) → core::int*;
-  abstract method i(invalid-type x, {invalid-type y, invalid-type z}) → invalid-type;
+  abstract method g(core::int* x, [core::int* y = null]) → core::int*;
+  abstract method h(core::int* x, {core::int* y = null}) → core::int*;
+  abstract method i(invalid-type x, {invalid-type y = null, invalid-type z = null}) → invalid-type;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.weak.outline.expect
index ab7f834..ad8cba6 100644
--- a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 abstract class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
-  abstract method foo({covariant-by-class core::Iterable<self::A::X*>* x}) → void;
+  abstract method foo({covariant-by-class core::Iterable<self::A::X*>* x = null}) → void;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -20,7 +20,7 @@
 class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
     ;
-  method foo({covariant-by-class core::Iterable<self::B::Y*>* x}) → void
+  method foo({covariant-by-class core::Iterable<self::B::Y*>* x = null}) → void
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.weak.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.weak.outline.expect
index 933cc07..0cf94f7 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.weak.outline.expect
@@ -17,7 +17,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B<T extends core::num*, S extends core::List<self::B::T*>* = core::List<core::num*>*> extends self::A<self::B::T*> {
-  constructor •([self::B::T* x]) → self::B<self::B::T*, self::B::S*>*
+  constructor •([self::B::T* x = null]) → self::B<self::B::T*, self::B::S*>*
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/named_arguments_anywhere/all_kinds.dart.weak.outline.expect b/pkg/front_end/testcases/named_arguments_anywhere/all_kinds.dart.weak.outline.expect
index 23ee911..74d3bdb 100644
--- a/pkg/front_end/testcases/named_arguments_anywhere/all_kinds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/named_arguments_anywhere/all_kinds.dart.weak.outline.expect
@@ -4,13 +4,13 @@
 
 typedef B = self::A;
 class A extends core::Object {
-  constructor •(core::int x, core::int y, {required core::int z}) → self::A
+  constructor •(core::int x, core::int y, {required core::int z = null}) → self::A
     ;
   static factory foo(core::int x, core::int y, {required core::int z}) → self::A
     ;
   get property() → (core::int, core::int, {required z: core::int}) → void
     ;
-  method bar(core::int x, core::int y, {required core::int z}) → void
+  method bar(core::int x, core::int y, {required core::int z = null}) → void
     ;
 }
 class Test extends self::A {
diff --git a/pkg/front_end/testcases/named_arguments_anywhere/redirecting_constructor_initializers.dart.weak.outline.expect b/pkg/front_end/testcases/named_arguments_anywhere/redirecting_constructor_initializers.dart.weak.outline.expect
index ccf5a7c..48bc7c5 100644
--- a/pkg/front_end/testcases/named_arguments_anywhere/redirecting_constructor_initializers.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/named_arguments_anywhere/redirecting_constructor_initializers.dart.weak.outline.expect
@@ -4,7 +4,7 @@
 
 class A extends core::Object {
   static final field dynamic _redirecting# = <dynamic>[self::A::bar]/*isLegacy*/;
-  constructor •(core::int x, core::bool y, {required core::String z}) → self::A
+  constructor •(core::int x, core::bool y, {required core::String z = null}) → self::A
     ;
   constructor foo() → self::A
     ;
diff --git a/pkg/front_end/testcases/named_arguments_anywhere/trailing_comma1.dart.weak.outline.expect b/pkg/front_end/testcases/named_arguments_anywhere/trailing_comma1.dart.weak.outline.expect
index 5048b8e..ed37270 100644
--- a/pkg/front_end/testcases/named_arguments_anywhere/trailing_comma1.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/named_arguments_anywhere/trailing_comma1.dart.weak.outline.expect
@@ -5,9 +5,9 @@
 class C extends core::Object {
   synthetic constructor •() → self::C
     ;
-  method instance1({dynamic z}) → void
+  method instance1({dynamic z = null}) → void
     ;
-  method instance2(dynamic a, {dynamic z}) → void
+  method instance2(dynamic a, {dynamic z = null}) → void
     ;
 }
 class Bad extends core::Object {
diff --git a/pkg/front_end/testcases/nnbd/combined_required.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/combined_required.dart.weak.outline.expect
index 1b3a496..a58937a 100644
--- a/pkg/front_end/testcases/nnbd/combined_required.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/combined_required.dart.weak.outline.expect
@@ -5,17 +5,17 @@
 class A extends core::Object {
   synthetic constructor •() → self::A
     ;
-  method method1({required core::int a}) → void
+  method method1({required core::int a = null}) → void
     ;
-  method method2({core::int? a, required core::int b}) → void
+  method method2({core::int? a = null, required core::int b = null}) → void
     ;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B
     ;
-  method method1({required covariant-by-declaration core::int a}) → void
+  method method1({required covariant-by-declaration core::int a = null}) → void
     ;
-  method method2({covariant-by-declaration core::int? a, required core::int b}) → void
+  method method2({covariant-by-declaration core::int? a = null, required core::int b = null}) → void
     ;
 }
 class C extends self::A implements self::B {
@@ -29,9 +29,9 @@
 class D extends self::C {
   synthetic constructor •() → self::D
     ;
-  method method1({required covariant-by-declaration core::int a}) → void
+  method method1({required covariant-by-declaration core::int a = null}) → void
     ;
-  method method2({covariant-by-declaration core::int? a, required core::int b}) → void
+  method method2({covariant-by-declaration core::int? a = null, required core::int b = null}) → void
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/future_or_variables.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/future_or_variables.dart.weak.outline.expect
index 920efc0..4a18759 100644
--- a/pkg/front_end/testcases/nnbd/future_or_variables.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/future_or_variables.dart.weak.outline.expect
@@ -13,9 +13,9 @@
   static field FutureOr<FutureOr<dynamic>>staticField3;
   synthetic constructor •() → self::Class1
     ;
-  method instanceMethod1([FutureOr<dynamic>parameter1, FutureOr<core::int?>parameter2, FutureOr<FutureOr<dynamic>>parameter3]) → void
+  method instanceMethod1([FutureOr<dynamic>parameter1 = null, FutureOr<core::int?>parameter2 = null, FutureOr<FutureOr<dynamic>>parameter3 = null]) → void
     ;
-  method instanceMethod2({FutureOr<dynamic>parameter1, FutureOr<core::int?>parameter2, FutureOr<FutureOr<dynamic>>parameter3}) → void
+  method instanceMethod2({FutureOr<dynamic>parameter1 = null, FutureOr<core::int?>parameter2 = null, FutureOr<FutureOr<dynamic>>parameter3 = null}) → void
     ;
   static method staticMethod1([FutureOr<dynamic>parameter1, FutureOr<core::int?>parameter2, FutureOr<FutureOr<dynamic>>parameter3]) → void
     ;
diff --git a/pkg/front_end/testcases/nnbd/issue40600.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue40600.dart.weak.outline.expect
index 36bd369..d9e0522 100644
--- a/pkg/front_end/testcases/nnbd/issue40600.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue40600.dart.weak.outline.expect
@@ -14,7 +14,7 @@
   covariant-by-class final field self::B<self::A::X%> b;
   synthetic constructor •() → self::A<self::A::X%>
     ;
-  method foo([covariant-by-class FutureOr<self::A::X%>? x]) → dynamic
+  method foo([covariant-by-class FutureOr<self::A::X%>? x = null]) → dynamic
     ;
 }
 class C<T extends core::Object? = dynamic> extends core::Object {
diff --git a/pkg/front_end/testcases/nnbd/issue40954.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue40954.dart.weak.outline.expect
index 35e6233..2869359 100644
--- a/pkg/front_end/testcases/nnbd/issue40954.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue40954.dart.weak.outline.expect
@@ -52,9 +52,9 @@
     ;
   static method test2(dynamic v, {self::A a}) → void
     ;
-  method test11(dynamic v, [self::A a]) → void
+  method test11(dynamic v, [self::A a = null]) → void
     ;
-  method test22(dynamic v, {self::A a}) → void
+  method test22(dynamic v, {self::A a = null}) → void
     ;
 }
 static method test1(dynamic v, [self::A a]) → void
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
index 48dab81..1ca1edd 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
@@ -88,23 +88,23 @@
 class A extends core::Object {
   final field core::int i;
   static final field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
-  constructor constructor1([core::int i]) → self::A
+  constructor constructor1([core::int i = null]) → self::A
     ;
-  constructor constructor2({core::int i}) → self::A
+  constructor constructor2({core::int i = null}) → self::A
     ;
-  constructor constructor3([core::int i]) → self::A
+  constructor constructor3([core::int i = null]) → self::A
     ;
-  constructor constructor4({core::int i}) → self::A
+  constructor constructor4({core::int i = null}) → self::A
     ;
-  constructor constructor5([core::int? i]) → self::A
+  constructor constructor5([core::int? i = null]) → self::A
     ;
-  constructor constructor6({core::int? i}) → self::A
+  constructor constructor6({core::int? i = null}) → self::A
     ;
-  constructor constructor7({required core::int i}) → self::A
+  constructor constructor7({required core::int i = null}) → self::A
     ;
-  external constructor constructor8([core::int i]) → self::A
+  external constructor constructor8([core::int i = null]) → self::A
     ;
-  external constructor constructor9({core::int i}) → self::A
+  external constructor constructor9({core::int i = null}) → self::A
     ;
   static factory factory3([core::int i]) → self::A
     return new self::A::constructor3(i);
@@ -120,45 +120,45 @@
     ;
   static factory factory9({core::int i}) → self::A
     ;
-  method method3([core::int i]) → dynamic
+  method method3([core::int i = null]) → dynamic
     ;
-  method method4({core::int i}) → dynamic
+  method method4({core::int i = null}) → dynamic
     ;
-  method method5([core::int? i]) → dynamic
+  method method5([core::int? i = null]) → dynamic
     ;
-  method method6({core::int? i}) → dynamic
+  method method6({core::int? i = null}) → dynamic
     ;
-  method method7({required core::int i}) → dynamic
+  method method7({required core::int i = null}) → dynamic
     ;
-  external method method8([core::int i]) → dynamic;
-  external method method9({core::int i}) → dynamic;
+  external method method8([core::int i = null]) → dynamic;
+  external method method9({core::int i = null}) → dynamic;
 }
 abstract class B extends core::Object {
   field core::int i;
   synthetic constructor •() → self::B
     ;
-  abstract method method3([core::int i]) → dynamic;
-  abstract method method4({core::int i}) → dynamic;
-  abstract method method5([core::int? i]) → dynamic;
-  abstract method method6({core::int? i}) → dynamic;
-  abstract method method7({required core::int i}) → dynamic;
+  abstract method method3([core::int i = null]) → dynamic;
+  abstract method method4({core::int i = null}) → dynamic;
+  abstract method method5([core::int? i = null]) → dynamic;
+  abstract method method6({core::int? i = null}) → dynamic;
+  abstract method method7({required core::int i = null}) → dynamic;
 }
 class C extends core::Object implements self::B {
   field core::int i;
   static final field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
-  constructor constructor1([core::int i]) → self::C
+  constructor constructor1([core::int i = null]) → self::C
     ;
-  constructor constructor2({core::int i}) → self::C
+  constructor constructor2({core::int i = null}) → self::C
     ;
-  constructor constructor3([core::int i]) → self::C
+  constructor constructor3([core::int i = null]) → self::C
     ;
-  constructor constructor4({core::int i}) → self::C
+  constructor constructor4({core::int i = null}) → self::C
     ;
-  constructor constructor5([core::int? i]) → self::C
+  constructor constructor5([core::int? i = null]) → self::C
     ;
-  constructor constructor6({core::int? i}) → self::C
+  constructor constructor6({core::int? i = null}) → self::C
     ;
-  constructor constructor7({required core::int i}) → self::C
+  constructor constructor7({required core::int i = null}) → self::C
     ;
   static factory factory3([core::int i]) → self::C
     return new self::C::constructor3(i);
@@ -174,15 +174,15 @@
     ;
   static factory factory9({core::int i}) → self::C
     ;
-  method method3([core::int i]) → dynamic
+  method method3([core::int i = null]) → dynamic
     ;
-  method method4({core::int i}) → dynamic
+  method method4({core::int i = null}) → dynamic
     ;
-  method method5([core::int? i]) → dynamic
+  method method5([core::int? i = null]) → dynamic
     ;
-  method method6({core::int? i}) → dynamic
+  method method6({core::int? i = null}) → dynamic
     ;
-  method method7({required core::int i}) → dynamic
+  method method7({required core::int i = null}) → dynamic
     ;
 }
 static method main() → void
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
index 110f141..62b1633 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
@@ -17,7 +17,7 @@
 
 class C extends core::Object {
   static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
-  constructor gen({core::int i}) → self::C
+  constructor gen({core::int i = null}) → self::C
     ;
   static factory fact({core::int i}) → self::C
     ;
diff --git a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.outline.expect
index e04c31a..b6d9901 100644
--- a/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/missing_required_named_parameter.dart.weak.outline.expect
@@ -4,9 +4,9 @@
 
 class A extends core::Object {
   field ({required s: core::String}) → void f;
-  constructor •({required core::int x}) → self::A
+  constructor •({required core::int x = null}) → self::A
     ;
-  method foo({required core::int y}) → dynamic
+  method foo({required core::int y = null}) → dynamic
     ;
 }
 static field ({required s: core::String}) → void g;
diff --git a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.outline.expect
index 1570628..4e356a4 100644
--- a/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/null_aware_chain.dart.weak.outline.expect
@@ -4,7 +4,7 @@
 
 class Class extends core::Object {
   field self::Class? field;
-  constructor •([self::Class? field]) → self::Class
+  constructor •([self::Class? field = null]) → self::Class
     ;
   get getter1() → self::Class
     ;
diff --git a/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.outline.expect
index 3b7cf09..ede32af 100644
--- a/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_object_access.dart.weak.outline.expect
@@ -20,7 +20,7 @@
     return super.{core::Object::noSuchMethod}(invocation);
   forwarding-stub forwarding-semi-stub operator /* signature-type: (self::Class) → core::bool */ ==(covariant-by-declaration core::Object o) → core::bool
     return super.{core::Object::==}(o);
-  abstract method toString({core::Object o}) → core::String;
+  abstract method toString({core::Object o = null}) → core::String;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/override_inference.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/override_inference.dart.weak.outline.expect
index 1dcea19..fcc5fcb 100644
--- a/pkg/front_end/testcases/nnbd/override_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/override_inference.dart.weak.outline.expect
@@ -155,9 +155,9 @@
   abstract method method4b<AT4b extends core::Object? = dynamic>(self::A::method4b::AT4b% x, covariant-by-class self::A::AT% y) → void;
   abstract method method5a(core::int x, core::num y) → void;
   abstract method method5b(core::int x, core::num y) → void;
-  abstract method method6a({core::int x, core::num y}) → void;
-  abstract method method6b({core::num y, core::int x}) → void;
-  method method7a(core::Object? o, {core::Object? named}) → core::Object?
+  abstract method method6a({core::int x = null, core::num y = null}) → void;
+  abstract method method6b({core::num y = null, core::int x = null}) → void;
+  method method7a(core::Object? o, {core::Object? named = null}) → core::Object?
     ;
   abstract get getter1a() → core::Object;
   abstract get getter1b() → core::String;
@@ -202,9 +202,9 @@
   abstract method method4b<BT4b extends core::Object? = dynamic>(self::B::method4b::BT4b% x, covariant-by-class self::B::BT% y) → void;
   abstract method method5a(core::num x, core::int y) → void;
   abstract method method5b(core::num x, core::int y) → void;
-  abstract method method6a({core::Object x, core::num y}) → void;
-  abstract method method6b({core::int x, core::Object y}) → void;
-  abstract method method7a(FutureOr<dynamic>o, {FutureOr<dynamic>named}) → FutureOr<dynamic>;
+  abstract method method6a({core::Object x = null, core::num y = null}) → void;
+  abstract method method6b({core::int x = null, core::Object y = null}) → void;
+  abstract method method7a(FutureOr<dynamic>o, {FutureOr<dynamic>named = null}) → FutureOr<dynamic>;
   abstract get getter1a() → core::String;
   abstract get getter1b() → core::Object;
   abstract get getter1c() → core::int;
@@ -254,14 +254,14 @@
   abstract method method2a(core::Object? x) → void;
   abstract method method2b(core::Object? x) → void;
   abstract method method3a<CT3a extends core::Object? = dynamic>(self::C::method3a::CT3a% x) → void;
-  abstract method method3b<CT3b extends core::Object? = dynamic>(self::C::method3b::CT3b% x, [dynamic y]) → void;
+  abstract method method3b<CT3b extends core::Object? = dynamic>(self::C::method3b::CT3b% x, [dynamic y = null]) → void;
   abstract method method4a<CT4a extends core::Object? = dynamic>(self::C::method4a::CT4a% x, covariant-by-class core::num y) → void;
-  abstract method method4b<CT4b extends core::Object? = dynamic>(self::C::method4b::CT4b% x, covariant-by-class core::num y, [dynamic z]) → void;
+  abstract method method4b<CT4b extends core::Object? = dynamic>(self::C::method4b::CT4b% x, covariant-by-class core::num y, [dynamic z = null]) → void;
   abstract method method5a(invalid-type x, invalid-type y) → void;
-  abstract method method5b(core::num x, core::num y, [invalid-type z]) → void;
-  abstract method method6a({core::Object x, core::num y}) → void;
-  abstract method method6b({core::int x, core::Object y, dynamic z}) → void;
-  abstract method method7a(core::Object? o, {core::Object? named}) → core::Object?;
+  abstract method method5b(core::num x, core::num y, [invalid-type z = null]) → void;
+  abstract method method6a({core::Object x = null, core::num y = null}) → void;
+  abstract method method6b({core::int x = null, core::Object y = null, dynamic z = null}) → void;
+  abstract method method7a(core::Object? o, {core::Object? named = null}) → core::Object?;
   abstract get getter1a() → core::String;
   abstract get getter1b() → core::String;
   abstract get getter1c() → invalid-type;
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 1a1e26d..ede4192 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
@@ -50,11 +50,11 @@
 class Class extends core::Object {
   synthetic constructor •() → self2::Class
     ;
-  method method([core::int i]) → void
+  method method([core::int i = null]) → void
     ;
   @_in::patch
-  external method patchedMethod([core::int i]) → void;
-  method /* from org-dartlang-testcase:///patch_lib.dart */ _injectedMethod([core::int i]) → void
+  external method patchedMethod([core::int i = null]) → void;
+  method /* from org-dartlang-testcase:///patch_lib.dart */ _injectedMethod([core::int i = null]) → void
     ;
 }
 static method method([core::int i]) → void
diff --git a/pkg/front_end/testcases/nnbd/required.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/required.dart.weak.outline.expect
index 91153eb..d2d1598 100644
--- a/pkg/front_end/testcases/nnbd/required.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/required.dart.weak.outline.expect
@@ -15,18 +15,18 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class
     ;
-  method method({core::int a = 42, required core::int b, required final core::int c, required covariant-by-declaration final core::int d}) → dynamic
+  method method({core::int a = 42, required core::int b = null, required final core::int c = null, required covariant-by-declaration final core::int d = null}) → dynamic
     ;
 }
 abstract class A extends core::Object {
   synthetic constructor •() → self::A
     ;
-  abstract method foo({core::int x}) → dynamic;
+  abstract method foo({core::int x = null}) → dynamic;
 }
 class B extends self::A {
   synthetic constructor •() → self::B
     ;
-  method foo({core::int x}) → dynamic
+  method foo({core::int x = null}) → dynamic
     ;
 }
 class C extends self::A {
diff --git a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.outline.expect
index 02e531b..245c869 100644
--- a/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/shorting_null_check.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 class A extends core::Object {
   field core::int zero;
   field core::int? zeroOrNull;
-  constructor •(core::int zero, [core::int? zeroOrNull]) → self::A
+  constructor •(core::int zero, [core::int? zeroOrNull = null]) → self::A
     ;
 }
 class Foo extends core::Object {
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.outline.expect
index cdeab6f..b48701e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.outline.expect
@@ -149,7 +149,7 @@
 class Super extends core::Object {
   synthetic constructor •() → in_2::Super
     ;
-  method nullabilityMethod(core::int i, {required core::int j}) → core::int
+  method nullabilityMethod(core::int i, {required core::int j = #C1}) → core::int
     ;
   get nullabilityGetter() → core::int
     ;
@@ -161,13 +161,13 @@
 abstract class SuperExtra extends core::Object {
   synthetic constructor •() → in_2::SuperExtra
     ;
-  method optionalArgumentsMethod(core::int i, [core::int? j]) → core::int
+  method optionalArgumentsMethod(core::int i, [core::int? j = #C1]) → core::int
     ;
 }
 abstract class SuperQ extends core::Object {
   synthetic constructor •() → in_2::SuperQ
     ;
-  method nullabilityMethod(core::int? i, {core::int? j}) → core::int?
+  method nullabilityMethod(core::int? i, {core::int? j = #C1}) → core::int?
     ;
   get nullabilityGetter() → core::int?
     ;
@@ -224,7 +224,7 @@
   const synthetic constructor •() → in_::_LegacyMixedIn&Object&Super*
     : super core::Object::•()
     ;
-  method /*isNonNullableByDefault, from org-dartlang-testcase:///in_out_in_lib1.dart */ nullabilityMethod(core::int i, {required core::int j}) → core::int
+  method /*isNonNullableByDefault, from org-dartlang-testcase:///in_out_in_lib1.dart */ nullabilityMethod(core::int i, {required core::int j = #C1}) → core::int
     ;
   get /*isNonNullableByDefault, from org-dartlang-testcase:///in_out_in_lib1.dart */ nullabilityGetter() → core::int
     ;
@@ -252,7 +252,7 @@
   const synthetic constructor •() → in_::_LegacyMixedInQ&Object&SuperQ*
     : super core::Object::•()
     ;
-  method /*isNonNullableByDefault, from org-dartlang-testcase:///in_out_in_lib1.dart */ nullabilityMethod(core::int? i, {core::int? j}) → core::int?
+  method /*isNonNullableByDefault, from org-dartlang-testcase:///in_out_in_lib1.dart */ nullabilityMethod(core::int? i, {core::int? j = #C1}) → core::int?
     ;
   get /*isNonNullableByDefault, from org-dartlang-testcase:///in_out_in_lib1.dart */ nullabilityGetter() → core::int?
     ;
@@ -276,3 +276,7 @@
     ;
   abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
 }
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.modular.expect
index 1f01c40..b620e23 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.modular.expect
@@ -221,9 +221,9 @@
   synthetic constructor •() → in_::LegacyClass*
     : super in_2::Super::•()
     ;
-  abstract member-signature method nullabilityMethod(core::int* i, {core::int* j}) → core::int*; -> in_2::Super::nullabilityMethod
+  abstract member-signature method nullabilityMethod(core::int* i, {core::int* j = #C1}) → core::int*; -> in_2::Super::nullabilityMethod
   abstract member-signature get nullabilityGetter() → core::int*; -> in_2::Super::nullabilityGetter
-  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
+  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j = #C1]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -240,9 +240,9 @@
   synthetic constructor •() → in_::LegacyClassQ*
     : super in_2::SuperQ::•()
     ;
-  abstract member-signature method nullabilityMethod(core::int* i, {core::int* j}) → core::int*; -> in_2::SuperQ::nullabilityMethod
+  abstract member-signature method nullabilityMethod(core::int* i, {core::int* j = #C1}) → core::int*; -> in_2::SuperQ::nullabilityMethod
   abstract member-signature get nullabilityGetter() → core::int*; -> in_2::SuperQ::nullabilityGetter
-  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
+  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j = #C1]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -259,7 +259,7 @@
   const synthetic constructor •() → in_::_LegacyMixedIn&Object&Super*
     : super core::Object::•()
     ;
-  mixin-super-stub method nullabilityMethod(core::int* i, {core::int* j}) → core::int*
+  mixin-super-stub method nullabilityMethod(core::int* i, {core::int* j = #C1}) → core::int*
     return super.{in_2::Super::nullabilityMethod}(i, j: j);
   mixin-super-stub get nullabilityGetter() → core::int*
     return super.{in_2::Super::nullabilityGetter};
@@ -282,13 +282,13 @@
   synthetic constructor •() → in_::LegacyMixedIn*
     : super in_::_LegacyMixedIn&Object&Super::•()
     ;
-  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
+  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j = #C1]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
 }
 abstract class _LegacyMixedInQ&Object&SuperQ = core::Object with in_2::SuperQ /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → in_::_LegacyMixedInQ&Object&SuperQ*
     : super core::Object::•()
     ;
-  mixin-super-stub method nullabilityMethod(core::int* i, {core::int* j}) → core::int*
+  mixin-super-stub method nullabilityMethod(core::int* i, {core::int* j = #C1}) → core::int*
     return super.{in_2::SuperQ::nullabilityMethod}(i, j: j);
   mixin-super-stub get nullabilityGetter() → core::int*
     return super.{in_2::SuperQ::nullabilityGetter};
@@ -311,5 +311,9 @@
   synthetic constructor •() → in_::LegacyMixedInQ*
     : super in_::_LegacyMixedInQ&Object&SuperQ::•()
     ;
-  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
+  abstract member-signature method optionalArgumentsMethod(core::int* i, [core::int* j = #C1]) → core::int*; -> in_2::SuperExtra::optionalArgumentsMethod
+}
+
+constants  {
+  #C1 = null
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.outline.expect
index 386b09f..fbbade0 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.outline.expect
@@ -230,7 +230,7 @@
 class Super extends core::Object {
   synthetic constructor •() → in_2::Super
     ;
-  method nullabilityMethod(core::int i, {required core::int j}) → core::int
+  method nullabilityMethod(core::int i, {required core::int j = #C1}) → core::int
     ;
   get nullabilityGetter() → core::int
     ;
@@ -242,13 +242,13 @@
 abstract class SuperExtra extends core::Object {
   synthetic constructor •() → in_2::SuperExtra
     ;
-  method optionalArgumentsMethod(core::int i, [core::int? j]) → core::int
+  method optionalArgumentsMethod(core::int i, [core::int? j = #C1]) → core::int
     ;
 }
 abstract class SuperQ extends core::Object {
   synthetic constructor •() → in_2::SuperQ
     ;
-  method nullabilityMethod(core::int? i, {core::int? j}) → core::int?
+  method nullabilityMethod(core::int? i, {core::int? j = #C1}) → core::int?
     ;
   get nullabilityGetter() → core::int?
     ;
@@ -257,3 +257,7 @@
   method optionalArgumentsMethod(core::int? i) → core::int?
     ;
 }
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.outline.expect
index 7e98c01..2ea0668 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.outline.expect
@@ -144,7 +144,7 @@
 abstract class SuperExtra extends core::Object {
   synthetic constructor •() → in_2::SuperExtra
     ;
-  method optionalArgumentsMethod(core::int i, [core::int? j]) → core::int
+  method optionalArgumentsMethod(core::int i, [core::int? j = null]) → core::int
     ;
 }
 abstract class SuperQ extends core::Object {
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.outline.expect
index 8ed2bcc..a036c93 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41180.dart.weak.outline.expect
@@ -46,7 +46,7 @@
   final field iss::Iterable::E% element;
   constructor •(iss::Iterable::E% element) → iss::Iterable<iss::Iterable::E%>
     ;
-  method singleWhere((iss::Iterable::E%) → core::bool test, {covariant-by-class () →? iss::Iterable::E% orElse}) → iss::Iterable::E%
+  method singleWhere((iss::Iterable::E%) → core::bool test, {covariant-by-class () →? iss::Iterable::E% orElse = null}) → iss::Iterable::E%
     ;
 }
 static method foo(() → iss::Map<core::String, core::String> f) → void
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.modular.expect
index 35340a8..dbabb6a 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.modular.expect
@@ -14,7 +14,7 @@
   synthetic constructor •() → self::_TestSchedulerBinding&BindingBase&SchedulerBinding*
     : super fou::BindingBase::•()
     ;
-  abstract member-signature method registerSignalServiceExtension({core::String* name, () →* asy::Future<Null>* callback}) → void; -> fou::BindingBase::registerSignalServiceExtension
+  abstract member-signature method registerSignalServiceExtension({core::String* name = #C1, () →* asy::Future<Null>* callback = #C1}) → void; -> fou::BindingBase::registerSignalServiceExtension
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -37,3 +37,7 @@
     ;
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.outline.expect
index 135d07e..6bee12f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue42387/scheduler_tester.dart.weak.outline.expect
@@ -54,7 +54,7 @@
 abstract class BindingBase extends core::Object {
   synthetic constructor •() → fou::BindingBase
     ;
-  method registerSignalServiceExtension({required core::String name, required () → asy::Future<Null> callback}) → void
+  method registerSignalServiceExtension({required core::String name = #C1, required () → asy::Future<Null> callback = #C1}) → void
     ;
 }
 
@@ -133,3 +133,8 @@
 additionalExports = (ser::ServicesBinding)
 
 export "org-dartlang-testcase:///services_binding_lib.dart";
+
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.modular.expect
index e31e167..25f2899 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.modular.expect
@@ -110,10 +110,11 @@
   abstract member-signature method toString() → core::String*; -> core::Object::toString
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  abstract forwarding-stub method method2([covariant-by-declaration core::String* a, core::num* b]) → dynamic;
+  abstract forwarding-stub method method2([covariant-by-declaration core::String* a = #C2, core::num* b = #C2]) → dynamic;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = "hello"
+  #C2 = null
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.outline.expect
index 794d06d..7f95ece 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue43988/main.dart.weak.outline.expect
@@ -147,7 +147,7 @@
 abstract class C2 extends core::Object {
   synthetic constructor •() → mai::C2
     ;
-  abstract method method2([core::String a]) → dynamic;
+  abstract method method2([core::String a = #C2]) → dynamic;
 }
 abstract class C3 extends core::Object implements mai::C1, mai::C2 {
   synthetic constructor •() → mai::C3
@@ -157,7 +157,7 @@
 abstract class C4 extends core::Object {
   synthetic constructor •() → mai::C4
     ;
-  abstract method method2([covariant-by-declaration core::String a]) → dynamic;
+  abstract method method2([covariant-by-declaration core::String a = #C2]) → dynamic;
 }
 abstract class C5 extends mai::C3 implements mai::C4 {
   synthetic constructor •() → mai::C5
@@ -167,9 +167,10 @@
 abstract class C7 extends core::Object {
   synthetic constructor •() → mai::C7
     ;
-  abstract method method2([core::String a, core::num b]) → dynamic;
+  abstract method method2([core::String a = #C2, core::num b = #C2]) → dynamic;
 }
 
 constants  {
   #C1 = "hello"
+  #C2 = null
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue43988/main.no_link.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/issue43988/main.no_link.dart.weak.outline.expect
index 4e1eec5..e07fd30 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue43988/main.no_link.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue43988/main.no_link.dart.weak.outline.expect
@@ -147,7 +147,7 @@
 abstract class C2 extends core::Object {
   synthetic constructor •() → mai::C2
     ;
-  abstract method method2([core::String a]) → dynamic;
+  abstract method method2([core::String a = null]) → dynamic;
 }
 abstract class C3 extends core::Object implements mai::C1, mai::C2 {
   synthetic constructor •() → mai::C3
@@ -157,7 +157,7 @@
 abstract class C4 extends core::Object {
   synthetic constructor •() → mai::C4
     ;
-  abstract method method2([covariant-by-declaration core::String a]) → dynamic;
+  abstract method method2([covariant-by-declaration core::String a = null]) → dynamic;
 }
 abstract class C5 extends mai::C3 implements mai::C4 {
   synthetic constructor •() → mai::C5
@@ -167,5 +167,5 @@
 abstract class C7 extends core::Object {
   synthetic constructor •() → mai::C7
     ;
-  abstract method method2([core::String a, core::num b]) → dynamic;
+  abstract method method2([core::String a = null, core::num b = null]) → dynamic;
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.outline.expect
index e706863..09e5ea1 100644
--- a/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_in.dart.weak.outline.expect
@@ -18,17 +18,17 @@
     ;
   method method6a(core::int* a, core::int* b) → core::int*
     ;
-  method method6b(core::int* a, [core::int* b]) → core::int*
+  method method6b(core::int* a, [core::int* b = null]) → core::int*
     ;
-  method method6c([core::int* a, core::int* b]) → core::int*
+  method method6c([core::int* a = null, core::int* b = null]) → core::int*
     ;
   method method8a(core::int* a, {core::int* b = 0}) → core::int*
     ;
-  method method8b({core::int* a, core::int* b = 0}) → core::int*
+  method method8b({core::int* a = null, core::int* b = 0}) → core::int*
     ;
-  method method10a(core::int* a, {core::int* b}) → core::int*
+  method method10a(core::int* a, {core::int* b = null}) → core::int*
     ;
-  method method10b({core::int* a, core::int* b}) → core::int*
+  method method10b({core::int* a = null, core::int* b = null}) → core::int*
     ;
   get getter3() → core::int*
     ;
@@ -101,19 +101,19 @@
   abstract method method3() → core::int;
   abstract method method4() → core::int?;
   abstract method method5a(core::int a, core::int? b) → core::int;
-  abstract method method5b(core::int a, [core::int? b]) → core::int;
-  abstract method method5c([core::int a = 0, core::int? b]) → core::int;
+  abstract method method5b(core::int a, [core::int? b = null]) → core::int;
+  abstract method method5c([core::int a = 0, core::int? b = null]) → core::int;
   abstract method method6a(core::int? a, core::int b) → core::int?;
   abstract method method6b(core::int? a, [core::int b = 0]) → core::int?;
-  abstract method method6c([core::int? a, core::int b = 0]) → core::int?;
-  abstract method method7a(core::int a, {core::int? b}) → core::int;
-  abstract method method7b({core::int a = 0, core::int? b}) → core::int;
+  abstract method method6c([core::int? a = null, core::int b = 0]) → core::int?;
+  abstract method method7a(core::int a, {core::int? b = null}) → core::int;
+  abstract method method7b({core::int a = 0, core::int? b = null}) → core::int;
   abstract method method8a(core::int? a, {core::int b = 0}) → core::int?;
-  abstract method method8b({core::int? a, core::int b = 0}) → core::int?;
-  abstract method method9a(core::int a, {required core::int? b}) → core::int;
-  abstract method method9b({required core::int a, required core::int? b}) → core::int;
-  abstract method method10a(core::int? a, {required core::int b}) → core::int?;
-  abstract method method10b({required core::int? a, required core::int b}) → core::int?;
+  abstract method method8b({core::int? a = null, core::int b = 0}) → core::int?;
+  abstract method method9a(core::int a, {required core::int? b = null}) → core::int;
+  abstract method method9b({required core::int a = null, required core::int? b = null}) → core::int;
+  abstract method method10a(core::int? a, {required core::int b = null}) → core::int?;
+  abstract method method10b({required core::int? a = null, required core::int b = null}) → core::int?;
   abstract get getter1() → core::int?;
   abstract get getter2() → core::int;
   abstract get getter3() → core::int;
@@ -152,17 +152,17 @@
     ;
   method method5a(core::int a, core::int? b) → core::int
     ;
-  method method5b(core::int a, [core::int? b]) → core::int
+  method method5b(core::int a, [core::int? b = null]) → core::int
     ;
-  method method5c([core::int a = 0, core::int? b]) → core::int
+  method method5c([core::int a = 0, core::int? b = null]) → core::int
     ;
-  method method7a(core::int a, {core::int? b}) → core::int
+  method method7a(core::int a, {core::int? b = null}) → core::int
     ;
-  method method7b({core::int a = 0, core::int? b}) → core::int
+  method method7b({core::int a = 0, core::int? b = null}) → core::int
     ;
-  method method9a(core::int a, {required core::int? b}) → core::int
+  method method9a(core::int a, {required core::int? b = null}) → core::int
     ;
-  method method9b({required core::int a, required core::int? b}) → core::int
+  method method9b({required core::int a = null, required core::int? b = null}) → core::int
     ;
   get getter1() → core::int
     ;
diff --git a/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.outline.expect
index 01c1893..9ef4cfb 100644
--- a/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/member_inheritance_from_opt_out.dart.weak.outline.expect
@@ -15,17 +15,17 @@
   abstract method method1() → core::int;
   abstract method method2() → core::int?;
   abstract method method3a(core::int a, core::int b) → core::int;
-  abstract method method3b(core::int a, [core::int b]) → core::int;
-  abstract method method3c([core::int a, core::int b]) → core::int;
+  abstract method method3b(core::int a, [core::int b = null]) → core::int;
+  abstract method method3c([core::int a = null, core::int b = null]) → core::int;
   abstract method method4a(core::int? a, core::int? b) → core::int?;
-  abstract method method4b(core::int? a, [core::int? b]) → core::int?;
-  abstract method method4c([core::int? a, core::int? b]) → core::int?;
+  abstract method method4b(core::int? a, [core::int? b = null]) → core::int?;
+  abstract method method4c([core::int? a = null, core::int? b = null]) → core::int?;
   abstract method method5a(core::int a, {core::int b = 0}) → core::int;
   abstract method method5b({core::int a = 0, core::int b = 0}) → core::int;
-  abstract method method5c({required core::int a, required core::int b}) → core::int;
-  abstract method method6a(core::int? a, {core::int? b}) → core::int?;
-  abstract method method6b({core::int? a, core::int? b}) → core::int?;
-  abstract method method6c({required core::int? a, required core::int? b}) → core::int?;
+  abstract method method5c({required core::int a = null, required core::int b = null}) → core::int;
+  abstract method method6a(core::int? a, {core::int? b = null}) → core::int?;
+  abstract method method6b({core::int? a = null, core::int? b = null}) → core::int?;
+  abstract method method6c({required core::int? a = null, required core::int? b = null}) → core::int?;
   abstract get getter1() → core::int;
   abstract get getter2() → core::int?;
   abstract set setter1(core::int value) → void;
@@ -107,21 +107,21 @@
     ;
   method method4a(core::int? a, core::int? b) → core::int?
     ;
-  method method4b(core::int? a, [core::int? b]) → core::int?
+  method method4b(core::int? a, [core::int? b = null]) → core::int?
     ;
-  method method4c([core::int? a, core::int? b]) → core::int?
+  method method4c([core::int? a = null, core::int? b = null]) → core::int?
     ;
   method method5a(core::int a, {core::int b = 0}) → core::int
     ;
   method method5b({core::int a = 0, core::int b = 0}) → core::int
     ;
-  method method5c({required core::int a, required core::int b}) → core::int
+  method method5c({required core::int a = null, required core::int b = null}) → core::int
     ;
-  method method6a(core::int? a, {core::int? b}) → core::int?
+  method method6a(core::int? a, {core::int? b = null}) → core::int?
     ;
-  method method6b({core::int? a, core::int? b}) → core::int?
+  method method6b({core::int? a = null, core::int? b = null}) → core::int?
     ;
-  method method6c({required core::int? a, required core::int? b}) → core::int?
+  method method6c({required core::int? a = null, required core::int? b = null}) → core::int?
     ;
   get getter1() → core::int
     ;
@@ -189,27 +189,27 @@
     ;
   method method3a(core::int* a, core::int* b) → core::int*
     ;
-  method method3b(core::int* a, [core::int* b]) → core::int*
+  method method3b(core::int* a, [core::int* b = null]) → core::int*
     ;
-  method method3c([core::int* a, core::int* b]) → core::int*
+  method method3c([core::int* a = null, core::int* b = null]) → core::int*
     ;
   method method4a(core::int* a, core::int* b) → core::int*
     ;
-  method method4b(core::int* a, [core::int* b]) → core::int*
+  method method4b(core::int* a, [core::int* b = null]) → core::int*
     ;
-  method method4c([core::int* a, core::int* b]) → core::int*
+  method method4c([core::int* a = null, core::int* b = null]) → core::int*
     ;
-  method method5a(core::int* a, {core::int* b}) → core::int*
+  method method5a(core::int* a, {core::int* b = null}) → core::int*
     ;
-  method method5b({core::int* a, core::int* b}) → core::int*
+  method method5b({core::int* a = null, core::int* b = null}) → core::int*
     ;
-  method method5c({core::int* a, core::int* b}) → core::int*
+  method method5c({core::int* a = null, core::int* b = null}) → core::int*
     ;
-  method method6a(core::int* a, {core::int* b}) → core::int*
+  method method6a(core::int* a, {core::int* b = null}) → core::int*
     ;
-  method method6b({core::int* a, core::int* b}) → core::int*
+  method method6b({core::int* a = null, core::int* b = null}) → core::int*
     ;
-  method method6c({core::int* a, core::int* b}) → core::int*
+  method method6c({core::int* a = null, core::int* b = null}) → core::int*
     ;
   get getter1() → core::int*
     ;
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.modular.expect
index f168a4e..e52566f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.modular.expect
@@ -11,7 +11,7 @@
   synthetic constructor •() → self::_RenderAnimatedOpacity&RenderProxyBox&RenderProxyBoxMixin
     : super mai::RenderProxyBox::•()
     ;
-  mixin-super-stub method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position}) → core::bool
+  mixin-super-stub method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool
     return super.{mai::RenderProxyBoxMixin::hitTestChildren}(result, position: position);
 }
 abstract class _RenderAnimatedOpacity&RenderProxyBox&RenderProxyBoxMixin&RenderAnimatedOpacityMixin = self::_RenderAnimatedOpacity&RenderProxyBox&RenderProxyBoxMixin with self::RenderAnimatedOpacityMixin<mai::RenderBox> /*isAnonymousMixin*/  {
@@ -27,3 +27,7 @@
 static method main() → dynamic {
   new self::RenderAnimatedOpacity::•();
 }
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.outline.expect
index c282428..1d90524 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_dill2/main.dart.weak.outline.expect
@@ -64,9 +64,9 @@
 abstract class RenderBox extends mai::RenderObject {
   synthetic constructor •() → mai::RenderBox
     ;
-  method hitTest(mai::BoxHitTestResult result, {required mai::Offset position}) → core::bool
+  method hitTest(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool
     ;
-  method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position}) → core::bool
+  method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool
     ;
 }
 abstract class RenderObjectWithChildMixin<ChildType extends mai::RenderObject> extends mai::RenderObject /*isMixinDeclaration*/  {
@@ -79,8 +79,8 @@
     ;
 }
 abstract class RenderProxyBoxMixin<T extends mai::RenderBox> extends mai::_RenderProxyBoxMixin&RenderBox&RenderObjectWithChildMixin<mai::RenderProxyBoxMixin::T> /*isMixinDeclaration*/  {
-  @#C1
-  method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position}) → core::bool
+  @#C2
+  method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool
     ;
 }
 abstract class _RenderProxyBox&RenderBox&RenderObjectWithChildMixin extends mai::RenderBox implements mai::RenderObjectWithChildMixin<mai::RenderBox> /*isAnonymousMixin,isEliminatedMixin*/  {
@@ -95,8 +95,8 @@
   synthetic constructor •() → mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin
     : super mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin::•()
     ;
-  @#C1
-  method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position}) → core::bool
+  @#C2
+  method hitTestChildren(mai::BoxHitTestResult result, {required mai::Offset position = #C1}) → core::bool
     ;
 }
 class RenderProxyBox extends mai::_RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin {
@@ -105,5 +105,6 @@
 }
 
 constants  {
-  #C1 = core::_Override {}
+  #C1 = null
+  #C2 = core::_Override {}
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.outline.expect
index d463ddf..a0aeef1 100644
--- a/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/nsm_from_opt_in.dart.weak.outline.expect
@@ -48,7 +48,7 @@
 abstract class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     ;
-  abstract method method(core::int* i, {dynamic optional}) → core::int*;
+  abstract method method(core::int* i, {dynamic optional = null}) → core::int*;
   abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
   abstract method genericMethod2<T extends core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
   abstract method genericMethod3<T extends core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
@@ -93,7 +93,7 @@
 abstract class C1 extends core::Object {
   synthetic constructor •() → nsm::C1
     ;
-  abstract method method(core::int? i, {dynamic optional}) → core::int;
+  abstract method method(core::int? i, {dynamic optional = null}) → core::int;
   abstract method genericMethod1<T extends core::Object? = dynamic>(nsm::C1::genericMethod1::T% t) → nsm::C1::genericMethod1::T%;
   abstract method genericMethod2<T extends core::Object?>(nsm::C1::genericMethod2::T% t) → nsm::C1::genericMethod2::T%;
   abstract method genericMethod3<T extends core::Object>(nsm::C1::genericMethod3::T t) → nsm::C1::genericMethod3::T;
diff --git a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.outline.expect
index 0817c84..327d98f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/required_name_override.dart.weak.outline.expect
@@ -25,7 +25,7 @@
 class B extends core::Object {
   synthetic constructor •() → self::B
     ;
-  method test_default({core::int? i}) → void
+  method test_default({core::int? i = null}) → void
     ;
   method test_nondefault({core::int? i = 1}) → void
     ;
@@ -33,11 +33,11 @@
 class A extends self::B implements req::C {
   synthetic constructor •() → self::A
     ;
-  method test_default({required core::int? i}) → void
+  method test_default({required core::int? i = null}) → void
     ;
-  method test_nondefault({required core::int? i}) → void
+  method test_nondefault({required core::int? i = null}) → void
     ;
-  method test_legacy({required core::int? i}) → void
+  method test_legacy({required core::int? i = null}) → void
     ;
   abstract member-signature operator /*isLegacy*/ ==(dynamic other) → core::bool*; -> core::Object::==
 }
@@ -51,7 +51,7 @@
 class C extends core::Object {
   synthetic constructor •() → req::C*
     ;
-  method test_legacy({core::int* i}) → void
+  method test_legacy({core::int* i = null}) → void
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/nnbd_mixed/required_parameter_mixed_from_opt_out.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/required_parameter_mixed_from_opt_out.dart.weak.outline.expect
index 1e8de64..a448ffc 100644
--- a/pkg/front_end/testcases/nnbd_mixed/required_parameter_mixed_from_opt_out.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/required_parameter_mixed_from_opt_out.dart.weak.outline.expect
@@ -8,7 +8,7 @@
 class Super extends core::Object {
   synthetic constructor •() → self::Super
     ;
-  method method({required covariant-by-declaration core::int named}) → void
+  method method({required covariant-by-declaration core::int named = null}) → void
     ;
 }
 abstract class _Class&Super&Mixin = self::Super with req::Mixin /*isAnonymousMixin*/  {
@@ -26,7 +26,7 @@
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     ;
-  method method({required covariant-by-declaration core::int named}) → void
+  method method({required covariant-by-declaration core::int named = null}) → void
     ;
 }
 static method main() → dynamic
@@ -37,7 +37,7 @@
 import "dart:core" as core;
 
 abstract class Mixin extends core::Object /*isMixinDeclaration*/  {
-  method method({core::int* named}) → void
+  method method({core::int* named = null}) → void
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
index d7affcd..344c08e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
@@ -43,7 +43,7 @@
 class MockCat3 extends self::MockCat2 implements self::Cat {
   synthetic constructor •() → self::MockCat3*
     ;
-  no-such-method-forwarder method eatFood(core::String* food, {core::double* amount}) → core::bool*
+  no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = null}) → core::bool*
     return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#amount: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
 }
 class MockCat4 extends self::MockCat2 implements self::HungryCat {
@@ -55,7 +55,7 @@
 abstract class HungryCat extends core::Object {
   synthetic constructor •() → self::HungryCat*
     ;
-  abstract method eatFood(core::String* food, {core::double* amount, core::double* yetAnother}) → core::bool*;
+  abstract method eatFood(core::String* food, {core::double* amount = null, core::double* yetAnother = null}) → core::bool*;
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
index 595f2f9..8be6aa2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
@@ -10,7 +10,7 @@
     ;
   abstract set foo(core::int* value) → void;
   abstract get bar() → core::int*;
-  abstract method baz(core::int* x, {core::String* y, core::double* z}) → void;
+  abstract method baz(core::int* x, {core::String* y = null, core::double* z = null}) → void;
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_32660.dart.weak.outline.expect
index d282494..d6cfde1 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.weak.outline.expect
@@ -44,7 +44,7 @@
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
-  method foo(core::int* x, {core::int* y}) → dynamic
+  method foo(core::int* x, {core::int* y = null}) → dynamic
     ;
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -83,7 +83,7 @@
 class E extends self::D {
   synthetic constructor •() → self::E*
     ;
-  abstract method foo(core::int* x, {core::int* y}) → dynamic;
+  abstract method foo(core::int* x, {core::int* y = null}) → dynamic;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
 }
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.outline.expect
index d5ecfdf..f427dbb 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.weak.outline.expect
@@ -23,7 +23,7 @@
     ;
   method f1(covariant-by-class core::int* x) → void
     ;
-  method f2(covariant-by-class core::int* x, [covariant-by-class self::C::U* y]) → void
+  method f2(covariant-by-class core::int* x, [covariant-by-class self::C::U* y = null]) → void
     ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -41,7 +41,7 @@
     ;
   method f1(covariant-by-class core::int* x) → void
     ;
-  method f2(covariant-by-class core::int* x, [covariant-by-class self::D::U* y]) → void
+  method f2(covariant-by-class core::int* x, [covariant-by-class self::D::U* y = null]) → void
     ;
 }
 static method g1(self::C<core::num*>* c) → void
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.outline.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.outline.expect
index 2528b84..232826f 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.weak.outline.expect
@@ -26,8 +26,8 @@
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
-  abstract method f([covariant-by-class self::I::T* x]) → void;
-  abstract method g({covariant-by-class self::I::T* x}) → void;
+  abstract method f([covariant-by-class self::I::T* x = null]) → void;
+  abstract method g({covariant-by-class self::I::T* x = null}) → void;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.outline.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.outline.expect
index 06e1b40..3139116 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.weak.outline.expect
@@ -7,7 +7,7 @@
     ;
   method f(covariant-by-class self::B::T* x) → void
     ;
-  method g({covariant-by-class self::B::T* x}) → void
+  method g({covariant-by-class self::B::T* x = null}) → void
     ;
   method h<covariant-by-class U extends self::B::T*>() → void
     ;
diff --git a/pkg/front_end/testcases/super_parameters/default_values.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/default_values.dart.weak.outline.expect
index fd3f672..e490058 100644
--- a/pkg/front_end/testcases/super_parameters/default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/default_values.dart.weak.outline.expect
@@ -67,7 +67,7 @@
     ;
 }
 class C5 extends self::S5 {
-  constructor •([core::int x]) → self::C5
+  constructor •([core::int x = null]) → self::C5
     ;
 }
 class S6 extends core::Object {
@@ -77,11 +77,11 @@
 }
 class C6 extends self::S6 {
   field core::int? b;
-  constructor •([core::int? x]) → self::C6
+  constructor •([core::int? x = null]) → self::C6
     ;
 }
 class D6 extends self::C6 {
-  constructor •([core::int x]) → self::D6
+  constructor •([core::int x = null]) → self::D6
     ;
 }
 class S7 extends core::Object {
@@ -134,7 +134,7 @@
     ;
 }
 class Bp extends self::Ap {
-  constructor •([core::int x]) → self::Bp
+  constructor •([core::int x = null]) → self::Bp
     ;
   constructor req(core::int x) → self::Bp
     ;
@@ -144,9 +144,9 @@
     ;
 }
 class Bn extends self::An {
-  constructor •({core::int x}) → self::Bn
+  constructor •({core::int x = null}) → self::Bn
     ;
-  constructor req({required core::int x}) → self::Bn
+  constructor req({required core::int x = null}) → self::Bn
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/super_parameters/issue48142.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/issue48142.dart.weak.outline.expect
index 00d1860..c9f3c12 100644
--- a/pkg/front_end/testcases/super_parameters/issue48142.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48142.dart.weak.outline.expect
@@ -20,15 +20,15 @@
     ;
 }
 class C21 extends self::S2 {
-  constructor •({dynamic foo, core::String one = "1", dynamic bar, dynamic baz, core::int three = 3, core::num five = 3.14}) → self::C21
+  constructor •({dynamic foo = null, core::String one = "1", dynamic bar = null, dynamic baz = null, core::int three = 3, core::num five = 3.14}) → self::C21
     ;
 }
 class C22 extends self::S2 {
-  constructor •({dynamic foo, core::List<core::String> six = const <core::String>["six"], dynamic bar, dynamic baz, core::double four = 4.0, core::bool two = false}) → self::C22
+  constructor •({dynamic foo = null, core::List<core::String> six = const <core::String>["six"], dynamic bar = null, dynamic baz = null, core::double four = 4.0, core::bool two = false}) → self::C22
     ;
 }
 class C23 extends self::S2 {
-  constructor •({core::int three = 3, dynamic foo, core::String one = "1", core::double four = 4.0, dynamic bar, core::bool two = false, dynamic baz}) → self::C23
+  constructor •({core::int three = 3, dynamic foo = null, core::String one = "1", core::double four = 4.0, dynamic bar = null, core::bool two = false, dynamic baz = null}) → self::C23
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/super_parameters/issue48642.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/issue48642.dart.weak.outline.expect
index 0c84a13..e395e95 100644
--- a/pkg/front_end/testcases/super_parameters/issue48642.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48642.dart.weak.outline.expect
@@ -51,17 +51,17 @@
     ;
 }
 class A1 extends core::Object {
-  constructor •({dynamic x, dynamic y}) → self::A1
+  constructor •({dynamic x = null, dynamic y = null}) → self::A1
     ;
 }
 class B1 extends self::A1 {
-  constructor foo({dynamic x}) → self::B1
+  constructor foo({dynamic x = null}) → self::B1
     ;
-  constructor bar({dynamic x}) → self::B1
+  constructor bar({dynamic x = null}) → self::B1
     ;
 }
 class A2 extends core::Object {
-  constructor •(dynamic x, {dynamic y}) → self::A2
+  constructor •(dynamic x, {dynamic y = null}) → self::A2
     ;
 }
 class B2 extends self::A2 {
@@ -71,28 +71,28 @@
     ;
 }
 class A3 extends core::Object {
-  constructor •(dynamic x, {dynamic y}) → self::A3
+  constructor •(dynamic x, {dynamic y = null}) → self::A3
     ;
 }
 class B3 extends self::A3 {
-  constructor foo({dynamic y}) → self::B3
+  constructor foo({dynamic y = null}) → self::B3
     ;
-  constructor bar({dynamic y}) → self::B3
+  constructor bar({dynamic y = null}) → self::B3
     ;
 }
 class A4 extends core::Object /*hasConstConstructor*/  {
-  const constructor •({dynamic x, dynamic y}) → self::A4
+  const constructor •({dynamic x = null, dynamic y = null}) → self::A4
     : super core::Object::•()
     ;
 }
 class B4 extends self::A4 {
-  constructor foo({dynamic x}) → self::B4
+  constructor foo({dynamic x = null}) → self::B4
     ;
-  constructor bar({dynamic x}) → self::B4
+  constructor bar({dynamic x = null}) → self::B4
     ;
 }
 class A5 extends core::Object /*hasConstConstructor*/  {
-  const constructor •(dynamic x, {dynamic y}) → self::A5
+  const constructor •(dynamic x, {dynamic y = null}) → self::A5
     : super core::Object::•()
     ;
 }
@@ -103,26 +103,26 @@
     ;
 }
 class A6 extends core::Object /*hasConstConstructor*/  {
-  const constructor •(dynamic x, {dynamic y}) → self::A6
+  const constructor •(dynamic x, {dynamic y = null}) → self::A6
     : super core::Object::•()
     ;
 }
 class B6 extends self::A6 {
-  constructor foo({dynamic y}) → self::B6
+  constructor foo({dynamic y = null}) → self::B6
     ;
-  constructor bar({dynamic y}) → self::B6
+  constructor bar({dynamic y = null}) → self::B6
     ;
 }
 class A7 extends core::Object /*hasConstConstructor*/  {
-  const constructor •({dynamic x, dynamic y}) → self::A7
+  const constructor •({dynamic x = null, dynamic y = null}) → self::A7
     : super core::Object::•()
     ;
 }
 class B7 extends self::A7 /*hasConstConstructor*/  {
-  const constructor foo({dynamic x}) → self::B7
+  const constructor foo({dynamic x = null}) → self::B7
     : super self::A7::•(y: new self::Test::foo(), x: x)
     ;
-  const constructor bar({dynamic x}) → self::B7
+  const constructor bar({dynamic x = null}) → self::B7
     : super self::A7::•(y: invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:70:42: Error: Cannot invoke a non-'const' factory where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const B7.bar({super.x}) : super(y: new Test.bar()); // Error.
@@ -130,7 +130,7 @@
     ;
 }
 class A8 extends core::Object /*hasConstConstructor*/  {
-  const constructor •(dynamic x, {dynamic y}) → self::A8
+  const constructor •(dynamic x, {dynamic y = null}) → self::A8
     : super core::Object::•()
     ;
 }
@@ -146,15 +146,15 @@
     ;
 }
 class A9 extends core::Object /*hasConstConstructor*/  {
-  const constructor •(dynamic x, {dynamic y}) → self::A9
+  const constructor •(dynamic x, {dynamic y = null}) → self::A9
     : super core::Object::•()
     ;
 }
 class B9 extends self::A9 /*hasConstConstructor*/  {
-  const constructor foo({dynamic y}) → self::B9
+  const constructor foo({dynamic y = null}) → self::B9
     : super self::A9::•(new self::Test::foo(), y: y)
     ;
-  const constructor bar({dynamic y}) → self::B9
+  const constructor bar({dynamic y = null}) → self::B9
     : super self::A9::•(invalid-expression "pkg/front_end/testcases/super_parameters/issue48642.dart:88:39: Error: Cannot invoke a non-'const' factory where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const B9.bar({super.y}) : super(new Test.bar()); // Error.
diff --git a/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.expect b/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.expect
index bbbaeed..05ade25 100644
--- a/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.expect
@@ -19,7 +19,7 @@
     ;
 }
 abstract class _C&B&Mixin = self::B<self::A> with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •({self::A field}) → self::_C&B&Mixin
+  synthetic constructor •({self::A field = #C1}) → self::_C&B&Mixin
     : super self::B::•(field: field)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.transformed.expect b/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.transformed.expect
index 1acdeb6..f71d862 100644
--- a/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48708.dart.strong.transformed.expect
@@ -19,7 +19,7 @@
     ;
 }
 abstract class _C&B&Mixin extends self::B<self::A> implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •({self::A field}) → self::_C&B&Mixin
+  synthetic constructor •({self::A field = #C1}) → self::_C&B&Mixin
     : super self::B::•(field: field)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.expect b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.expect
index bbbaeed..05ade25 100644
--- a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.expect
@@ -19,7 +19,7 @@
     ;
 }
 abstract class _C&B&Mixin = self::B<self::A> with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •({self::A field}) → self::_C&B&Mixin
+  synthetic constructor •({self::A field = #C1}) → self::_C&B&Mixin
     : super self::B::•(field: field)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.modular.expect b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.modular.expect
index bbbaeed..05ade25 100644
--- a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.modular.expect
@@ -19,7 +19,7 @@
     ;
 }
 abstract class _C&B&Mixin = self::B<self::A> with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •({self::A field}) → self::_C&B&Mixin
+  synthetic constructor •({self::A field = #C1}) → self::_C&B&Mixin
     : super self::B::•(field: field)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.outline.expect
index 4a28ead1..3450f1e 100644
--- a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.outline.expect
@@ -12,16 +12,16 @@
 }
 abstract class B<D extends core::Object? = dynamic> extends core::Object {
   final field self::B::D% field;
-  constructor •({required self::B::D% field}) → self::B<self::B::D%>
+  constructor •({required self::B::D% field = null}) → self::B<self::B::D%>
     ;
 }
 abstract class _C&B&Mixin = self::B<self::A> with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •({self::A field}) → self::_C&B&Mixin
+  synthetic constructor •({self::A field = null}) → self::_C&B&Mixin
     : super self::B::•(field: field)
     ;
 }
 class C extends self::_C&B&Mixin {
-  constructor •({required self::A field}) → self::C
+  constructor •({required self::A field = null}) → self::C
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.transformed.expect b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.transformed.expect
index 1acdeb6..f71d862 100644
--- a/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/super_parameters/issue48708.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
     ;
 }
 abstract class _C&B&Mixin extends self::B<self::A> implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •({self::A field}) → self::_C&B&Mixin
+  synthetic constructor •({self::A field = #C1}) → self::_C&B&Mixin
     : super self::B::•(field: field)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/no_coercions.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/no_coercions.dart.weak.outline.expect
index 7a8c89a..2882ba7 100644
--- a/pkg/front_end/testcases/super_parameters/no_coercions.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/no_coercions.dart.weak.outline.expect
@@ -13,13 +13,13 @@
     ;
 }
 class A2 extends core::Object {
-  constructor •({required core::String x}) → self::A2
+  constructor •({required core::String x = null}) → self::A2
     ;
 }
 class B2 extends self::A2 {
-  constructor one({required dynamic x}) → self::B2
+  constructor one({required dynamic x = null}) → self::B2
     ;
-  constructor two({required dynamic x}) → self::B2
+  constructor two({required dynamic x = null}) → self::B2
     ;
 }
 class A3 extends core::Object {
@@ -33,13 +33,13 @@
     ;
 }
 class A4 extends core::Object {
-  constructor •({required (core::double) → core::num f}) → self::A4
+  constructor •({required (core::double) → core::num f = null}) → self::A4
     ;
 }
 class B4 extends self::A4 {
-  constructor one({required <X extends core::Object? = dynamic>(core::double) → X% f}) → self::B4
+  constructor one({required <X extends core::Object? = dynamic>(core::double) → X% f = null}) → self::B4
     ;
-  constructor two({required <X extends core::Object? = dynamic>(core::double) → X% f}) → self::B4
+  constructor two({required <X extends core::Object? = dynamic>(core::double) → X% f = null}) → self::B4
     ;
 }
 abstract class C5 extends core::Object {
@@ -58,21 +58,21 @@
     ;
 }
 class A6 extends core::Object {
-  constructor •({required (core::int, core::num) → core::String f}) → self::A6
+  constructor •({required (core::int, core::num) → core::String f = null}) → self::A6
     ;
 }
 class B6 extends self::A6 {
-  constructor one({required self::C5 f}) → self::B6
+  constructor one({required self::C5 f = null}) → self::B6
     ;
-  constructor two({required self::C5 f}) → self::B6
+  constructor two({required self::C5 f = null}) → self::B6
     ;
 }
 class A7 extends core::Object {
-  constructor •({required core::int x1, required core::int x2, required (core::Object) → core::bool f1, required (core::Object) → core::bool f2, required (dynamic) → void g1, required (dynamic) → void g2}) → self::A7
+  constructor •({required core::int x1 = null, required core::int x2 = null, required (core::Object) → core::bool f1 = null, required (core::Object) → core::bool f2 = null, required (dynamic) → void g1 = null, required (dynamic) → void g2 = null}) → self::A7
     ;
 }
 class B7 extends self::A7 {
-  constructor •({required dynamic x1, required dynamic x2, required <X extends core::Object? = dynamic>(core::Object) → X% f1, required <X extends core::Object? = dynamic>(core::Object) → X% f2, required <X extends core::Object? = dynamic>(X%) → void g1, required <X extends core::Object? = dynamic>(X%) → void g2}) → self::B7
+  constructor •({required dynamic x1 = null, required dynamic x2 = null, required <X extends core::Object? = dynamic>(core::Object) → X% f1 = null, required <X extends core::Object? = dynamic>(core::Object) → X% f2 = null, required <X extends core::Object? = dynamic>(X%) → void g1 = null, required <X extends core::Object? = dynamic>(X%) → void g2 = null}) → self::B7
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/super_parameters/simple_inference.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/simple_inference.dart.weak.outline.expect
index 3d11aa3..407250c 100644
--- a/pkg/front_end/testcases/super_parameters/simple_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/simple_inference.dart.weak.outline.expect
@@ -10,7 +10,7 @@
     ;
   constructor named2(core::int foo) → self::A1
     ;
-  constructor named3({required core::int foo}) → self::A1
+  constructor named3({required core::int foo = null}) → self::A1
     ;
 }
 class B1 extends self::A1 {
@@ -20,17 +20,17 @@
     ;
   constructor named2(core::int foo) → self::B1
     ;
-  constructor named3({required core::int foo}) → self::B1
+  constructor named3({required core::int foo = null}) → self::B1
     ;
 }
 class A2 extends core::Object {
   final field core::int foo;
   final field core::String bar;
-  constructor •({required core::int foo, required core::String bar}) → self::A2
+  constructor •({required core::int foo = null, required core::String bar = null}) → self::A2
     ;
 }
 class B2 extends self::A2 {
-  constructor •({required core::String bar, required core::int foo}) → self::B2
+  constructor •({required core::String bar = null, required core::int foo = null}) → self::B2
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/super_parameters/simple_named_super_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/simple_named_super_parameters.dart.weak.outline.expect
index 99e1ef3..e8c6dc4 100644
--- a/pkg/front_end/testcases/super_parameters/simple_named_super_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/simple_named_super_parameters.dart.weak.outline.expect
@@ -4,21 +4,21 @@
 
 class A1 extends core::Object {
   final field core::int foo;
-  constructor •({required core::int foo}) → self::A1
+  constructor •({required core::int foo = null}) → self::A1
     ;
 }
 class B1 extends self::A1 {
-  constructor •({required core::int foo}) → self::B1
+  constructor •({required core::int foo = null}) → self::B1
     ;
 }
 class C1 extends self::A1 {
-  constructor •({required core::int foo}) → self::C1
+  constructor •({required core::int foo = null}) → self::C1
     ;
 }
 class A2 extends core::Object {
   final field core::int foo;
   final field core::String bar;
-  constructor •({required core::int foo, required core::String bar}) → self::A2
+  constructor •({required core::int foo = null, required core::String bar = null}) → self::A2
     ;
 }
 class B2 extends self::A2 {
@@ -26,9 +26,9 @@
     ;
 }
 class C2 extends self::A2 {
-  constructor •({required core::int foo}) → self::C2
+  constructor •({required core::int foo = null}) → self::C2
     ;
-  constructor other({required core::int foo}) → self::C2
+  constructor other({required core::int foo = null}) → self::C2
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/super_parameters/super_key/main.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/super_key/main.dart.weak.outline.expect
index 76d37eb..5b4efe7 100644
--- a/pkg/front_end/testcases/super_parameters/super_key/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/super_key/main.dart.weak.outline.expect
@@ -5,7 +5,7 @@
 import "org-dartlang-testcase:///main_lib.dart";
 
 class GalleryApp extends mai::StatefulWidget /*hasConstConstructor*/  {
-  const constructor •({mai::Key? key}) → self::GalleryApp
+  const constructor •({mai::Key? key = #C1}) → self::GalleryApp
     : super mai::StatefulWidget::•(key: key)
     ;
 }
@@ -22,7 +22,11 @@
 }
 class StatefulWidget extends core::Object /*hasConstConstructor*/  {
   final field mai::Key? key;
-  const constructor •({mai::Key? key}) → mai::StatefulWidget
+  const constructor •({mai::Key? key = #C1}) → mai::StatefulWidget
     : mai::StatefulWidget::key = key, super core::Object::•()
     ;
 }
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.expect b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.expect
index c1a5b49..1d3e740 100644
--- a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.expect
@@ -161,7 +161,7 @@
     ;
 }
 class C9 = syn::A9 with self::B9 {
-  synthetic constructor •([core::int? a]) → self::C9
+  synthetic constructor •([core::int? a = #C3]) → self::C9
     : super syn::A9::•(a)
     ;
 }
@@ -210,7 +210,7 @@
     ;
 }
 class C8 = syn::A8 with syn::B8 {
-  synthetic constructor •({core::int? a}) → syn::C8
+  synthetic constructor •({core::int? a = #C3}) → syn::C8
     : super syn::A8::•(a: a)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.transformed.expect
index 782b4ee..8995764 100644
--- a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.strong.transformed.expect
@@ -161,7 +161,7 @@
     ;
 }
 class C9 extends syn::A9 implements self::B9 /*isEliminatedMixin*/  {
-  synthetic constructor •([core::int? a]) → self::C9
+  synthetic constructor •([core::int? a = #C3]) → self::C9
     : super syn::A9::•(a)
     ;
 }
@@ -210,7 +210,7 @@
     ;
 }
 class C8 extends syn::A8 implements syn::B8 /*isEliminatedMixin*/  {
-  synthetic constructor •({core::int? a}) → syn::C8
+  synthetic constructor •({core::int? a = #C3}) → syn::C8
     : super syn::A8::•(a: a)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.expect b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.expect
index c1a5b49..1d3e740 100644
--- a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.expect
@@ -161,7 +161,7 @@
     ;
 }
 class C9 = syn::A9 with self::B9 {
-  synthetic constructor •([core::int? a]) → self::C9
+  synthetic constructor •([core::int? a = #C3]) → self::C9
     : super syn::A9::•(a)
     ;
 }
@@ -210,7 +210,7 @@
     ;
 }
 class C8 = syn::A8 with syn::B8 {
-  synthetic constructor •({core::int? a}) → syn::C8
+  synthetic constructor •({core::int? a = #C3}) → syn::C8
     : super syn::A8::•(a: a)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.modular.expect b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.modular.expect
index c1a5b49..1d3e740 100644
--- a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.modular.expect
@@ -161,7 +161,7 @@
     ;
 }
 class C9 = syn::A9 with self::B9 {
-  synthetic constructor •([core::int? a]) → self::C9
+  synthetic constructor •([core::int? a = #C3]) → self::C9
     : super syn::A9::•(a)
     ;
 }
@@ -210,7 +210,7 @@
     ;
 }
 class C8 = syn::A8 with syn::B8 {
-  synthetic constructor •({core::int? a}) → syn::C8
+  synthetic constructor •({core::int? a = #C3}) → syn::C8
     : super syn::A8::•(a: a)
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.outline.expect
index 8e802f7..8752d3d 100644
--- a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.outline.expect
@@ -131,7 +131,7 @@
     ;
 }
 class D8 extends syn::C8 {
-  constructor •({core::int? a}) → self::D8
+  constructor •({core::int? a = null}) → self::D8
     ;
 }
 class B9 extends core::Object {
@@ -139,12 +139,12 @@
     ;
 }
 class C9 = syn::A9 with self::B9 {
-  synthetic constructor •([core::int? a]) → self::C9
+  synthetic constructor •([core::int? a = null]) → self::C9
     : super syn::A9::•(a)
     ;
 }
 class D9 extends self::C9 {
-  constructor •([core::int? a]) → self::D9
+  constructor •([core::int? a = null]) → self::D9
     ;
 }
 static method main() → dynamic
@@ -175,7 +175,7 @@
 }
 class A8 extends core::Object {
   final field core::int? a;
-  constructor •({core::int? a}) → syn::A8
+  constructor •({core::int? a = null}) → syn::A8
     ;
 }
 class B8 extends core::Object {
@@ -183,12 +183,12 @@
     ;
 }
 class C8 = syn::A8 with syn::B8 {
-  synthetic constructor •({core::int? a}) → syn::C8
+  synthetic constructor •({core::int? a = null}) → syn::C8
     : super syn::A8::•(a: a)
     ;
 }
 class A9 extends core::Object {
   final field core::int? a;
-  constructor •([core::int? a]) → syn::A9
+  constructor •([core::int? a = null]) → syn::A9
     ;
 }
diff --git a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.transformed.expect
index 782b4ee..8995764 100644
--- a/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/super_parameters/synthesized_super_constructor_with_parameters.dart.weak.transformed.expect
@@ -161,7 +161,7 @@
     ;
 }
 class C9 extends syn::A9 implements self::B9 /*isEliminatedMixin*/  {
-  synthetic constructor •([core::int? a]) → self::C9
+  synthetic constructor •([core::int? a = #C3]) → self::C9
     : super syn::A9::•(a)
     ;
 }
@@ -210,7 +210,7 @@
     ;
 }
 class C8 extends syn::A8 implements syn::B8 /*isEliminatedMixin*/  {
-  synthetic constructor •({core::int? a}) → syn::C8
+  synthetic constructor •({core::int? a = #C3}) → syn::C8
     : super syn::A8::•(a: a)
     ;
 }
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.outline.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.outline.expect
index 34eccb8..dbf9eec 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.outline.expect
@@ -49,25 +49,25 @@
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3
     ;
-  operator >>>([dynamic a]) → dynamic
+  operator >>>([dynamic a = null]) → dynamic
     ;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4
     ;
-  operator >>>({dynamic a}) → dynamic
+  operator >>>({dynamic a = null}) → dynamic
     ;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5
     ;
-  operator >>>(dynamic a, [dynamic b]) → dynamic
+  operator >>>(dynamic a, [dynamic b = null]) → dynamic
     ;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6
     ;
-  operator >>>(dynamic a, {dynamic b}) → dynamic
+  operator >>>(dynamic a, {dynamic b = null}) → dynamic
     ;
 }
 class Operators7 extends core::Object {
diff --git a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.outline.expect b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.outline.expect
index f6aa033..71cd6f2 100644
--- a/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/value_class/copy_with_call_sites.dart.weak.outline.expect
@@ -20,7 +20,7 @@
 
 class Animal extends core::Object {
   final field core::int? numberOfLegs;
-  constructor •({required core::int? numberOfLegs}) → self::Animal
+  constructor •({required core::int? numberOfLegs = null}) → self::Animal
     ;
 }
 @val::valueClass
@@ -32,9 +32,9 @@
 class Foo extends core::Object {
   field core::int? bar;
   field core::int? bar2;
-  constructor •({core::int? bar, core::int? bar2}) → self::Foo
+  constructor •({core::int? bar = null, core::int? bar2 = null}) → self::Foo
     ;
-  method copyWith({core::int bar, core::int bar2}) → self::Foo
+  method copyWith({core::int bar = null, core::int bar2 = null}) → self::Foo
     ;
 }
 @val::valueClass
diff --git a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.outline.expect b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.outline.expect
index 6b5a117..6584a35 100644
--- a/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/value_class/value_extends_non_value.dart.weak.outline.expect
@@ -7,7 +7,7 @@
 
 class Animal extends core::Object {
   final field core::int numberOfLegs;
-  constructor •({required core::int numberOfLegs}) → self::Animal
+  constructor •({required core::int numberOfLegs = null}) → self::Animal
     ;
 }
 @val::valueClass
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
index cd364ee..ce7effd 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
@@ -18,7 +18,7 @@
     ;
   method method(self::A::T% t, (self::A::U%) → void u, covariant-by-class self::A::V% v) → void
     ;
-  method method2(self::A::T% x, [self::A::T? y]) → void
+  method method2(self::A::T% x, [self::A::T? y = null]) → void
     ;
   set x(self::A::T% t) → void
     ;
@@ -44,7 +44,7 @@
   final field (self::C::T%) →? void field;
   synthetic constructor •() → self::C<self::C::T%>
     ;
-  method method(self::C::T% x, [self::C::T? y]) → void
+  method method(self::C::T% x, [self::C::T? y = null]) → void
     ;
   set x(self::C::T% t) → void
     ;
