Version 2.15.0-201.0.dev

Merge commit '1c1f6bd971ac2de7ab4091f17022e6bb50de4f57' into 'dev'
diff --git a/.packages b/.packages
index b24526d..568fa66 100644
--- a/.packages
+++ b/.packages
@@ -82,7 +82,6 @@
 protobuf:third_party/pkg/protobuf/protobuf/lib
 pub:third_party/pkg/pub/lib
 pub_semver:third_party/pkg/pub_semver/lib
-resource:third_party/pkg/resource/lib
 sdk_library_metadata:sdk/lib/_internal/sdk_library_metadata/lib
 shelf:third_party/pkg/shelf/lib
 shelf_packages_handler:third_party/pkg/shelf_packages_handler/lib
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index bdb8699..b0ff32b 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -4604,7 +4604,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageFunctionTypedParameterVar = const MessageCode(
     "FunctionTypedParameterVar",
-    analyzerCodes: <String>["FUNCTION_TYPED_PARAMETER_VAR"],
+    index: 119,
     problemMessage:
         r"""Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type.""",
     correctionMessage: r"""Try replacing the keyword with a return type.""");
@@ -8163,7 +8163,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageOperatorWithTypeParameters = const MessageCode(
     "OperatorWithTypeParameters",
-    analyzerCodes: <String>["TYPE_PARAMETER_ON_OPERATOR"],
+    index: 120,
     problemMessage:
         r"""Types parameters aren't allowed when defining an operator.""",
     correctionMessage: r"""Try removing the type parameters.""");
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
index d49a7eb..a855fe1 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
@@ -133,6 +133,8 @@
   ParserErrorCode.LITERAL_WITH_CLASS,
   ParserErrorCode.LITERAL_WITH_NEW,
   ParserErrorCode.CONSTRUCTOR_WITH_TYPE_ARGUMENTS,
+  ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR,
+  ParserErrorCode.TYPE_PARAMETER_ON_OPERATOR,
 ];
 
 class ParserErrorCode extends ErrorCode {
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index f207a06..3d8c9c9 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -114,10 +114,6 @@
             length,
             [name]);
         return;
-      case "FUNCTION_TYPED_PARAMETER_VAR":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR, offset, length);
-        return;
       case "GETTER_WITH_PARAMETERS":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.GETTER_WITH_PARAMETERS, offset, length);
@@ -275,10 +271,6 @@
             offset,
             length);
         return;
-      case "TYPE_PARAMETER_ON_OPERATOR":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.TYPE_PARAMETER_ON_OPERATOR, offset, length);
-        return;
       case "UNDEFINED_CLASS":
         errorReporter?.reportErrorForOffset(
             CompileTimeErrorCode.UNDEFINED_CLASS, offset, length);
diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml
index ed7de6a..aa8e577 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -17468,9 +17468,6 @@
   FINAL_TYPEDEF:
     problemMessage: "Typedefs can't be declared to be 'final'."
     correctionMessage: "Try removing the keyword 'final'."
-  FUNCTION_TYPED_PARAMETER_VAR:
-    problemMessage: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
-    correctionMessage: Try replacing the keyword with a return type.
   GETTER_IN_FUNCTION:
     problemMessage: "Getters can't be defined within methods or functions."
     correctionMessage: Try moving the getter outside the method or function, or converting the getter to a function.
@@ -17628,12 +17625,6 @@
   STATIC_TOP_LEVEL_DECLARATION:
     problemMessage: "Top-level declarations can't be declared to be static."
     correctionMessage: "Try removing the keyword 'static'."
-  TYPE_PARAMETER_ON_OPERATOR:
-    problemMessage: "Types parameters aren't allowed when defining an operator."
-    correctionMessage: Try removing the type parameters.
-    comment: |-
-      7.1.1 Operators: Type parameters are not syntactically supported on an
-      operator.
   UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP:
     problemMessage: "There is no '{0}' to open a parameter group."
     correctionMessage: "Try inserting the '{0}' at the appropriate location."
diff --git a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
index 78b64cb..e3ffd03 100644
--- a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
@@ -13,12 +13,175 @@
 
 void main() {
   defineReflectiveSuite(() {
+    defineReflectiveTests(RangeFactory_ArgumentRangeTest);
+    defineReflectiveTests(RangeFactory_NodeInListTest);
     defineReflectiveTests(RangeFactoryTest);
   });
 }
 
 @reflectiveTest
-class RangeFactoryTest extends AbstractSingleUnitTest {
+class RangeFactory_ArgumentRangeTest extends AbstractSingleUnitTest {
+  Future<void> test_all_mixed_noTrailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, c: 2);
+}
+void g(int a, int b, {int? c}) {}
+''');
+    _assertArgumentRange(0, 2, SourceRange(15, 10), SourceRange(15, 10));
+  }
+
+  Future<void> test_all_mixed_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, c: 2, );
+}
+void g(int a, int b, {int? c}) {}
+''');
+    _assertArgumentRange(0, 2, SourceRange(15, 12), SourceRange(15, 10));
+  }
+
+  Future<void> test_all_named_noTrailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(a: 0, b: 1, c: 2);
+}
+void g({int? a, int? b, int? c}) {}
+''');
+    _assertArgumentRange(0, 2, SourceRange(15, 16), SourceRange(15, 16));
+  }
+
+  Future<void> test_all_named_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(a: 0, b: 1, c: 2, );
+}
+void g({int? a, int? b, int? c}) {}
+''');
+    _assertArgumentRange(0, 2, SourceRange(15, 18), SourceRange(15, 16));
+  }
+
+  Future<void> test_all_positional_noTrailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, 2);
+}
+void g(int a, int b, int c) {}
+''');
+    _assertArgumentRange(0, 2, SourceRange(15, 7), SourceRange(15, 7));
+  }
+
+  Future<void> test_all_positional_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, 2, );
+}
+void g(int a, int b, int c) {}
+''');
+    _assertArgumentRange(0, 2, SourceRange(15, 9), SourceRange(15, 7));
+  }
+
+  Future<void> test_first_noTrailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1);
+}
+void g(int a, int b) {}
+''');
+    _assertArgumentRange(0, 0, SourceRange(15, 3), SourceRange(15, 1));
+  }
+
+  Future<void> test_first_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, );
+}
+void g(int a, int b) {}
+''');
+    _assertArgumentRange(0, 0, SourceRange(15, 3), SourceRange(15, 1));
+  }
+
+  Future<void> test_last_noTrailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1);
+}
+void g(int a, int b) {}
+''');
+    _assertArgumentRange(1, 1, SourceRange(16, 3), SourceRange(18, 1));
+  }
+
+  Future<void> test_last_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, );
+}
+void g(int a, int b) {}
+''');
+    _assertArgumentRange(1, 1, SourceRange(16, 3), SourceRange(18, 1));
+  }
+
+  Future<void> test_middle_noTrailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, 2, 3);
+}
+void g(int a, int b, int c, int d) {}
+''');
+    _assertArgumentRange(1, 2, SourceRange(16, 6), SourceRange(18, 4));
+  }
+
+  Future<void> test_middle_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(0, 1, 2, 3, );
+}
+void g(int a, int b, int c, int d) {}
+''');
+    _assertArgumentRange(1, 2, SourceRange(16, 6), SourceRange(18, 4));
+  }
+
+  Future<void> test_only_named() async {
+    await resolveTestCode('''
+void f() {
+  g(a: 0);
+}
+void g({int? a}) {}
+''');
+    _assertArgumentRange(0, 0, SourceRange(15, 4), SourceRange(15, 4));
+  }
+
+  Future<void> test_only_positional() async {
+    await resolveTestCode('''
+void f() {
+  g(0);
+}
+void g(int a) {}
+''');
+    _assertArgumentRange(0, 0, SourceRange(15, 1), SourceRange(15, 1));
+  }
+
+  /// Assuming that the test code starts with a function whose block body starts
+  /// with a method invocation, compute the range for the arguments in the
+  /// invocation's argument list between [lower] and [upper]. Validate that the
+  /// range for deletion matches [expectedForDeletion] and that the range not
+  /// for deletion matches [expectedNoDeletion].
+  void _assertArgumentRange(int lower, int upper,
+      SourceRange expectedForDeletion, SourceRange expectedNoDeletion) {
+    var f = testUnit.declarations[0] as FunctionDeclaration;
+    var body = f.functionExpression.body as BlockFunctionBody;
+    var statement = body.block.statements[0] as ExpressionStatement;
+    var invocation = statement.expression as MethodInvocation;
+    var argumentList = invocation.argumentList;
+    expect(range.argumentRange(argumentList, lower, upper, true),
+        expectedForDeletion);
+    expect(range.argumentRange(argumentList, lower, upper, false),
+        expectedNoDeletion);
+  }
+}
+
+@reflectiveTest
+class RangeFactory_NodeInListTest extends AbstractSingleUnitTest {
   /// Assuming that the test code starts with a function whose block body starts
   /// with a method invocation, return the list of arguments in that invocation.
   NodeList<Expression> get _argumentList {
@@ -29,146 +192,119 @@
     return invocation.argumentList.arguments;
   }
 
-  Future<void> test_argumentRange_all_mixed_noTrailingComma() async {
+  Future<void> test_argumentList_first_named() async {
     await resolveTestCode('''
 void f() {
-  g(0, 1, c: 2);
+  g(a: 1, b: 2);
 }
-void g(int a, int b, {int? c}) {}
+void g({int? a, int? b}) {}
 ''');
-    _assertArgumentRange(0, 2, SourceRange(15, 10), SourceRange(15, 10));
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 6));
   }
 
-  Future<void> test_argumentRange_all_mixed_trailingComma() async {
+  Future<void> test_argumentList_first_positional() async {
     await resolveTestCode('''
 void f() {
-  g(0, 1, c: 2, );
+  g(1, 2);
 }
-void g(int a, int b, {int? c}) {}
+void g(int a, int b) {}
 ''');
-    _assertArgumentRange(0, 2, SourceRange(15, 12), SourceRange(15, 10));
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 3));
   }
 
-  Future<void> test_argumentRange_all_named_noTrailingComma() async {
+  Future<void> test_argumentList_last_named() async {
     await resolveTestCode('''
 void f() {
-  g(a: 0, b: 1, c: 2);
+  g(a: 1, b: 2);
+}
+void g({int? a, int? b}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(19, 6));
+  }
+
+  Future<void> test_argumentList_last_positional() async {
+    await resolveTestCode('''
+void f() {
+  g(1, 2);
+}
+void g(int a, int b) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(16, 3));
+  }
+
+  Future<void> test_argumentList_middle_named() async {
+    await resolveTestCode('''
+void f() {
+  g(a: 1, b: 2, c: 3);
 }
 void g({int? a, int? b, int? c}) {}
 ''');
-    _assertArgumentRange(0, 2, SourceRange(15, 16), SourceRange(15, 16));
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(19, 6));
   }
 
-  Future<void> test_argumentRange_all_named_trailingComma() async {
+  Future<void> test_argumentList_middle_positional() async {
     await resolveTestCode('''
 void f() {
-  g(a: 0, b: 1, c: 2, );
-}
-void g({int? a, int? b, int? c}) {}
-''');
-    _assertArgumentRange(0, 2, SourceRange(15, 18), SourceRange(15, 16));
-  }
-
-  Future<void> test_argumentRange_all_positional_noTrailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1, 2);
+  g(1, 2, 3);
 }
 void g(int a, int b, int c) {}
 ''');
-    _assertArgumentRange(0, 2, SourceRange(15, 7), SourceRange(15, 7));
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[1]), SourceRange(16, 3));
   }
 
-  Future<void> test_argumentRange_all_positional_trailingComma() async {
+  Future<void> test_argumentList_only_named() async {
     await resolveTestCode('''
 void f() {
-  g(0, 1, 2, );
-}
-void g(int a, int b, int c) {}
-''');
-    _assertArgumentRange(0, 2, SourceRange(15, 9), SourceRange(15, 7));
-  }
-
-  Future<void> test_argumentRange_first_noTrailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1);
-}
-void g(int a, int b) {}
-''');
-    _assertArgumentRange(0, 0, SourceRange(15, 3), SourceRange(15, 1));
-  }
-
-  Future<void> test_argumentRange_first_trailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1, );
-}
-void g(int a, int b) {}
-''');
-    _assertArgumentRange(0, 0, SourceRange(15, 3), SourceRange(15, 1));
-  }
-
-  Future<void> test_argumentRange_last_noTrailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1);
-}
-void g(int a, int b) {}
-''');
-    _assertArgumentRange(1, 1, SourceRange(16, 3), SourceRange(18, 1));
-  }
-
-  Future<void> test_argumentRange_last_trailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1, );
-}
-void g(int a, int b) {}
-''');
-    _assertArgumentRange(1, 1, SourceRange(16, 3), SourceRange(18, 1));
-  }
-
-  Future<void> test_argumentRange_middle_noTrailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1, 2, 3);
-}
-void g(int a, int b, int c, int d) {}
-''');
-    _assertArgumentRange(1, 2, SourceRange(16, 6), SourceRange(18, 4));
-  }
-
-  Future<void> test_argumentRange_middle_trailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(0, 1, 2, 3, );
-}
-void g(int a, int b, int c, int d) {}
-''');
-    _assertArgumentRange(1, 2, SourceRange(16, 6), SourceRange(18, 4));
-  }
-
-  Future<void> test_argumentRange_only_named() async {
-    await resolveTestCode('''
-void f() {
-  g(a: 0);
+  g(a: 1);
 }
 void g({int? a}) {}
 ''');
-    _assertArgumentRange(0, 0, SourceRange(15, 4), SourceRange(15, 4));
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 4));
   }
 
-  Future<void> test_argumentRange_only_positional() async {
+  Future<void> test_argumentList_only_named_trailingComma() async {
     await resolveTestCode('''
 void f() {
-  g(0);
+  g(a: 1,);
+}
+void g({int? a}) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 5));
+  }
+
+  Future<void> test_argumentList_only_positional() async {
+    await resolveTestCode('''
+void f() {
+  g(1);
 }
 void g(int a) {}
 ''');
-    _assertArgumentRange(0, 0, SourceRange(15, 1), SourceRange(15, 1));
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 1));
   }
 
+  Future<void> test_argumentList_only_positional_trailingComma() async {
+    await resolveTestCode('''
+void f() {
+  g(1,);
+}
+void g(int a) {}
+''');
+    var list = _argumentList;
+    expect(range.nodeInList(list, list[0]), SourceRange(15, 2));
+  }
+}
+
+@reflectiveTest
+class RangeFactoryTest extends AbstractSingleUnitTest {
   Future<void> test_elementName() async {
     await resolveTestCode('class ABC {}');
     var element = findElement.class_('ABC');
@@ -215,117 +351,6 @@
     expect(range.node(mainName), SourceRange(0, 4));
   }
 
-  Future<void> test_nodeInList_argumentList_first_named() async {
-    await resolveTestCode('''
-void f() {
-  g(a: 1, b: 2);
-}
-void g({int? a, int? b}) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[0]), SourceRange(15, 6));
-  }
-
-  Future<void> test_nodeInList_argumentList_first_positional() async {
-    await resolveTestCode('''
-void f() {
-  g(1, 2);
-}
-void g(int a, int b) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[0]), SourceRange(15, 3));
-  }
-
-  Future<void> test_nodeInList_argumentList_last_named() async {
-    await resolveTestCode('''
-void f() {
-  g(a: 1, b: 2);
-}
-void g({int? a, int? b}) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[1]), SourceRange(19, 6));
-  }
-
-  Future<void> test_nodeInList_argumentList_last_positional() async {
-    await resolveTestCode('''
-void f() {
-  g(1, 2);
-}
-void g(int a, int b) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[1]), SourceRange(16, 3));
-  }
-
-  Future<void> test_nodeInList_argumentList_middle_named() async {
-    await resolveTestCode('''
-void f() {
-  g(a: 1, b: 2, c: 3);
-}
-void g({int? a, int? b, int? c}) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[1]), SourceRange(19, 6));
-  }
-
-  Future<void> test_nodeInList_argumentList_middle_positional() async {
-    await resolveTestCode('''
-void f() {
-  g(1, 2, 3);
-}
-void g(int a, int b, int c) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[1]), SourceRange(16, 3));
-  }
-
-  Future<void> test_nodeInList_argumentList_only_named() async {
-    await resolveTestCode('''
-void f() {
-  g(a: 1);
-}
-void g({int? a}) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[0]), SourceRange(15, 4));
-  }
-
-  Future<void> test_nodeInList_argumentList_only_named_trailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(a: 1,);
-}
-void g({int? a}) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[0]), SourceRange(15, 5));
-  }
-
-  Future<void> test_nodeInList_argumentList_only_positional() async {
-    await resolveTestCode('''
-void f() {
-  g(1);
-}
-void g(int a) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[0]), SourceRange(15, 1));
-  }
-
-  Future<void>
-      test_nodeInList_argumentList_only_positional_trailingComma() async {
-    await resolveTestCode('''
-void f() {
-  g(1,);
-}
-void g(int a) {}
-''');
-    var list = _argumentList;
-    expect(range.nodeInList(list, list[0]), SourceRange(15, 2));
-  }
-
   Future<void> test_nodes() async {
     await resolveTestCode(' main() {}');
     var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
@@ -376,22 +401,4 @@
     var mainName = mainFunction.name;
     expect(range.token(mainName.beginToken), SourceRange(1, 4));
   }
-
-  /// Assuming that the test code starts with a function whose block body starts
-  /// with a method invocation, compute the range for the arguments in the
-  /// invocation's argument list between [lower] and [upper]. Validate that the
-  /// range for deletion matches [expectedForDeletion] and that the range not
-  /// for deletion matches [expectedNoDeletion].
-  void _assertArgumentRange(int lower, int upper,
-      SourceRange expectedForDeletion, SourceRange expectedNoDeletion) {
-    var f = testUnit.declarations[0] as FunctionDeclaration;
-    var body = f.functionExpression.body as BlockFunctionBody;
-    var statement = body.block.statements[0] as ExpressionStatement;
-    var invocation = statement.expression as MethodInvocation;
-    var argumentList = invocation.argumentList;
-    expect(range.argumentRange(argumentList, lower, upper, true),
-        expectedForDeletion);
-    expect(range.argumentRange(argumentList, lower, upper, false),
-        expectedNoDeletion);
-  }
 }
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index f55ce1a..ca5860b 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -4803,21 +4803,33 @@
     /// list and the element type is known to be invariant so it can skip the
     /// type check.
     bool isNativeListInvariantAdd(InvocationExpression node) {
-      Expression receiver;
-      if (receiver != null && node.name.text == 'add') {
+      if (node is InstanceInvocation &&
+          node.isInvariant &&
+          node.name.text == 'add') {
         // The call to add is marked as invariant, so the type check on the
         // parameter to add is not needed.
+        var receiver = node.receiver;
         if (receiver is VariableGet &&
             receiver.variable.isFinal &&
             !receiver.variable.isLate) {
           // The receiver is a final variable, so it only contains the
           // initializer value. Also, avoid late variables in case the CFE
           // lowering of late variables is changed in the future.
-          if (receiver.variable.initializer is ListLiteral) {
+          var initializer = receiver.variable.initializer;
+          if (initializer is ListLiteral) {
             // The initializer is a list literal, so we know the list can be
             // grown, modified, and is represented by a JavaScript Array.
             return true;
           }
+          if (initializer is StaticInvocation &&
+              initializer.target.enclosingClass == _coreTypes.listClass &&
+              initializer.target.name.text == 'of' &&
+              initializer.arguments.named.isEmpty) {
+            // The initializer is a `List.of()` call from the dart:core library
+            // and the growable named argument has not been passed (it defaults
+            // to true).
+            return true;
+          }
         }
       }
       return false;
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 4ed6af7..bebd92b 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -601,9 +601,10 @@
     - "class C { static f; }"
 
 FunctionTypedParameterVar:
+  index: 119
   problemMessage: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
   correctionMessage: "Try replacing the keyword with a return type."
-  analyzerCode: FUNCTION_TYPED_PARAMETER_VAR
+  analyzerCode: ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR
   script:
     - "void f(const x()) {}"
     - "void f(final x()) {}"
@@ -2742,9 +2743,13 @@
   problemMessage: "An operator can't have optional parameters."
 
 OperatorWithTypeParameters:
+  index: 120
   problemMessage: "Types parameters aren't allowed when defining an operator."
   correctionMessage: "Try removing the type parameters."
-  analyzerCode: TYPE_PARAMETER_ON_OPERATOR
+  analyzerCode: ParserErrorCode.TYPE_PARAMETER_ON_OPERATOR
+  comment: |-
+    7.1.1 Operators: Type parameters are not syntactically supported on an
+    operator.
   script:
     - "class C { operator []<T>(T t) => null; }"
 
@@ -5414,4 +5419,4 @@
   problemMessage: "'new' can only be used as a constructor reference."
   experiments: constructor-tearoffs
   script: |
-    method(dynamic d) => d.new;
\ No newline at end of file
+    method(dynamic d) => d.new;
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
index 8ddda11..ef7f8ee 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
@@ -22,6 +22,6 @@
   synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3261,getterSelectorId:3262]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3266,getterSelectorId:3267]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
     return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
index 64e1bc1..4a68920 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
@@ -51,6 +51,6 @@
   synthetic constructor •() → self::ConstClass
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3265,getterSelectorId:3266]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3270,getterSelectorId:3271]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
     return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
 }
diff --git a/sdk/lib/_internal/vm/bin/socket_patch.dart b/sdk/lib/_internal/vm/bin/socket_patch.dart
index 9a68d6f..5f0379e 100644
--- a/sdk/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk/lib/_internal/vm/bin/socket_patch.dart
@@ -2545,7 +2545,9 @@
 
 @pragma("vm:entry-point")
 class _ResourceHandleImpl implements ResourceHandle {
+  @pragma("vm:entry-point")
   int _handle; // file descriptor on linux
+  @pragma("vm:entry-point")
   _ResourceHandleImpl(this._handle);
 
   @pragma("vm:external-name", "ResourceHandleImpl_toFile")
@@ -2572,6 +2574,7 @@
   @pragma("vm:external-name", "ResourceHandleImpl_toRawDatagramSocket")
   external RawDatagramSocket toRawDatagramSocket();
 
+  @pragma("vm:entry-point")
   static final _ResourceHandleImpl _sentinel = _ResourceHandleImpl(-1);
 }
 
@@ -2581,11 +2584,16 @@
       native "SocketControlMessage_fromHandles";
 }
 
+@pragma("vm:entry-point")
 class _SocketControlMessageImpl implements SocketControlMessage {
+  @pragma("vm:entry-point")
   final int level;
+  @pragma("vm:entry-point")
   final int type;
+  @pragma("vm:entry-point")
   final Uint8List data;
 
+  @pragma("vm:entry-point")
   _SocketControlMessageImpl(this.level, this.type, this.data);
 
   @pragma("vm:external-name", "SocketControlMessageImpl_extractHandles")
diff --git a/sdk/lib/io/file_impl.dart b/sdk/lib/io/file_impl.dart
index 1311444..b8361d0 100644
--- a/sdk/lib/io/file_impl.dart
+++ b/sdk/lib/io/file_impl.dart
@@ -662,6 +662,7 @@
   lock(int lock, int start, int end);
 }
 
+@pragma("vm:entry-point")
 class _RandomAccessFile implements RandomAccessFile {
   static bool _connectedResourceHandler = false;
 
@@ -672,6 +673,7 @@
   late _FileResourceInfo _resourceInfo;
   _RandomAccessFileOps _ops;
 
+  @pragma("vm:entry-point")
   _RandomAccessFile(int pointer, this.path)
       : _ops = new _RandomAccessFileOps(pointer) {
     _resourceInfo = new _FileResourceInfo(this);
diff --git a/tests/standalone/io/unix_socket_test.dart b/tests/standalone/io/unix_socket_test.dart
index f87a4e5..a8bf0cb 100644
--- a/tests/standalone/io/unix_socket_test.dart
+++ b/tests/standalone/io/unix_socket_test.dart
@@ -697,6 +697,7 @@
           final receivedSocket = handles[0].toRawSocket();
           receivedSocket.write('Hello, server!\n'.codeUnits);
           socket.write('server replied'.codeUnits);
+          receivedSocket.close();
           break;
         case RawSocketEvent.readClosed:
           socket.close();
diff --git a/tests/standalone_2/io/unix_socket_test.dart b/tests/standalone_2/io/unix_socket_test.dart
index 98b27a5..04e8cb2 100644
--- a/tests/standalone_2/io/unix_socket_test.dart
+++ b/tests/standalone_2/io/unix_socket_test.dart
@@ -693,6 +693,7 @@
           final receivedSocket = handles[0].toRawSocket();
           receivedSocket.write('Hello, server!\n'.codeUnits);
           socket.write('server replied'.codeUnits);
+          receivedSocket.close();
           break;
         case RawSocketEvent.readClosed:
           socket.close();
diff --git a/tools/VERSION b/tools/VERSION
index 0510da6..b8395e8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 200
+PRERELEASE 201
 PRERELEASE_PATCH 0
\ No newline at end of file