Version 2.10.0-148.0.dev

Merge commit '01154855d1ea8ba460ce67ee06c8f1626547fa52' into 'dev'
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
index fd36922..f29bfb4 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
@@ -78,7 +78,7 @@
     isExpired: IsExpired.control_flow_collections,
     documentation: 'Control Flow Collections',
     experimentalReleaseVersion: null,
-    releaseVersion: Version.parse('2.2.2'),
+    releaseVersion: Version.parse('2.0.0'),
   );
 
   static final extension_methods = ExperimentalFeature(
@@ -118,7 +118,7 @@
     isExpired: IsExpired.set_literals,
     documentation: 'Set Literals',
     experimentalReleaseVersion: null,
-    releaseVersion: Version.parse('2.2.0'),
+    releaseVersion: Version.parse('2.0.0'),
   );
 
   static final spread_collections = ExperimentalFeature(
@@ -128,7 +128,7 @@
     isExpired: IsExpired.spread_collections,
     documentation: 'Spread Collections',
     experimentalReleaseVersion: null,
-    releaseVersion: Version.parse('2.2.2'),
+    releaseVersion: Version.parse('2.0.0'),
   );
 
   static final triple_shift = ExperimentalFeature(
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 28b415a..8c827ee 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -1445,26 +1445,6 @@
     ]);
   }
 
-  void test_listLiteral_spread_disabled() {
-    ListLiteral list =
-        parseExpression('[1, ...[2]]', featureSet: beforeUiAsCode, errors: [
-      expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 4, 3),
-    ]);
-    expect(list.elements, hasLength(1));
-    IntegerLiteral first = list.elements[0];
-    expect(first.value, 1);
-  }
-
-  void test_listLiteral_spreadQ_disabled() {
-    ListLiteral list =
-        parseExpression('[1, ...?[2]]', featureSet: beforeUiAsCode, errors: [
-      expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 4, 4),
-    ]);
-    expect(list.elements, hasLength(1));
-    IntegerLiteral first = list.elements[0];
-    expect(first.value, 1);
-  }
-
   void test_lt_dot_bracket_quote() {
     // https://github.com/dart-lang/sdk/issues/37674
     ListLiteral list = parseExpression('<.["', errors: [
@@ -1511,17 +1491,6 @@
     expect(value.value, 6);
   }
 
-  void test_mapLiteral_invalid_set_entry_uiAsCodeDisabled() {
-    SetOrMapLiteral map =
-        parseExpression('<int, int>{1}', featureSet: beforeUiAsCode, errors: [
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 1),
-      expectedError(ParserErrorCode.MISSING_IDENTIFIER, 12, 1),
-    ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments.arguments, hasLength(2));
-    expect(map.elements, hasLength(1));
-  }
-
   @failingTest
   void test_mapLiteral_invalid_too_many_type_arguments1() {
     SetOrMapLiteral map = parseExpression('<int, int, int>{}', errors: [
@@ -1552,72 +1521,6 @@
     expect(map.elements, hasLength(0));
   }
 
-  void test_mapLiteral_spread2_typed_disabled() {
-    SetOrMapLiteral map = parseExpression('<int, int>{1: 2, ...{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [
-          expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 17, 3),
-        ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments.arguments, hasLength(2));
-    expect(map.elements, hasLength(1));
-  }
-
-  void test_mapLiteral_spread_disabled() {
-    SetOrMapLiteral map = parseExpression('{1: 2, ...{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [
-          expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 7, 3),
-        ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments, isNull);
-    expect(map.elements, hasLength(1));
-  }
-
-  void test_mapLiteral_spread_typed_disabled() {
-    SetOrMapLiteral map = parseExpression('<int, int>{...{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [
-          expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 11, 3),
-        ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments.arguments, hasLength(2));
-    expect(map.elements, hasLength(0));
-  }
-
-  void test_mapLiteral_spreadQ2_typed_disabled() {
-    SetOrMapLiteral map = parseExpression('<int, int>{1: 2, ...?{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [
-          expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 17, 4),
-        ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments.arguments, hasLength(2));
-    expect(map.elements, hasLength(1));
-  }
-
-  void test_mapLiteral_spreadQ_disabled() {
-    SetOrMapLiteral map = parseExpression('{1: 2, ...?{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [
-          expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 7, 4),
-        ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments, isNull);
-    expect(map.elements, hasLength(1));
-  }
-
-  void test_mapLiteral_spreadQ_typed_disabled() {
-    SetOrMapLiteral map = parseExpression('<int, int>{...?{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [
-          expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 11, 4),
-        ]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments.arguments, hasLength(2));
-    expect(map.elements, hasLength(0));
-  }
-
   void test_parseConstructorInitializer_functionExpression() {
     // https://github.com/dart-lang/sdk/issues/37414
     parseCompilationUnit('class C { C.n() : this()(); }', errors: [
@@ -1691,18 +1594,6 @@
     expect(value.value, 3);
   }
 
-  void test_setLiteral_invalid_map_entry_beforeUiAsCode() {
-    SetOrMapLiteral set =
-        parseExpression('<int>{1: 1}', featureSet: beforeUiAsCode, errors: [
-      expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 7, 1),
-    ]);
-    expect(set.constKeyword, isNull);
-    expect(set.typeArguments.arguments, hasLength(1));
-    NamedType typeArg = set.typeArguments.arguments[0];
-    expect(typeArg.name.name, 'int');
-    expect(set.elements.length, 1);
-  }
-
   void test_setLiteral_nested_typeArgument() {
     SetOrMapLiteral set = parseExpression('<Set<int>>{{3}}');
     expect(set.constKeyword, isNull);
@@ -1719,46 +1610,6 @@
     expect(value.value, 3);
   }
 
-  void test_setLiteral_spread2_disabled() {
-    SetOrMapLiteral set = parseExpression('{3, ...[4]}',
-        featureSet: beforeUiAsCode,
-        errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 4, 3)]);
-    expect(set.constKeyword, isNull);
-    expect(set.typeArguments, isNull);
-    expect(set.elements, hasLength(1));
-    IntegerLiteral value = set.elements[0];
-    expect(value.value, 3);
-  }
-
-  void test_setLiteral_spread2Q_disabled() {
-    SetOrMapLiteral set = parseExpression('{3, ...?[4]}',
-        featureSet: beforeUiAsCode,
-        errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 4, 4)]);
-    expect(set.constKeyword, isNull);
-    expect(set.typeArguments, isNull);
-    expect(set.elements, hasLength(1));
-    IntegerLiteral value = set.elements[0];
-    expect(value.value, 3);
-  }
-
-  void test_setLiteral_spread_typed_disabled() {
-    SetOrMapLiteral set = parseExpression('<int>{...[3]}',
-        featureSet: beforeUiAsCode,
-        errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 6, 3)]);
-    expect(set.constKeyword, isNull);
-    expect(set.typeArguments, isNotNull);
-    expect(set.elements, hasLength(0));
-  }
-
-  void test_setLiteral_spreadQ_typed_disabled() {
-    SetOrMapLiteral set = parseExpression('<int>{...?[3]}',
-        featureSet: beforeUiAsCode,
-        errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 6, 4)]);
-    expect(set.constKeyword, isNull);
-    expect(set.typeArguments, isNotNull);
-    expect(set.elements, hasLength(0));
-  }
-
   void test_setLiteral_typed() {
     SetOrMapLiteral set = parseExpression('<int>{3}');
     expect(set.constKeyword, isNull);
@@ -1769,24 +1620,6 @@
     IntegerLiteral value = set.elements[0];
     expect(value.value, 3);
   }
-
-  void test_setOrMapLiteral_spread_disabled() {
-    SetOrMapLiteral map = parseExpression('{...{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 1, 3)]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments, isNull);
-    expect(map.elements, hasLength(0));
-  }
-
-  void test_setOrMapLiteral_spreadQ_disabled() {
-    SetOrMapLiteral map = parseExpression('{...?{3: 4}}',
-        featureSet: beforeUiAsCode,
-        errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 1, 4)]);
-    expect(map.constKeyword, isNull);
-    expect(map.typeArguments, isNull);
-    expect(map.elements, hasLength(0));
-  }
 }
 
 @reflectiveTest
diff --git a/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart b/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
index c8a02f7..1b663a6 100644
--- a/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
@@ -2,9 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
-import 'package:pub_semver/pub_semver.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'recovery_test_support.dart';
@@ -58,31 +56,6 @@
 /// Test how well the parser recovers when tokens are missing in a map literal.
 @reflectiveTest
 class MapLiteralTest extends AbstractRecoveryTest {
-  final beforeUiAsCode = FeatureSet.fromEnableFlags2(
-    sdkLanguageVersion: Version.parse('2.2.0'),
-    flags: [],
-  );
-
-  void test_extraComma() {
-    testRecovery('''
-f() => {a: b, , c: d};
-''', [
-      ParserErrorCode.MISSING_IDENTIFIER,
-      ParserErrorCode.EXPECTED_TOKEN,
-      ParserErrorCode.MISSING_IDENTIFIER
-    ], '''
-f() => {a: b, _s_: _s_, c: d};
-''', featureSet: beforeUiAsCode);
-  }
-
-  void test_missingColonAndValue_last() {
-    testRecovery('''
-f() => {a: b, c };
-''', [ParserErrorCode.EXPECTED_TOKEN, ParserErrorCode.MISSING_IDENTIFIER], '''
-f() => {a: b, c: _s_};
-''', featureSet: beforeUiAsCode);
-  }
-
   void test_missingComma() {
     testRecovery('''
 f() => {a: b, c: d e: f};
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
index ab3a7e3..b9ab190 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
@@ -26,12 +26,12 @@
 const Version enableAlternativeInvalidationStrategyVersion =
     const Version(2, 10);
 const Version enableConstantUpdate2018Version = const Version(2, 4);
-const Version enableControlFlowCollectionsVersion = const Version(2, 2);
+const Version enableControlFlowCollectionsVersion = const Version(2, 0);
 const Version enableExtensionMethodsVersion = const Version(2, 6);
 const Version enableNonNullableVersion = const Version(2, 10);
 const Version enableNonfunctionTypeAliasesVersion = const Version(2, 10);
-const Version enableSetLiteralsVersion = const Version(2, 2);
-const Version enableSpreadCollectionsVersion = const Version(2, 2);
+const Version enableSetLiteralsVersion = const Version(2, 0);
+const Version enableSpreadCollectionsVersion = const Version(2, 0);
 const Version enableTripleShiftVersion = const Version(2, 10);
 const Version enableValueClassVersion = const Version(2, 10);
 const Version enableVarianceVersion = const Version(2, 10);
@@ -95,12 +95,12 @@
 const Map<ExperimentalFlag, Version> experimentEnabledVersion = {
   ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 10),
   ExperimentalFlag.constantUpdate2018: const Version(2, 4),
-  ExperimentalFlag.controlFlowCollections: const Version(2, 2),
+  ExperimentalFlag.controlFlowCollections: const Version(2, 0),
   ExperimentalFlag.extensionMethods: const Version(2, 6),
   ExperimentalFlag.nonNullable: const Version(2, 10),
   ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 10),
-  ExperimentalFlag.setLiterals: const Version(2, 2),
-  ExperimentalFlag.spreadCollections: const Version(2, 2),
+  ExperimentalFlag.setLiterals: const Version(2, 0),
+  ExperimentalFlag.spreadCollections: const Version(2, 0),
   ExperimentalFlag.tripleShift: const Version(2, 10),
   ExperimentalFlag.valueClass: const Version(2, 10),
   ExperimentalFlag.variance: const Version(2, 10),
@@ -109,12 +109,12 @@
 const Map<ExperimentalFlag, Version> experimentReleasedVersion = {
   ExperimentalFlag.alternativeInvalidationStrategy: const Version(2, 10),
   ExperimentalFlag.constantUpdate2018: const Version(2, 4),
-  ExperimentalFlag.controlFlowCollections: const Version(2, 2),
+  ExperimentalFlag.controlFlowCollections: const Version(2, 0),
   ExperimentalFlag.extensionMethods: const Version(2, 6),
   ExperimentalFlag.nonNullable: const Version(2, 10),
   ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 10),
-  ExperimentalFlag.setLiterals: const Version(2, 2),
-  ExperimentalFlag.spreadCollections: const Version(2, 2),
+  ExperimentalFlag.setLiterals: const Version(2, 0),
+  ExperimentalFlag.spreadCollections: const Version(2, 0),
   ExperimentalFlag.tripleShift: const Version(2, 10),
   ExperimentalFlag.valueClass: const Version(2, 10),
   ExperimentalFlag.variance: const Version(2, 10),
diff --git a/tools/VERSION b/tools/VERSION
index 7a99022..d990faa 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 147
+PRERELEASE 148
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/experimental_features.yaml b/tools/experimental_features.yaml
index ebeec9c..e6043be 100644
--- a/tools/experimental_features.yaml
+++ b/tools/experimental_features.yaml
@@ -131,15 +131,15 @@
 
   control-flow-collections:
     help: "Control Flow Collections"
-    enabledIn: '2.2.2'
+    enabledIn: '2.0.0'
     expired: true
 
   set-literals:
     help: "Set Literals"
-    enabledIn: 2.2
+    enabledIn: '2.0.0'
     expired: true
 
   spread-collections:
     help: "Spread Collections"
-    enabledIn: '2.2.2'
+    enabledIn: '2.0.0'
     expired: true