Version 2.18.0-36.0.dev

Merge commit '4258a0579832c2195f4a492a641c79e62cab146f' into 'dev'
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 1d36b9f..0a4424c 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
@@ -9,7 +9,6 @@
 import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show Token;
 import 'package:kernel/ast.dart'
     show DartType, DynamicType, Expression, VariableDeclaration;
-import 'package:kernel/src/legacy_erasure.dart';
 
 import '../constant_context.dart' show ConstantContext;
 import '../kernel/body_builder.dart' show BodyBuilder;
@@ -147,9 +146,6 @@
       SourceLibraryBuilder library, int functionNestingLevel) {
     if (variable == null) {
       DartType? builtType = type?.build(library);
-      if (!library.isNonNullableByDefault && builtType != null) {
-        builtType = legacyErasure(builtType);
-      }
       variable = new VariableDeclarationImpl(
           name == noNameSentinel ? null : name, functionNestingLevel,
           type: builtType,
diff --git a/pkg/front_end/lib/src/fasta/builder/library_builder.dart b/pkg/front_end/lib/src/fasta/builder/library_builder.dart
index 423e617..2c6f4b3 100644
--- a/pkg/front_end/lib/src/fasta/builder/library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/library_builder.dart
@@ -73,8 +73,6 @@
 
   NameIterator get nameIterator;
 
-  Builder? addBuilder(String? name, Builder declaration, int charOffset);
-
   void addExporter(LibraryBuilder exporter,
       List<CombinatorBuilder>? combinators, int charOffset);
 
diff --git a/pkg/front_end/lib/src/fasta/builder/nullability_builder.dart b/pkg/front_end/lib/src/fasta/builder/nullability_builder.dart
index d2f1000..db68182 100644
--- a/pkg/front_end/lib/src/fasta/builder/nullability_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/nullability_builder.dart
@@ -58,17 +58,20 @@
     // ignore: unnecessary_null_comparison
     assert(libraryBuilder != null);
 
-    Nullability ifOmitted = libraryBuilder.isNonNullableByDefault
-        ? Nullability.nonNullable
-        : Nullability.legacy;
     switch (_syntacticNullability) {
       case SyntacticNullability.legacy:
         return Nullability.legacy;
       case SyntacticNullability.nullable:
+        return libraryBuilder.isNonNullableByDefault
+            ? Nullability.nullable
+            // This is an error case.
+            : Nullability.legacy;
       case SyntacticNullability.inherent:
         return Nullability.nullable;
       case SyntacticNullability.omitted:
-        return ifOmitted;
+        return libraryBuilder.isNonNullableByDefault
+            ? Nullability.nonNullable
+            : Nullability.legacy;
     }
   }
 
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
index 6643502..a1584e3 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
@@ -102,8 +102,8 @@
     isBuiltAndMarked = true;
     if (isBuilt) return;
     isBuilt = true;
-    library.classes.forEach(addClass);
-    library.extensions.forEach(addExtension);
+    library.classes.forEach(_addClass);
+    library.extensions.forEach(_addExtension);
 
     Map<String, Map<Name, Procedure>> tearOffs = {};
     List<Procedure> nonTearOffs = [];
@@ -116,12 +116,12 @@
         nonTearOffs.add(procedure);
       }
     }
-    nonTearOffs.forEach(addMember);
-    library.procedures.forEach(addMember);
+    nonTearOffs.forEach(_addMember);
+    library.procedures.forEach(_addMember);
     for (Typedef typedef in library.typedefs) {
       addTypedef(typedef, tearOffs[typedef.name]);
     }
-    library.fields.forEach(addMember);
+    library.fields.forEach(_addMember);
 
     if (isReadyToFinalizeExports) {
       finalizeExports();
@@ -153,17 +153,16 @@
 
   @override
   void addSyntheticDeclarationOfDynamic() {
-    addBuilder("dynamic",
-        new DynamicTypeDeclarationBuilder(const DynamicType(), this, -1), -1);
+    _addBuilder("dynamic",
+        new DynamicTypeDeclarationBuilder(const DynamicType(), this, -1));
   }
 
   @override
   void addSyntheticDeclarationOfNever() {
-    addBuilder(
+    _addBuilder(
         "Never",
         new NeverTypeDeclarationBuilder(
-            const NeverType.nonNullable(), this, -1),
-        -1);
+            const NeverType.nonNullable(), this, -1));
   }
 
   @override
@@ -171,9 +170,9 @@
     // The name "Null" is declared by the class Null.
   }
 
-  void addClass(Class cls) {
+  void _addClass(Class cls) {
     DillClassBuilder classBuilder = new DillClassBuilder(cls, this);
-    addBuilder(cls.name, classBuilder, cls.fileOffset);
+    _addBuilder(cls.name, classBuilder);
     Map<String, Procedure> tearOffs = {};
     List<Procedure> nonTearOffs = [];
     for (Procedure procedure in cls.procedures) {
@@ -205,13 +204,13 @@
     }
   }
 
-  void addExtension(Extension extension) {
+  void _addExtension(Extension extension) {
     DillExtensionBuilder extensionBuilder =
         new DillExtensionBuilder(extension, this);
-    addBuilder(extension.name, extensionBuilder, extension.fileOffset);
+    _addBuilder(extension.name, extensionBuilder);
   }
 
-  void addMember(Member member) {
+  void _addMember(Member member) {
     if (member.isExtensionMember) {
       return null;
     }
@@ -233,24 +232,20 @@
           json != null ? new Map<String, String>.from(json) : null;
     } else {
       if (member is Field) {
-        addBuilder(name, new DillFieldBuilder(member, this), member.fileOffset);
+        _addBuilder(name, new DillFieldBuilder(member, this));
       } else if (member is Procedure) {
         switch (member.kind) {
           case ProcedureKind.Setter:
-            addBuilder(
-                name, new DillSetterBuilder(member, this), member.fileOffset);
+            _addBuilder(name, new DillSetterBuilder(member, this));
             break;
           case ProcedureKind.Getter:
-            addBuilder(
-                name, new DillGetterBuilder(member, this), member.fileOffset);
+            _addBuilder(name, new DillGetterBuilder(member, this));
             break;
           case ProcedureKind.Operator:
-            addBuilder(
-                name, new DillOperatorBuilder(member, this), member.fileOffset);
+            _addBuilder(name, new DillOperatorBuilder(member, this));
             break;
           case ProcedureKind.Method:
-            addBuilder(
-                name, new DillMethodBuilder(member, this), member.fileOffset);
+            _addBuilder(name, new DillMethodBuilder(member, this));
             break;
           case ProcedureKind.Factory:
             throw new UnsupportedError(
@@ -263,8 +258,7 @@
     }
   }
 
-  @override
-  Builder? addBuilder(String? name, Builder declaration, int charOffset) {
+  Builder? _addBuilder(String? name, Builder declaration) {
     if (name == null || name.isEmpty) return null;
 
     bool isSetter = declaration.isSetter;
@@ -292,8 +286,8 @@
     if (type is FunctionType && type.typedefType == null) {
       unhandled("null", "addTypedef", typedef.fileOffset, typedef.fileUri);
     }
-    addBuilder(typedef.name, new DillTypeAliasBuilder(typedef, tearOffs, this),
-        typedef.fileOffset);
+    _addBuilder(
+        typedef.name, new DillTypeAliasBuilder(typedef, tearOffs, this));
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/import.dart b/pkg/front_end/lib/src/fasta/import.dart
index 83268d3..b0a4816 100644
--- a/pkg/front_end/lib/src/fasta/import.dart
+++ b/pkg/front_end/lib/src/fasta/import.dart
@@ -62,7 +62,7 @@
 
   Uri get fileUri => importer.fileUri;
 
-  void finalizeImports(LibraryBuilder importer) {
+  void finalizeImports(SourceLibraryBuilder importer) {
     if (nativeImportPath != null) return;
     void Function(String, Builder) add;
     if (prefixBuilder == null) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index e3481a8..a367a17 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -787,7 +787,6 @@
     }
   }
 
-  @override
   Builder? addBuilder(String? name, Builder declaration, int charOffset,
       {Reference? getterReference, Reference? setterReference}) {
     // TODO(ahe): Set the parent correctly here. Could then change the
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index b99f8f5..6b14d32 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -2283,12 +2283,16 @@
         explicitTypeArguments == null &&
         calleeTypeParameters.isNotEmpty;
     bool typeChecksNeeded = !isTopLevel;
+    bool useFormalAndActualTypes = inferenceNeeded ||
+        typeChecksNeeded ||
+        isSpecialCasedBinaryOperator ||
+        isSpecialCasedTernaryOperator;
 
     List<DartType>? inferredTypes;
     Substitution? substitution;
     List<DartType>? formalTypes;
     List<DartType>? actualTypes;
-    if (inferenceNeeded || typeChecksNeeded) {
+    if (useFormalAndActualTypes) {
       formalTypes = [];
       actualTypes = [];
     }
@@ -2448,7 +2452,7 @@
               ?.add(flowAnalysis.equalityOperand_end(expression, inferredType));
           arguments.positional[index] = expression..parent = arguments;
         }
-        if (inferenceNeeded || typeChecksNeeded) {
+        if (useFormalAndActualTypes) {
           formalTypes!.add(formalType);
           actualTypes!.add(inferredType);
         }
@@ -2481,7 +2485,7 @@
         Expression expression =
             _hoist(result.expression, inferredType, hoistedExpressions);
         namedArgument.value = expression..parent = namedArgument;
-        if (inferenceNeeded || typeChecksNeeded) {
+        if (useFormalAndActualTypes) {
           formalTypes!.add(formalType);
           actualTypes!.add(inferredType);
         }
@@ -2546,8 +2550,10 @@
             named[1].fileOffset,
             name.length);
         arguments.named = [new NamedExpression(named[1].name, error)];
-        formalTypes!.removeLast();
-        actualTypes!.removeLast();
+        if (useFormalAndActualTypes) {
+          formalTypes!.removeLast();
+          actualTypes!.removeLast();
+        }
       }
     } else if (named.length > 2) {
       Map<String, NamedExpression> seenNames = <String, NamedExpression>{};
@@ -2566,8 +2572,10 @@
               expression.fileOffset,
               name.length)
             ..parent = prevNamedExpression;
-          formalTypes!.removeAt(namedTypeIndex);
-          actualTypes!.removeAt(namedTypeIndex);
+          if (useFormalAndActualTypes) {
+            formalTypes!.removeAt(namedTypeIndex);
+            actualTypes!.removeAt(namedTypeIndex);
+          }
         } else {
           seenNames[name] = expression;
           uniqueNamed.add(expression);
diff --git a/pkg/front_end/test/text_representation/data/types_opt_out.dart b/pkg/front_end/test/text_representation/data/types_opt_out.dart
index 63723ee..b864336 100644
--- a/pkg/front_end/test/text_representation/data/types_opt_out.dart
+++ b/pkg/front_end/test/text_representation/data/types_opt_out.dart
@@ -24,7 +24,7 @@
     String /*normal|limited.String**/ /*verbose.dart.core::String**/ o) {}
 voidType(void /*void*/ o) {}
 dynamicType(dynamic /*dynamic*/ o) {}
-neverType(Never /*normal|limited.Null*/ /*verbose.Null*/ o) {}
+neverType(Never /*Never**/ o) {}
 objectType(
     Object /*normal|limited.Object**/ /*verbose.dart.core::Object**/ o) {}
 genericType1(
diff --git a/pkg/front_end/testcases/general/clamp.dart b/pkg/front_end/testcases/general/clamp.dart
new file mode 100644
index 0000000..6609ff8
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart
@@ -0,0 +1,12 @@
+var a = 1.clamp(2, 3);
+var b = 1.0.clamp(2, 3);
+var c = 1.0.clamp(2.0, 3);
+var d = 1.0.clamp(2, 3.0);
+var e = 1.0.clamp(2.0, 3.0);
+final f = 1.clamp(2, 3);
+final g = 1.0.clamp(2, 3);
+final h = 1.0.clamp(2.0, 3);
+final i = 1.0.clamp(2, 3.0);
+final j = 1.0.clamp(2.0, 3.0);
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/clamp.dart.textual_outline.expect b/pkg/front_end/testcases/general/clamp.dart.textual_outline.expect
new file mode 100644
index 0000000..7ddeebd
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart.textual_outline.expect
@@ -0,0 +1,11 @@
+var a = 1.clamp(2, 3);
+var b = 1.0.clamp(2, 3);
+var c = 1.0.clamp(2.0, 3);
+var d = 1.0.clamp(2, 3.0);
+var e = 1.0.clamp(2.0, 3.0);
+final f = 1.clamp(2, 3);
+final g = 1.0.clamp(2, 3);
+final h = 1.0.clamp(2.0, 3);
+final i = 1.0.clamp(2, 3.0);
+final j = 1.0.clamp(2.0, 3.0);
+void main() {}
diff --git a/pkg/front_end/testcases/general/clamp.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/clamp.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..64b9d01
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart.textual_outline_modelled.expect
@@ -0,0 +1,11 @@
+final f = 1.clamp(2, 3);
+final g = 1.0.clamp(2, 3);
+final h = 1.0.clamp(2.0, 3);
+final i = 1.0.clamp(2, 3.0);
+final j = 1.0.clamp(2.0, 3.0);
+var a = 1.clamp(2, 3);
+var b = 1.0.clamp(2, 3);
+var c = 1.0.clamp(2.0, 3);
+var d = 1.0.clamp(2, 3.0);
+var e = 1.0.clamp(2.0, 3.0);
+void main() {}
diff --git a/pkg/front_end/testcases/general/clamp.dart.weak.expect b/pkg/front_end/testcases/general/clamp.dart.weak.expect
new file mode 100644
index 0000000..6d56fb4
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart.weak.expect
@@ -0,0 +1,15 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static field core::int a = 1.{core::num::clamp}(2, 3){(core::num, core::num) → core::int};
+static field core::num b = 1.0.{core::num::clamp}(2, 3){(core::num, core::num) → core::num};
+static field core::num c = 1.0.{core::num::clamp}(2.0, 3){(core::num, core::num) → core::num};
+static field core::num d = 1.0.{core::num::clamp}(2, 3.0){(core::num, core::num) → core::num};
+static field core::double e = 1.0.{core::num::clamp}(2.0, 3.0){(core::num, core::num) → core::double};
+static final field core::int f = 1.{core::num::clamp}(2, 3){(core::num, core::num) → core::int};
+static final field core::num g = 1.0.{core::num::clamp}(2, 3){(core::num, core::num) → core::num};
+static final field core::num h = 1.0.{core::num::clamp}(2.0, 3){(core::num, core::num) → core::num};
+static final field core::num i = 1.0.{core::num::clamp}(2, 3.0){(core::num, core::num) → core::num};
+static final field core::double j = 1.0.{core::num::clamp}(2.0, 3.0){(core::num, core::num) → core::double};
+static method main() → void {}
diff --git a/pkg/front_end/testcases/general/clamp.dart.weak.modular.expect b/pkg/front_end/testcases/general/clamp.dart.weak.modular.expect
new file mode 100644
index 0000000..6d56fb4
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart.weak.modular.expect
@@ -0,0 +1,15 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static field core::int a = 1.{core::num::clamp}(2, 3){(core::num, core::num) → core::int};
+static field core::num b = 1.0.{core::num::clamp}(2, 3){(core::num, core::num) → core::num};
+static field core::num c = 1.0.{core::num::clamp}(2.0, 3){(core::num, core::num) → core::num};
+static field core::num d = 1.0.{core::num::clamp}(2, 3.0){(core::num, core::num) → core::num};
+static field core::double e = 1.0.{core::num::clamp}(2.0, 3.0){(core::num, core::num) → core::double};
+static final field core::int f = 1.{core::num::clamp}(2, 3){(core::num, core::num) → core::int};
+static final field core::num g = 1.0.{core::num::clamp}(2, 3){(core::num, core::num) → core::num};
+static final field core::num h = 1.0.{core::num::clamp}(2.0, 3){(core::num, core::num) → core::num};
+static final field core::num i = 1.0.{core::num::clamp}(2, 3.0){(core::num, core::num) → core::num};
+static final field core::double j = 1.0.{core::num::clamp}(2.0, 3.0){(core::num, core::num) → core::double};
+static method main() → void {}
diff --git a/pkg/front_end/testcases/general/clamp.dart.weak.outline.expect b/pkg/front_end/testcases/general/clamp.dart.weak.outline.expect
new file mode 100644
index 0000000..8430489
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart.weak.outline.expect
@@ -0,0 +1,16 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static field core::int a;
+static field core::num b;
+static field core::num c;
+static field core::num d;
+static field core::double e;
+static final field core::int f;
+static final field core::num g;
+static final field core::num h;
+static final field core::num i;
+static final field core::double j;
+static method main() → void
+  ;
diff --git a/pkg/front_end/testcases/general/clamp.dart.weak.transformed.expect b/pkg/front_end/testcases/general/clamp.dart.weak.transformed.expect
new file mode 100644
index 0000000..6d56fb4
--- /dev/null
+++ b/pkg/front_end/testcases/general/clamp.dart.weak.transformed.expect
@@ -0,0 +1,15 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static field core::int a = 1.{core::num::clamp}(2, 3){(core::num, core::num) → core::int};
+static field core::num b = 1.0.{core::num::clamp}(2, 3){(core::num, core::num) → core::num};
+static field core::num c = 1.0.{core::num::clamp}(2.0, 3){(core::num, core::num) → core::num};
+static field core::num d = 1.0.{core::num::clamp}(2, 3.0){(core::num, core::num) → core::num};
+static field core::double e = 1.0.{core::num::clamp}(2.0, 3.0){(core::num, core::num) → core::double};
+static final field core::int f = 1.{core::num::clamp}(2, 3){(core::num, core::num) → core::int};
+static final field core::num g = 1.0.{core::num::clamp}(2, 3){(core::num, core::num) → core::num};
+static final field core::num h = 1.0.{core::num::clamp}(2.0, 3){(core::num, core::num) → core::num};
+static final field core::num i = 1.0.{core::num::clamp}(2, 3.0){(core::num, core::num) → core::num};
+static final field core::double j = 1.0.{core::num::clamp}(2.0, 3.0){(core::num, core::num) → core::double};
+static method main() → void {}
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.expect
index 53be886..593531e 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.expect
@@ -69,7 +69,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -86,7 +86,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library;
 //
@@ -103,4 +103,4 @@
 import self as self5;
 import "dart:core" as core;
 
-static field core::int? versioned_2_10_Library;
+static field core::int* versioned_2_10_Library;
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.modular.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.modular.expect
index 53be886..593531e 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.modular.expect
@@ -69,7 +69,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -86,7 +86,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library;
 //
@@ -103,4 +103,4 @@
 import self as self5;
 import "dart:core" as core;
 
-static field core::int? versioned_2_10_Library;
+static field core::int* versioned_2_10_Library;
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.outline.expect
index 3f5e587..69b2423 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.outline.expect
@@ -70,7 +70,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -87,7 +87,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library;
 //
@@ -104,4 +104,4 @@
 import self as self5;
 import "dart:core" as core;
 
-static field core::int? versioned_2_10_Library;
+static field core::int* versioned_2_10_Library;
diff --git a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.transformed.expect
index 4d91921..c74d69a 100644
--- a/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/experiment_release_version/main.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -54,7 +54,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library;
 //
@@ -71,4 +71,4 @@
 import self as self5;
 import "dart:core" as core;
 
-static field core::int? versioned_2_10_Library;
+static field core::int* versioned_2_10_Library;
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect
index b2edbb8..8c54548 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect
index b2edbb8..8c54548 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect
index 15ded13..ef7e103 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect
@@ -13,6 +13,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect
index b2edbb8..8c54548 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.expect
index 14c6cd9..fe508f1 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.modular.expect
index 14c6cd9..fe508f1 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.modular.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.outline.expect
index b393b5f..53acfe1 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.outline.expect
@@ -13,6 +13,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.transformed.expect
index 14c6cd9..fe508f1 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment_and_language_version.dart.weak.transformed.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect b/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect
index 32f26ec..0c8e689 100644
--- a/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/remove_language_version.yaml.world.1.expect
@@ -13,6 +13,6 @@
 //
 
   static method main() → dynamic {
-    dart.core::int? i;
+    dart.core::int* i;
   }
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect
index d4de37b..fe41d8c 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.expect
@@ -69,7 +69,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -86,7 +86,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library /*isNonNullableByDefault*/;
 import self as self5;
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.modular.expect
index d4de37b..fe41d8c 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.modular.expect
@@ -69,7 +69,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -86,7 +86,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library /*isNonNullableByDefault*/;
 import self as self5;
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.outline.expect
index 10fa83c..5259891 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.outline.expect
@@ -70,7 +70,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -87,7 +87,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library /*isNonNullableByDefault*/;
 import self as self5;
diff --git a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect
index 65936ca..f4682f0 100644
--- a/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/experiment_release_version/main.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
 import self as self3;
 import "dart:core" as core;
 
-static field core::int? versioned_2_8_Library;
+static field core::int* versioned_2_8_Library;
 
 library;
 //
@@ -54,7 +54,7 @@
 import self as self4;
 import "dart:core" as core;
 
-static field core::int? versioned_2_9_Library;
+static field core::int* versioned_2_9_Library;
 
 library /*isNonNullableByDefault*/;
 import self as self5;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.expect
index 5d1e11f..e65a942 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.expect
@@ -11,7 +11,7 @@
   iss::takesNever(null);
   iss::takesNever(nil);
   iss::takesTakesNull(#C1);
-  iss::f = (Null x) → Null {};
+  iss::f = (Never* x) → Null {};
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.modular.expect
index 5d1e11f..e65a942 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.modular.expect
@@ -11,7 +11,7 @@
   iss::takesNever(null);
   iss::takesNever(nil);
   iss::takesTakesNull(#C1);
-  iss::f = (Null x) → Null {};
+  iss::f = (Never* x) → Null {};
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.transformed.expect
index 5d1e11f..e65a942 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41435.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
   iss::takesNever(null);
   iss::takesNever(nil);
   iss::takesTakesNull(#C1);
-  iss::f = (Null x) → Null {};
+  iss::f = (Never* x) → Null {};
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
index e73b967..0d89627 100644
--- a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.expect
@@ -53,16 +53,16 @@
   synthetic constructor •() → self::C*
     : super nev::A::•()
     ;
-  method neverMethod(Null value) → Never*
+  method neverMethod(Never* value) → Never*
     return value;
   get neverProperty() → Never*
     return null;
-  set neverProperty(Null value) → void {}
-  method nullMethod(Null value) → Never*
+  set neverProperty(Never* value) → void {}
+  method nullMethod(Never* value) → Never*
     return value;
   get nullProperty() → Never*
     return null;
-  set nullProperty(Null value) → void {}
+  set nullProperty(Never* value) → 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/nnbd_mixed/never_opt_out.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.modular.expect
index e73b967..0d89627 100644
--- a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.modular.expect
@@ -53,16 +53,16 @@
   synthetic constructor •() → self::C*
     : super nev::A::•()
     ;
-  method neverMethod(Null value) → Never*
+  method neverMethod(Never* value) → Never*
     return value;
   get neverProperty() → Never*
     return null;
-  set neverProperty(Null value) → void {}
-  method nullMethod(Null value) → Never*
+  set neverProperty(Never* value) → void {}
+  method nullMethod(Never* value) → Never*
     return value;
   get nullProperty() → Never*
     return null;
-  set nullProperty(Null value) → void {}
+  set nullProperty(Never* value) → 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/nnbd_mixed/never_opt_out.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.outline.expect
index 689fd991..22de506 100644
--- a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.outline.expect
@@ -52,17 +52,17 @@
   field Never* nullField;
   synthetic constructor •() → self::C*
     ;
-  method neverMethod(Null value) → Never*
+  method neverMethod(Never* value) → Never*
     ;
   get neverProperty() → Never*
     ;
-  set neverProperty(Null value) → void
+  set neverProperty(Never* value) → void
     ;
-  method nullMethod(Null value) → Never*
+  method nullMethod(Never* value) → Never*
     ;
   get nullProperty() → Never*
     ;
-  set nullProperty(Null value) → void
+  set nullProperty(Never* value) → 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/never_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
index 963cab4..4865f2d 100644
--- a/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/never_opt_out.dart.weak.transformed.expect
@@ -53,16 +53,16 @@
   synthetic constructor •() → self::C*
     : super nev::A::•()
     ;
-  method neverMethod(Null value) → Never*
+  method neverMethod(Never* value) → Never*
     return value;
   get neverProperty() → Never*
     return null;
-  set neverProperty(Null value) → void {}
-  method nullMethod(Null value) → Never*
+  set neverProperty(Never* value) → void {}
+  method nullMethod(Never* value) → Never*
     return value;
   get nullProperty() → Never*
     return null;
-  set nullProperty(Null value) → void {}
+  set nullProperty(Never* value) → 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/nnbd_mixed/null_safety_invalid_language_version.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.expect
index 46b2806..86be531 100644
--- a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.modular.expect
index 46b2806..86be531 100644
--- a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.modular.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.outline.expect
index c8ed156..6d750cf 100644
--- a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.outline.expect
@@ -13,6 +13,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.transformed.expect
index 46b2806..86be531 100644
--- a/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/null_safety_invalid_language_version.dart.weak.transformed.expect
@@ -13,5 +13,5 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::int? i;
+static field core::int* i;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
index f0e3bf9..54314ed 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.expect
@@ -136,7 +136,7 @@
 import self as self2;
 import "dart:core" as core;
 
-typedef F = () →? void;
+typedef F = () →* void;
 class A<T extends core::Object* = dynamic> extends core::Object {
   field core::int* field = 42;
   synthetic constructor •() → self2::A<self2::A::T*>*
@@ -158,15 +158,15 @@
     : super self2::A::•()
     ;
 }
-static field core::List<core::String?>* l = <core::String*>[];
-static field core::String? s = null;
+static field core::List<core::String*>* l = <core::String*>[];
+static field core::String* s = null;
 static field core::String* t = self2::s!;
 static field core::int* field = 42;
 static method method(() →* void f, {core::int* a = #C1}) → void {}
 static method errors() → dynamic {
   core::int* local = 42;
-  has-declared-initializer core::List<core::String?>* l = null;
-  has-declared-initializer core::String? s = null;
+  has-declared-initializer core::List<core::String*>* l = null;
+  has-declared-initializer core::String* s = null;
   core::String* t = s!;
   dynamic c;
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.modular.expect
index f0e3bf9..54314ed 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.modular.expect
@@ -136,7 +136,7 @@
 import self as self2;
 import "dart:core" as core;
 
-typedef F = () →? void;
+typedef F = () →* void;
 class A<T extends core::Object* = dynamic> extends core::Object {
   field core::int* field = 42;
   synthetic constructor •() → self2::A<self2::A::T*>*
@@ -158,15 +158,15 @@
     : super self2::A::•()
     ;
 }
-static field core::List<core::String?>* l = <core::String*>[];
-static field core::String? s = null;
+static field core::List<core::String*>* l = <core::String*>[];
+static field core::String* s = null;
 static field core::String* t = self2::s!;
 static field core::int* field = 42;
 static method method(() →* void f, {core::int* a = #C1}) → void {}
 static method errors() → dynamic {
   core::int* local = 42;
-  has-declared-initializer core::List<core::String?>* l = null;
-  has-declared-initializer core::String? s = null;
+  has-declared-initializer core::List<core::String*>* l = null;
+  has-declared-initializer core::String* s = null;
   core::String* t = s!;
   dynamic c;
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.outline.expect
index de1edfa..d0348a2 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.outline.expect
@@ -87,7 +87,7 @@
 import self as self2;
 import "dart:core" as core;
 
-typedef F = () →? void;
+typedef F = () →* void;
 class A<T extends core::Object* = dynamic> extends core::Object {
   field core::int* field;
   synthetic constructor •() → self2::A<self2::A::T*>*
@@ -107,8 +107,8 @@
   synthetic constructor •() → self2::B*
     ;
 }
-static field core::List<core::String?>* l;
-static field core::String? s;
+static field core::List<core::String*>* l;
+static field core::String* s;
 static field core::String* t;
 static field core::int* field;
 static method method(() →* void f, {core::int* a}) → void
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
index bcdf3bd..836b9e3 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.weak.transformed.expect
@@ -136,7 +136,7 @@
 import self as self2;
 import "dart:core" as core;
 
-typedef F = () →? void;
+typedef F = () →* void;
 class A<T extends core::Object* = dynamic> extends core::Object {
   field core::int* field = 42;
   synthetic constructor •() → self2::A<self2::A::T*>*
@@ -158,15 +158,15 @@
     : super self2::A::•()
     ;
 }
-static field core::List<core::String?>* l = core::_GrowableList::•<core::String*>(0);
-static field core::String? s = null;
+static field core::List<core::String*>* l = core::_GrowableList::•<core::String*>(0);
+static field core::String* s = null;
 static field core::String* t = self2::s!;
 static field core::int* field = 42;
 static method method(() →* void f, {core::int* a = #C1}) → void {}
 static method errors() → dynamic {
   core::int* local = 42;
-  has-declared-initializer core::List<core::String?>* l = null;
-  has-declared-initializer core::String? s = null;
+  has-declared-initializer core::List<core::String*>* l = null;
+  has-declared-initializer core::String* s = null;
   core::String* t = s!;
   dynamic c;
   invalid-expression "pkg/front_end/testcases/nnbd_mixed/opt_out_lib.dart:36:6: Error: Expected an identifier, but got ''.
diff --git a/tools/VERSION b/tools/VERSION
index 5aa9356..1bebd47 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 35
+PRERELEASE 36
 PRERELEASE_PATCH 0
\ No newline at end of file