Version 2.18.0-232.0.dev

Merge commit '7f8566183499960f1fc0540c44d32696332f22f0' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 0e557c3..f928d0a 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -6830,7 +6830,7 @@
     if (typeInfo.isNullable) {
       Token next = typeInfo.skipType(token).next!;
       if (!isOneOfOrEof(
-          next, const [')', '?', '??', ',', ';', ':', 'is', 'as', '..'])) {
+          next, const [')', '}', '?', '??', ',', ';', ':', 'is', 'as', '..'])) {
         // TODO(danrubel): investigate other situations
         // where `?` should be considered part of the type info
         // rather than the start of a conditional expression.
diff --git a/pkg/analyzer/test/generated/expression_parser_test.dart b/pkg/analyzer/test/generated/expression_parser_test.dart
index 5749b4d..2df1857 100644
--- a/pkg/analyzer/test/generated/expression_parser_test.dart
+++ b/pkg/analyzer/test/generated/expression_parser_test.dart
@@ -157,6 +157,62 @@
     expect(b.expression, isNotNull);
   }
 
+  void test_nullableTypeInStringInterpolations_as_48999() {
+    // https://github.com/dart-lang/sdk/issues/48999
+    Expression expression = parseExpression(r'"${i as int?}"');
+    expect(expression, isNotNull);
+    assertNoErrors();
+
+    var interpolation = expression as StringInterpolation;
+    expect(interpolation.elements, hasLength(3));
+
+    expect(interpolation.elements[0], isInterpolationString);
+    var element0 = interpolation.elements[0] as InterpolationString;
+    expect(element0.value, '');
+
+    expect(interpolation.elements[1], isInterpolationExpression);
+    var element1 = interpolation.elements[1] as InterpolationExpression;
+    expect(element1.expression, isAsExpression);
+    var asExpression = element1.expression as AsExpression;
+    expect(asExpression.expression, isSimpleIdentifier);
+    expect(asExpression.type, isNamedType);
+    var namedType = asExpression.type as NamedType;
+    expect(namedType.name.name, "int");
+    expect(namedType.question, isNotNull);
+
+    expect(interpolation.elements[2], isInterpolationString);
+    var element2 = interpolation.elements[2] as InterpolationString;
+    expect(element2.value, '');
+  }
+
+  void test_nullableTypeInStringInterpolations_is_48999() {
+    // https://github.com/dart-lang/sdk/issues/48999
+    Expression expression = parseExpression(r'"${i is int?}"');
+    expect(expression, isNotNull);
+    assertNoErrors();
+
+    var interpolation = expression as StringInterpolation;
+    expect(interpolation.elements, hasLength(3));
+
+    expect(interpolation.elements[0], isInterpolationString);
+    var element0 = interpolation.elements[0] as InterpolationString;
+    expect(element0.value, '');
+
+    expect(interpolation.elements[1], isInterpolationExpression);
+    var element1 = interpolation.elements[1] as InterpolationExpression;
+    expect(element1.expression, isIsExpression);
+    var isExpression = element1.expression as IsExpression;
+    expect(isExpression.expression, isSimpleIdentifier);
+    expect(isExpression.type, isNamedType);
+    var namedType = isExpression.type as NamedType;
+    expect(namedType.name.name, "int");
+    expect(namedType.question, isNotNull);
+
+    expect(interpolation.elements[2], isInterpolationString);
+    var element2 = interpolation.elements[2] as InterpolationString;
+    expect(element2.value, '');
+  }
+
   void test_parseAdditiveExpression_normal() {
     Expression expression = parseAdditiveExpression('x + y');
     expect(expression, isNotNull);
diff --git a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
index 8361256..148e2b6 100644
--- a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
@@ -200,8 +200,8 @@
 
   @override
   void buildMembers(void Function(Member, BuiltMemberKind) f) {
-    Member member = build();
-    f(member, BuiltMemberKind.Constructor);
+    _build();
+    f(_constructor, BuiltMemberKind.Constructor);
     if (_constructorTearOff != null) {
       f(_constructorTearOff!, BuiltMemberKind.Method);
     }
@@ -209,8 +209,7 @@
 
   bool _hasBeenBuilt = false;
 
-  @override
-  Constructor build() {
+  void _build() {
     if (!_hasBeenBuilt) {
       buildFunction();
       _constructor.function.fileOffset = charOpenParenOffset;
@@ -248,7 +247,6 @@
             .registerConstructorToBeInferred(_constructor, this);
       }
     }
-    return _constructor;
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
index a88180b..8b8f7b2 100644
--- a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
@@ -561,7 +561,6 @@
 
   @override
   Class build(LibraryBuilder coreLibrary) {
-    cls.isEnum = true;
     intType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
     stringType.resolveIn(
         coreLibrary.scope, charOffset, fileUri, libraryBuilder);
@@ -572,6 +571,9 @@
 
     listType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
 
+    Class cls = super.build(coreLibrary);
+    cls.isEnum = true;
+
     List<Expression> values = <Expression>[];
     if (enumConstantInfos != null) {
       for (EnumConstantInfo? enumConstantInfo in enumConstantInfos!) {
@@ -579,15 +581,11 @@
           Builder declaration = firstMemberNamed(enumConstantInfo.name)!;
           if (declaration.isField) {
             SourceFieldBuilder fieldBuilder = declaration as SourceFieldBuilder;
-            fieldBuilder.build();
             values.add(new StaticGet(fieldBuilder.field));
           }
         }
       }
     }
-    SourceFieldBuilder valuesBuilder =
-        firstMemberNamed("values") as SourceFieldBuilder;
-    valuesBuilder.build();
 
     // The super initializer for the synthesized default constructor is
     // inserted here if the enum's supertype is _Enum to preserve the legacy
@@ -597,7 +595,8 @@
     // building.
     if (identical(this.supertypeBuilder, enumType)) {
       if (synthesizedDefaultConstructorBuilder != null) {
-        Constructor constructor = synthesizedDefaultConstructorBuilder!.build();
+        Constructor constructor =
+            synthesizedDefaultConstructorBuilder!.constructor;
         ClassBuilder objectClass = objectType.declaration as ClassBuilder;
         ClassBuilder enumClass = enumType.declaration as ClassBuilder;
         MemberBuilder? superConstructor = enumClass.findConstructorOrFactory(
@@ -625,7 +624,7 @@
       }
     }
 
-    return super.build(coreLibrary);
+    return cls;
   }
 
   DartType buildElement(SourceFieldBuilder fieldBuilder, CoreTypes coreTypes) {
@@ -778,7 +777,6 @@
           Builder declaration = firstMemberNamed(enumConstantInfo.name)!;
           if (declaration.isField) {
             SourceFieldBuilder fieldBuilder = declaration as SourceFieldBuilder;
-            fieldBuilder.build();
             values.add(new StaticGet(fieldBuilder.field));
           }
         }
diff --git a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
index 86e3ca3..ec7ffb5 100644
--- a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
@@ -133,15 +133,14 @@
 
   @override
   void buildMembers(void Function(Member, BuiltMemberKind) f) {
-    Member member = build();
-    f(member, BuiltMemberKind.Method);
+    _build();
+    f(_procedureInternal, BuiltMemberKind.Method);
     if (_factoryTearOff != null) {
       f(_factoryTearOff!, BuiltMemberKind.Method);
     }
   }
 
-  @override
-  Procedure build() {
+  void _build() {
     buildFunction();
     _procedureInternal.function.fileOffset = charOpenParenOffset;
     _procedureInternal.function.fileEndOffset =
@@ -160,7 +159,6 @@
           enclosingClass: classBuilder!.cls,
           libraryBuilder: libraryBuilder);
     }
-    return _procedureInternal;
   }
 
   bool _hasBuiltOutlines = false;
@@ -341,15 +339,15 @@
 
   @override
   void buildMembers(void Function(Member, BuiltMemberKind) f) {
-    Member member = build();
-    f(member, BuiltMemberKind.RedirectingFactory);
+    _build();
+    f(_procedureInternal, BuiltMemberKind.RedirectingFactory);
     if (_factoryTearOff != null) {
       f(_factoryTearOff!, BuiltMemberKind.Method);
     }
   }
 
   @override
-  Procedure build() {
+  void _build() {
     buildFunction();
     _procedureInternal.function.fileOffset = charOpenParenOffset;
     _procedureInternal.function.fileEndOffset =
@@ -374,7 +372,6 @@
               implementationConstructor: _procedureInternal,
               libraryBuilder: libraryBuilder);
     }
-    return _procedureInternal;
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
index 00682eb..b05b07b 100644
--- a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
@@ -375,12 +375,12 @@
 
   @override
   void buildMembers(void Function(Member, BuiltMemberKind) f) {
-    build();
+    _build();
     _fieldEncoding.registerMembers(libraryBuilder, this, f);
   }
 
   /// Builds the core AST structures for this field as needed for the outline.
-  void build() {
+  void _build() {
     if (type is! InferableTypeBuilder) {
       fieldType = type.build(libraryBuilder, TypeUse.fieldType);
     }
diff --git a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
index fe0eb20..d64c8d3 100644
--- a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
@@ -474,8 +474,6 @@
     }
   }
 
-  Member build();
-
   @override
   void becomeNative(SourceLoader loader) {
     MemberBuilder constructor = loader.getNativeAnnotation();
diff --git a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
index 2d6873b..9588563 100644
--- a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
@@ -232,20 +232,20 @@
 
   @override
   void buildMembers(void Function(Member, BuiltMemberKind) f) {
-    Member member = build();
+    _build();
     if (isExtensionMethod) {
       switch (kind) {
         case ProcedureKind.Method:
-          f(member, BuiltMemberKind.ExtensionMethod);
+          f(_procedure, BuiltMemberKind.ExtensionMethod);
           break;
         case ProcedureKind.Getter:
-          f(member, BuiltMemberKind.ExtensionGetter);
+          f(_procedure, BuiltMemberKind.ExtensionGetter);
           break;
         case ProcedureKind.Setter:
-          f(member, BuiltMemberKind.ExtensionSetter);
+          f(_procedure, BuiltMemberKind.ExtensionSetter);
           break;
         case ProcedureKind.Operator:
-          f(member, BuiltMemberKind.ExtensionOperator);
+          f(_procedure, BuiltMemberKind.ExtensionOperator);
           break;
         case ProcedureKind.Factory:
           throw new UnsupportedError(
@@ -259,8 +259,7 @@
     }
   }
 
-  @override
-  Procedure build() {
+  void _build() {
     buildFunction();
     _procedure.function.fileOffset = charOpenParenOffset;
     _procedure.function.fileEndOffset = _procedure.fileEndOffset;
@@ -281,7 +280,6 @@
       _buildExtensionTearOff(libraryBuilder, parent as ExtensionBuilder);
       updatePrivateMemberName(extensionTearOff!, libraryBuilder);
     }
-    return _procedure;
   }
 
   /// Creates a top level function that creates a tear off of an extension
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart
new file mode 100644
index 0000000..837d612
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart
@@ -0,0 +1,5 @@
+void main() {
+  dynamic i = 10;
+  print('${i as int?}');
+  print('${i is int?}');
+}
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.expect
new file mode 100644
index 0000000..50593e6
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.expect
@@ -0,0 +1,69 @@
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null, null)
+      handleVoidKeyword(void)
+      handleIdentifier(main, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginMetadataStar(dynamic)
+        endMetadataStar(0)
+        handleIdentifier(dynamic, typeReference)
+        handleNoTypeArguments(i)
+        handleType(dynamic, null)
+        beginVariablesDeclaration(i, null, null)
+          handleIdentifier(i, localVariableDeclaration)
+          beginInitializedIdentifier(i)
+            beginVariableInitializer(=)
+              handleLiteralInt(10)
+            endVariableInitializer(=)
+          endInitializedIdentifier(i)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(print, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          beginLiteralString(')
+            handleIdentifier(i, expression)
+            handleNoTypeArguments(as)
+            handleNoArguments(as)
+            handleSend(i, as)
+            beginAsOperatorType(as)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(?)
+              handleType(int, ?)
+            endAsOperatorType(as)
+            handleAsOperator(as)
+            handleInterpolationExpression(${, })
+            handleStringPart(')
+          endLiteralString(1, ))
+        endArguments(1, (, ))
+        handleSend(print, ;)
+        handleExpressionStatement(;)
+        handleIdentifier(print, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          beginLiteralString(')
+            handleIdentifier(i, expression)
+            handleNoTypeArguments(is)
+            handleNoArguments(is)
+            handleSend(i, is)
+            beginIsOperatorType(is)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(?)
+              handleType(int, ?)
+            endIsOperatorType(is)
+            handleIsOperator(is, null)
+            handleInterpolationExpression(${, })
+            handleStringPart(')
+          endLiteralString(1, ))
+        endArguments(1, (, ))
+        handleSend(print, ;)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect
new file mode 100644
index 0000000..2b416ce
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.intertwined.expect
@@ -0,0 +1,178 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, main, false)
+        listener: beginTopLevelMethod(, null, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(main, topLevelFunctionDeclaration)
+        parseMethodTypeVar(main)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(main, main, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(main, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, dynamic)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclaration({, false)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                  looksLikeLocalFunction(i)
+                  listener: beginMetadataStar(dynamic)
+                  listener: endMetadataStar(0)
+                  listener: handleIdentifier(dynamic, typeReference)
+                  listener: handleNoTypeArguments(i)
+                  listener: handleType(dynamic, null)
+                  listener: beginVariablesDeclaration(i, null, null)
+                  parseVariablesDeclarationRest(dynamic, true)
+                    parseOptionallyInitializedIdentifier(dynamic)
+                      ensureIdentifier(dynamic, localVariableDeclaration)
+                        listener: handleIdentifier(i, localVariableDeclaration)
+                      listener: beginInitializedIdentifier(i)
+                      parseVariableInitializerOpt(i)
+                        listener: beginVariableInitializer(=)
+                        parseExpression(=)
+                          parsePrecedenceExpression(=, 1, true)
+                            parseUnaryExpression(=, true)
+                              parsePrimary(=, expression)
+                                parseLiteralInt(=)
+                                  listener: handleLiteralInt(10)
+                        listener: endVariableInitializer(=)
+                      listener: endInitializedIdentifier(i)
+                    ensureSemicolon(10)
+                    listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, print)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(print)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(;, expression)
+                              isNextIdentifier(;)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(print, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(print)
+                                parseArguments(print)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseLiteralString(()
+                                              parseSingleLiteralString(()
+                                                listener: beginLiteralString(')
+                                                parseExpression(${)
+                                                  parsePrecedenceExpression(${, 1, true)
+                                                    parseUnaryExpression(${, true)
+                                                      parsePrimary(${, expression)
+                                                        parseSendOrFunctionLiteral(${, expression)
+                                                          parseSend(${, expression)
+                                                            isNextIdentifier(${)
+                                                            ensureIdentifier(${, expression)
+                                                              listener: handleIdentifier(i, expression)
+                                                            listener: handleNoTypeArguments(as)
+                                                            parseArgumentsOpt(i)
+                                                              listener: handleNoArguments(as)
+                                                            listener: handleSend(i, as)
+                                                    parseAsOperatorRest(i)
+                                                      listener: beginAsOperatorType(as)
+                                                      computeTypeAfterIsOrAs(as)
+                                                      listener: handleIdentifier(int, typeReference)
+                                                      listener: handleNoTypeArguments(?)
+                                                      listener: handleType(int, ?)
+                                                      listener: endAsOperatorType(as)
+                                                      listener: handleAsOperator(as)
+                                                      skipChainedAsIsOperators(?)
+                                                listener: handleInterpolationExpression(${, })
+                                                parseStringPart(})
+                                                  listener: handleStringPart(')
+                                                listener: endLiteralString(1, ))
+                                    listener: endArguments(1, (, ))
+                              listener: handleSend(print, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, print)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(print)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(;, expression)
+                              isNextIdentifier(;)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(print, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(print)
+                                parseArguments(print)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseLiteralString(()
+                                              parseSingleLiteralString(()
+                                                listener: beginLiteralString(')
+                                                parseExpression(${)
+                                                  parsePrecedenceExpression(${, 1, true)
+                                                    parseUnaryExpression(${, true)
+                                                      parsePrimary(${, expression)
+                                                        parseSendOrFunctionLiteral(${, expression)
+                                                          parseSend(${, expression)
+                                                            isNextIdentifier(${)
+                                                            ensureIdentifier(${, expression)
+                                                              listener: handleIdentifier(i, expression)
+                                                            listener: handleNoTypeArguments(is)
+                                                            parseArgumentsOpt(i)
+                                                              listener: handleNoArguments(is)
+                                                            listener: handleSend(i, is)
+                                                    parseIsOperatorRest(i)
+                                                      listener: beginIsOperatorType(is)
+                                                      computeTypeAfterIsOrAs(is)
+                                                      listener: handleIdentifier(int, typeReference)
+                                                      listener: handleNoTypeArguments(?)
+                                                      listener: handleType(int, ?)
+                                                      listener: endIsOperatorType(is)
+                                                      listener: handleIsOperator(is, null)
+                                                      skipChainedAsIsOperators(?)
+                                                listener: handleInterpolationExpression(${, })
+                                                parseStringPart(})
+                                                  listener: handleStringPart(')
+                                                listener: endLiteralString(1, ))
+                                    listener: endArguments(1, (, ))
+                              listener: handleSend(print, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.parser.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.parser.expect
new file mode 100644
index 0000000..002a00e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.parser.expect
@@ -0,0 +1,13 @@
+void main() {
+dynamic i = 10;
+print('${i as int?}');
+print('${i is int?}');
+}
+
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+dynamic[KeywordToken] i[StringToken] =[SimpleToken] 10[StringToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]i[StringToken] as[KeywordToken] int[StringToken]?[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]i[StringToken] is[KeywordToken] int[StringToken]?[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.scanner.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.scanner.expect
new file mode 100644
index 0000000..002a00e
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.dart.scanner.expect
@@ -0,0 +1,13 @@
+void main() {
+dynamic i = 10;
+print('${i as int?}');
+print('${i is int?}');
+}
+
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+dynamic[KeywordToken] i[StringToken] =[SimpleToken] 10[StringToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]i[StringToken] as[KeywordToken] int[StringToken]?[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]i[StringToken] is[KeywordToken] int[StringToken]?[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999.equivalence_info b/pkg/front_end/parser_testcases/nnbd/issue_48999.equivalence_info
new file mode 100644
index 0000000..f638038
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999.equivalence_info
@@ -0,0 +1,7 @@
+files:
+  - issue_48999.dart
+  - issue_48999_prime.dart
+filters:
+  - ignoreListenerArguments
+ignored:
+  - handleParenthesizedExpression
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart
new file mode 100644
index 0000000..2af71c5
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart
@@ -0,0 +1,5 @@
+void main() {
+  dynamic i = 10;
+  print('${(i as int?)}');
+  print('${(i is int?)}');
+}
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.expect
new file mode 100644
index 0000000..de2181f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.expect
@@ -0,0 +1,71 @@
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null, null)
+      handleVoidKeyword(void)
+      handleIdentifier(main, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginMetadataStar(dynamic)
+        endMetadataStar(0)
+        handleIdentifier(dynamic, typeReference)
+        handleNoTypeArguments(i)
+        handleType(dynamic, null)
+        beginVariablesDeclaration(i, null, null)
+          handleIdentifier(i, localVariableDeclaration)
+          beginInitializedIdentifier(i)
+            beginVariableInitializer(=)
+              handleLiteralInt(10)
+            endVariableInitializer(=)
+          endInitializedIdentifier(i)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(print, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          beginLiteralString(')
+            handleIdentifier(i, expression)
+            handleNoTypeArguments(as)
+            handleNoArguments(as)
+            handleSend(i, as)
+            beginAsOperatorType(as)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(?)
+              handleType(int, ?)
+            endAsOperatorType(as)
+            handleAsOperator(as)
+            handleParenthesizedExpression(()
+            handleInterpolationExpression(${, })
+            handleStringPart(')
+          endLiteralString(1, ))
+        endArguments(1, (, ))
+        handleSend(print, ;)
+        handleExpressionStatement(;)
+        handleIdentifier(print, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          beginLiteralString(')
+            handleIdentifier(i, expression)
+            handleNoTypeArguments(is)
+            handleNoArguments(is)
+            handleSend(i, is)
+            beginIsOperatorType(is)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(?)
+              handleType(int, ?)
+            endIsOperatorType(is)
+            handleIsOperator(is, null)
+            handleParenthesizedExpression(()
+            handleInterpolationExpression(${, })
+            handleStringPart(')
+          endLiteralString(1, ))
+        endArguments(1, (, ))
+        handleSend(print, ;)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect
new file mode 100644
index 0000000..85d13b9
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.intertwined.expect
@@ -0,0 +1,198 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, main, false)
+        listener: beginTopLevelMethod(, null, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(main, topLevelFunctionDeclaration)
+        parseMethodTypeVar(main)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(main, main, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(main, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, dynamic)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclaration({, false)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                  looksLikeLocalFunction(i)
+                  listener: beginMetadataStar(dynamic)
+                  listener: endMetadataStar(0)
+                  listener: handleIdentifier(dynamic, typeReference)
+                  listener: handleNoTypeArguments(i)
+                  listener: handleType(dynamic, null)
+                  listener: beginVariablesDeclaration(i, null, null)
+                  parseVariablesDeclarationRest(dynamic, true)
+                    parseOptionallyInitializedIdentifier(dynamic)
+                      ensureIdentifier(dynamic, localVariableDeclaration)
+                        listener: handleIdentifier(i, localVariableDeclaration)
+                      listener: beginInitializedIdentifier(i)
+                      parseVariableInitializerOpt(i)
+                        listener: beginVariableInitializer(=)
+                        parseExpression(=)
+                          parsePrecedenceExpression(=, 1, true)
+                            parseUnaryExpression(=, true)
+                              parsePrimary(=, expression)
+                                parseLiteralInt(=)
+                                  listener: handleLiteralInt(10)
+                        listener: endVariableInitializer(=)
+                      listener: endInitializedIdentifier(i)
+                    ensureSemicolon(10)
+                    listener: endVariablesDeclaration(1, ;)
+          notEofOrValue(}, print)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(print)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(;, expression)
+                              isNextIdentifier(;)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(print, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(print)
+                                parseArguments(print)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseLiteralString(()
+                                              parseSingleLiteralString(()
+                                                listener: beginLiteralString(')
+                                                parseExpression(${)
+                                                  parsePrecedenceExpression(${, 1, true)
+                                                    parseUnaryExpression(${, true)
+                                                      parsePrimary(${, expression)
+                                                        parseParenthesizedExpressionOrFunctionLiteral(${)
+                                                          parseParenthesizedExpression(${)
+                                                            parseExpressionInParenthesis(${)
+                                                              parseExpressionInParenthesisRest(()
+                                                                parseExpression(()
+                                                                  parsePrecedenceExpression((, 1, true)
+                                                                    parseUnaryExpression((, true)
+                                                                      parsePrimary((, expression)
+                                                                        parseSendOrFunctionLiteral((, expression)
+                                                                          parseSend((, expression)
+                                                                            isNextIdentifier(()
+                                                                            ensureIdentifier((, expression)
+                                                                              listener: handleIdentifier(i, expression)
+                                                                            listener: handleNoTypeArguments(as)
+                                                                            parseArgumentsOpt(i)
+                                                                              listener: handleNoArguments(as)
+                                                                            listener: handleSend(i, as)
+                                                                    parseAsOperatorRest(i)
+                                                                      listener: beginAsOperatorType(as)
+                                                                      computeTypeAfterIsOrAs(as)
+                                                                      listener: handleIdentifier(int, typeReference)
+                                                                      listener: handleNoTypeArguments(?)
+                                                                      listener: handleType(int, ?)
+                                                                      listener: endAsOperatorType(as)
+                                                                      listener: handleAsOperator(as)
+                                                                      skipChainedAsIsOperators(?)
+                                                                ensureCloseParen(?, ()
+                                                            listener: handleParenthesizedExpression(()
+                                                listener: handleInterpolationExpression(${, })
+                                                parseStringPart(})
+                                                  listener: handleStringPart(')
+                                                listener: endLiteralString(1, ))
+                                    listener: endArguments(1, (, ))
+                              listener: handleSend(print, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, print)
+          parseStatement(;)
+            parseStatementX(;)
+              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                looksLikeLocalFunction(print)
+                parseExpressionStatement(;)
+                  parseExpression(;)
+                    parsePrecedenceExpression(;, 1, true)
+                      parseUnaryExpression(;, true)
+                        parsePrimary(;, expression)
+                          parseSendOrFunctionLiteral(;, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend(;, expression)
+                              isNextIdentifier(;)
+                              ensureIdentifier(;, expression)
+                                listener: handleIdentifier(print, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(print)
+                                parseArguments(print)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseLiteralString(()
+                                              parseSingleLiteralString(()
+                                                listener: beginLiteralString(')
+                                                parseExpression(${)
+                                                  parsePrecedenceExpression(${, 1, true)
+                                                    parseUnaryExpression(${, true)
+                                                      parsePrimary(${, expression)
+                                                        parseParenthesizedExpressionOrFunctionLiteral(${)
+                                                          parseParenthesizedExpression(${)
+                                                            parseExpressionInParenthesis(${)
+                                                              parseExpressionInParenthesisRest(()
+                                                                parseExpression(()
+                                                                  parsePrecedenceExpression((, 1, true)
+                                                                    parseUnaryExpression((, true)
+                                                                      parsePrimary((, expression)
+                                                                        parseSendOrFunctionLiteral((, expression)
+                                                                          parseSend((, expression)
+                                                                            isNextIdentifier(()
+                                                                            ensureIdentifier((, expression)
+                                                                              listener: handleIdentifier(i, expression)
+                                                                            listener: handleNoTypeArguments(is)
+                                                                            parseArgumentsOpt(i)
+                                                                              listener: handleNoArguments(is)
+                                                                            listener: handleSend(i, is)
+                                                                    parseIsOperatorRest(i)
+                                                                      listener: beginIsOperatorType(is)
+                                                                      computeTypeAfterIsOrAs(is)
+                                                                      listener: handleIdentifier(int, typeReference)
+                                                                      listener: handleNoTypeArguments(?)
+                                                                      listener: handleType(int, ?)
+                                                                      listener: endIsOperatorType(is)
+                                                                      listener: handleIsOperator(is, null)
+                                                                      skipChainedAsIsOperators(?)
+                                                                ensureCloseParen(?, ()
+                                                            listener: handleParenthesizedExpression(()
+                                                listener: handleInterpolationExpression(${, })
+                                                parseStringPart(})
+                                                  listener: handleStringPart(')
+                                                listener: endLiteralString(1, ))
+                                    listener: endArguments(1, (, ))
+                              listener: handleSend(print, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(3, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.parser.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.parser.expect
new file mode 100644
index 0000000..d5fdfd7
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.parser.expect
@@ -0,0 +1,13 @@
+void main() {
+dynamic i = 10;
+print('${(i as int?)}');
+print('${(i is int?)}');
+}
+
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+dynamic[KeywordToken] i[StringToken] =[SimpleToken] 10[StringToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]([BeginToken]i[StringToken] as[KeywordToken] int[StringToken]?[SimpleToken])[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]([BeginToken]i[StringToken] is[KeywordToken] int[StringToken]?[SimpleToken])[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.scanner.expect b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.scanner.expect
new file mode 100644
index 0000000..d5fdfd7
--- /dev/null
+++ b/pkg/front_end/parser_testcases/nnbd/issue_48999_prime.dart.scanner.expect
@@ -0,0 +1,13 @@
+void main() {
+dynamic i = 10;
+print('${(i as int?)}');
+print('${(i is int?)}');
+}
+
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+dynamic[KeywordToken] i[StringToken] =[SimpleToken] 10[StringToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]([BeginToken]i[StringToken] as[KeywordToken] int[StringToken]?[SimpleToken])[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+print[StringToken]([BeginToken]'[StringToken]${[BeginToken]([BeginToken]i[StringToken] is[KeywordToken] int[StringToken]?[SimpleToken])[SimpleToken]}[SimpleToken]'[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/testcases/general/issue_48999.dart b/pkg/front_end/testcases/general/issue_48999.dart
new file mode 100644
index 0000000..29f7662
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+void main() {
+  dynamic i = 10;
+  print('${i as int?}');
+  print('${i is int?}');
+}
diff --git a/pkg/front_end/testcases/general/issue_48999.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue_48999.dart.textual_outline.expect
new file mode 100644
index 0000000..ab73b3a
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart.textual_outline.expect
@@ -0,0 +1 @@
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue_48999.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue_48999.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..ab73b3a
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart.textual_outline_modelled.expect
@@ -0,0 +1 @@
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue_48999.dart.weak.expect b/pkg/front_end/testcases/general/issue_48999.dart.weak.expect
new file mode 100644
index 0000000..804410f
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart.weak.expect
@@ -0,0 +1,9 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static method main() → void {
+  dynamic i = 10;
+  core::print("${i as{ForNonNullableByDefault} core::int?}");
+  core::print("${i{core::int?} is{ForNonNullableByDefault} core::int?}");
+}
diff --git a/pkg/front_end/testcases/general/issue_48999.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue_48999.dart.weak.modular.expect
new file mode 100644
index 0000000..804410f
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart.weak.modular.expect
@@ -0,0 +1,9 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static method main() → void {
+  dynamic i = 10;
+  core::print("${i as{ForNonNullableByDefault} core::int?}");
+  core::print("${i{core::int?} is{ForNonNullableByDefault} core::int?}");
+}
diff --git a/pkg/front_end/testcases/general/issue_48999.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue_48999.dart.weak.outline.expect
new file mode 100644
index 0000000..684454e
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart.weak.outline.expect
@@ -0,0 +1,5 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+static method main() → void
+  ;
diff --git a/pkg/front_end/testcases/general/issue_48999.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue_48999.dart.weak.transformed.expect
new file mode 100644
index 0000000..804410f
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue_48999.dart.weak.transformed.expect
@@ -0,0 +1,9 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static method main() → void {
+  dynamic i = 10;
+  core::print("${i as{ForNonNullableByDefault} core::int?}");
+  core::print("${i{core::int?} is{ForNonNullableByDefault} core::int?}");
+}
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 0d2af9b..fb51b79 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -13,6 +13,7 @@
 dart2js/late_statics: SemiFuzzFailure
 static_field_lowering/opt_in: SemiFuzzFailure
 
+dart2js/mixin_super/main: SemiFuzzFailure # https://github.com/dart-lang/sdk/issues/49339
 dartdevc/static_interop_erasure/main: SemiFuzzCrash # https://github.com/dart-lang/sdk/issues/49301
 
 const_functions/const_functions_list: SemiFuzzCrash
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index f8898ce..bfca27f 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -10,6 +10,7 @@
 no_such_method_forwarders/abstract_override_abstract_different_type: SemiFuzzFailure
 no_such_method_forwarders/abstract_override_with_different_signature: SemiFuzzFailure
 
+dart2js/mixin_super/main: SemiFuzzFailure # https://github.com/dart-lang/sdk/issues/49339
 dartdevc/static_interop_erasure/main: SemiFuzzCrash # https://github.com/dart-lang/sdk/issues/49301
 
 dart2js/tear_off_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
@@ -19,9 +20,6 @@
 general/with_dependencies/issue_43084/issue_43084: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242543
 inference_update_1/horizontal_inference_extension_method: semiFuzzFailureOnForceRebuildBodies # Errors on split
 inference_update_1/horizontal_inference_extension_method: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/245004
-late_lowering/issue41436b: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242445
-late_lowering/issue41436c/issue41436c: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242445
-late_lowering/late_override: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242445
 late_lowering/private_members: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242285
 macros/multiple_imports: SemiFuzzFailure # probably augment imports that isn't split correctly.
 nnbd_mixed/hierarchy/in_dill_out_in/in_out_in: SemiFuzzFailure # lots of stuff --- not digging in for now
diff --git a/pkg/test_runner/lib/src/command_output.dart b/pkg/test_runner/lib/src/command_output.dart
index 807b974e..5e78325 100644
--- a/pkg/test_runner/lib/src/command_output.dart
+++ b/pkg/test_runner/lib/src/command_output.dart
@@ -852,6 +852,7 @@
   static const _uncaughtExceptionExitCode = 255;
   static const _adbInfraFailureCodes = [10];
   static const _ubsanFailureExitCode = 1;
+  static const _frontEndTestExitCode = 1;
 
   VMCommandOutput(Command command, int exitCode, bool timedOut,
       List<int> stdout, List<int> stderr, Duration time, int pid)
@@ -909,10 +910,14 @@
     // The actual outcome depends on the exitCode.
     if (exitCode == _compileErrorExitCode) return Expectation.compileTimeError;
     if (exitCode == _uncaughtExceptionExitCode) return Expectation.runtimeError;
-    if ((exitCode == _ubsanFailureExitCode) &&
-        (testCase.configuration.sanitizer == Sanitizer.ubsan)) {
+    if (exitCode == _ubsanFailureExitCode &&
+        testCase.configuration.sanitizer == Sanitizer.ubsan) {
       return Expectation.fail;
     }
+    if (exitCode == _frontEndTestExitCode &&
+        testCase.displayName.startsWith('pkg/front_end/test/')) {
+      return Expectation.runtimeError;
+    }
     if (exitCode != 0) {
       var ourExit = 5;
       // Unknown nonzero exit code from vm command.
diff --git a/tools/VERSION b/tools/VERSION
index 580e6a0..ff8d5ab 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 231
+PRERELEASE 232
 PRERELEASE_PATCH 0
\ No newline at end of file