Switch to using FeatureSet in summary tests

Change-Id: I16b13a2509836485417013da48d5b1ae4c92f618
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101069
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/test/src/summary/expr_builder_test.dart b/pkg/analyzer/test/src/summary/expr_builder_test.dart
index a5b62d9..385c03e 100644
--- a/pkg/analyzer/test/src/summary/expr_builder_test.dart
+++ b/pkg/analyzer/test/src/summary/expr_builder_test.dart
@@ -6,7 +6,6 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/error/listener.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/scanner/reader.dart';
 import 'package:analyzer/src/dart/scanner/scanner.dart';
@@ -297,7 +296,6 @@
   }
 
   void test_list_for() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (i = 0; i < 10; i++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -306,7 +304,6 @@
   }
 
   void test_list_for_each_with_declaration_typed() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (int i in const []) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -320,7 +317,6 @@
   }
 
   void test_list_for_each_with_declaration_untyped() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (var i in const []) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -334,7 +330,6 @@
   }
 
   void test_list_for_each_with_identifier() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (i in const []) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -343,7 +338,6 @@
   }
 
   void test_list_for_each_with_identifier_await() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[await for (i in const []) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -352,7 +346,6 @@
   }
 
   void test_list_for_empty_condition() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (i = 0;; i++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -361,7 +354,6 @@
   }
 
   void test_list_for_empty_initializer() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (; i < 10; i++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -370,7 +362,6 @@
   }
 
   void test_list_for_two_updaters() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (i = 0; i < 10; i++, j++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -379,7 +370,6 @@
   }
 
   void test_list_for_with_one_declaration_typed() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (int i = 0; i < 10; i++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -399,7 +389,6 @@
   }
 
   void test_list_for_with_one_declaration_untyped() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (var i = 0; i < 10; i++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -419,7 +408,6 @@
   }
 
   void test_list_for_with_two_declarations_untyped() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (var i = 0, j = 0; i < 10; j++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -440,7 +428,6 @@
   }
 
   void test_list_for_with_uninitialized_declaration_untyped() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (var i; i < 10; i++) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -460,7 +447,6 @@
   }
 
   void test_list_for_zero_updaters() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '[for (i = 0; i < 10;) i]';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -489,7 +475,6 @@
   }
 
   void test_map_for() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '{1 : 2, for (i = 0; i < 10; i++) i : i}';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -647,7 +632,6 @@
   }
 
   void test_set_for() {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var sourceText = '{1, for (i = 0; i < 10; i++) i}';
     // Resynthesis inserts synthetic "const" tokens; work around that.
     var expectedText = 'const $sourceText';
@@ -773,7 +757,7 @@
 class ExprBuilderWithConstantUpdateTest extends ResynthesizeTestStrategyTwoPhase
     with ExprBuilderTestHelpers {
   @override
-  ExperimentStatus get experimentStatus => new ExperimentStatus.forTesting(
+  FeatureSet get featureSet => new FeatureSet.forTesting(
       sdkVersion: '2.2.2',
       additionalFeatures: [Feature.constant_update_2018, Feature.triple_shift]);
 
diff --git a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
index bf5c700..69d4a5b 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
@@ -41,7 +41,7 @@
     for (var sdkLibrary in sdk.sdkLibraries) {
       var source = sourceFactory.resolveUri(null, sdkLibrary.shortName);
       var text = getFile(source.fullName).readAsStringSync();
-      var unit = parseText(text);
+      var unit = parseText(text, featureSet);
 
       var inputUnits = <LinkInputUnit>[];
       _addLibraryUnits(source, unit, inputUnits);
@@ -139,12 +139,12 @@
 
         if (partSource != null) {
           var text = _readSafely(partSource.fullName);
-          var unit = parseText(text, experimentStatus: experimentStatus);
+          var unit = parseText(text, featureSet);
           units.add(
             LinkInputUnit(partSource, false, unit),
           );
         } else {
-          var unit = parseText('', experimentStatus: experimentStatus);
+          var unit = parseText('', featureSet);
           units.add(
             LinkInputUnit(partSource, false, unit),
           );
@@ -165,7 +165,7 @@
     }
 
     var text = _readSafely(source.fullName);
-    var unit = parseText(text, experimentStatus: experimentStatus);
+    var unit = parseText(text, featureSet);
 
     var units = <LinkInputUnit>[];
     _addLibraryUnits(source, unit, units);
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index 134519d..8f9c7ff 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -10,7 +10,6 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/context/context.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/summary/idl.dart';
@@ -1002,7 +1001,7 @@
   }
 
   test_class_field_const_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library =
         await checkLibrary('class C { static late const int i = 0; }');
@@ -1023,7 +1022,7 @@
   }
 
   test_class_field_implicit_type_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library = await checkLibrary('class C { late var x; }');
     checkElementText(library, r'''
@@ -1043,7 +1042,7 @@
   }
 
   test_class_field_static_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library = await checkLibrary('class C { static late int i; }');
     checkElementText(library, r'''
@@ -1064,7 +1063,7 @@
   }
 
   test_class_fields_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library = await checkLibrary('class C { int i; late int j; }');
     checkElementText(library, r'''
@@ -2984,7 +2983,6 @@
   }
 
   test_const_list_if() async {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>[if (true) 1];
 ''');
@@ -2998,7 +2996,6 @@
   }
 
   test_const_list_if_else() async {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>[if (true) 1 else 2];
 ''');
@@ -3034,7 +3031,6 @@
   }
 
   test_const_list_spread() async {
-    experimentStatus = ExperimentStatus(spread_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>[...<int>[1]];
 ''');
@@ -3057,7 +3053,6 @@
   }
 
   test_const_list_spread_null_aware() async {
-    experimentStatus = ExperimentStatus(spread_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>[...?<int>[1]];
 ''');
@@ -3080,7 +3075,6 @@
   }
 
   test_const_map_if() async {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int, int>{if (true) 1: 2};
 ''');
@@ -3095,7 +3089,6 @@
   }
 
   test_const_map_if_else() async {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int, int>{if (true) 1: 2 else 3: 4];
 ''');
@@ -3133,7 +3126,6 @@
   }
 
   test_const_map_spread() async {
-    experimentStatus = ExperimentStatus(spread_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int, int>{...<int, int>{1: 2}};
 ''');
@@ -3160,7 +3152,6 @@
   }
 
   test_const_map_spread_null_aware() async {
-    experimentStatus = ExperimentStatus(spread_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int, int>{...?<int, int>{1: 2}};
 ''');
@@ -3627,7 +3618,6 @@
   }
 
   test_const_set_if() async {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>{if (true) 1};
 ''');
@@ -3641,7 +3631,6 @@
   }
 
   test_const_set_if_else() async {
-    experimentStatus = ExperimentStatus(control_flow_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>{if (true) 1 else 2];
 ''');
@@ -3677,7 +3666,6 @@
   }
 
   test_const_set_spread() async {
-    experimentStatus = ExperimentStatus(spread_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>{...<int>{1}};
 ''');
@@ -3700,7 +3688,6 @@
   }
 
   test_const_set_spread_null_aware() async {
-    experimentStatus = ExperimentStatus(spread_collections: true);
     var library = await checkLibrary('''
 const Object x = const <int>{...?<int>{1}};
 ''');
@@ -9936,7 +9923,7 @@
   }
 
   test_variable_const_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library = await checkLibrary('late const int i = 0;');
     checkElementText(library, r'''
@@ -9967,7 +9954,7 @@
   }
 
   test_variable_final_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library = await checkLibrary('late final int x = 0;');
     checkElementText(library, r'''
@@ -10079,7 +10066,7 @@
   }
 
   test_variable_late() async {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     var library = await checkLibrary('late int x = 0;');
     checkElementText(library, r'''
diff --git a/pkg/analyzer/test/src/summary/summary_common.dart b/pkg/analyzer/test/src/summary/summary_common.dart
index d408261..1dd664a 100644
--- a/pkg/analyzer/test/src/summary/summary_common.dart
+++ b/pkg/analyzer/test/src/summary/summary_common.dart
@@ -5,7 +5,6 @@
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/error/listener.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/scanner/reader.dart';
 import 'package:analyzer/src/dart/scanner/scanner.dart';
 import 'package:analyzer/src/generated/parser.dart';
@@ -1753,7 +1752,7 @@
   }
 
   test_constExpr_binary_bitShiftRightLogical() {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2',
         additionalFeatures: [
           Feature.constant_update_2018,
@@ -2836,8 +2835,6 @@
   }
 
   test_constExpr_list_if() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = [if (true) 1];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[if (true) 1]',
@@ -2854,8 +2851,6 @@
   }
 
   test_constExpr_list_if_else() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = [if (true) 1 else 2];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[if (true) 1 else 2]',
@@ -2874,8 +2869,6 @@
   }
 
   test_constExpr_list_spread() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText('const v = [...[]];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[...[]]', operators: [
       UnlinkedExprOperation.makeUntypedList,
@@ -2888,8 +2881,6 @@
   }
 
   test_constExpr_list_spread_null_aware() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText('const v = [...?[]];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[...?[]]', operators: [
       UnlinkedExprOperation.makeUntypedList,
@@ -3094,7 +3085,6 @@
   }
 
   test_constExpr_makeTypedSet() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = const <int>{11, 22, 33};');
     assertUnlinkedConst(
@@ -3115,7 +3105,6 @@
   }
 
   test_constExpr_makeTypedSet_dynamic() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = const <dynamic>{11, 22, 33};');
     assertUnlinkedConst(
@@ -3133,7 +3122,6 @@
   }
 
   test_constExpr_makeTypedSet_functionType() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable =
         serializeVariableText('final v = <void Function(int)>{};');
     assertUnlinkedConst(variable.initializer.bodyExpr, '<void Function(int)>{}',
@@ -3162,7 +3150,6 @@
   }
 
   test_constExpr_makeTypedSet_functionType_withTypeParameters() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable = serializeVariableText(
         'final v = <void Function<T>(Function<Q>(T, Q))>{};');
     assertUnlinkedConst(variable.initializer.bodyExpr,
@@ -3254,7 +3241,6 @@
   }
 
   test_constExpr_makeUntypedSet() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = const {11, 22, 33};');
     assertUnlinkedConst(
@@ -3271,8 +3257,6 @@
   }
 
   test_constExpr_map_if() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int, int>{if (true) 1 : 2};');
     assertUnlinkedConst(
@@ -3299,8 +3283,6 @@
   }
 
   test_constExpr_map_if_else() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText(
         'const v = <int, int>{if (true) 1 : 2 else 3 : 4};');
     assertUnlinkedConst(
@@ -3332,8 +3314,6 @@
   }
 
   test_constExpr_map_spread() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int, String>{...<int, String>{}};');
     assertUnlinkedConst(
@@ -3360,8 +3340,6 @@
   }
 
   test_constExpr_map_spread_null_aware() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int, String>{...?<int, String>{}};');
     assertUnlinkedConst(
@@ -4106,8 +4084,6 @@
   }
 
   test_constExpr_set_if() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int>{if (true) 1};');
     assertUnlinkedConst(variable.initializer.bodyExpr, '<int>{if (true) 1}',
@@ -4128,8 +4104,6 @@
   }
 
   test_constExpr_set_if_else() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int>{if (true) 1 else 2};');
     assertUnlinkedConst(
@@ -4153,8 +4127,6 @@
   }
 
   test_constExpr_set_spread() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int>{...<int>{}};');
     assertUnlinkedConst(variable.initializer.bodyExpr, '<int>{...<int>{}}',
@@ -4176,8 +4148,6 @@
   }
 
   test_constExpr_set_spread_null_aware() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('const v = <int>{...?<int>{}};');
     assertUnlinkedConst(variable.initializer.bodyExpr, '<int>{...?<int>{}}',
@@ -7855,8 +7825,6 @@
   }
 
   test_expr_list_for() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('int i; var v = [for (i = 0; i < 10; i++) i];');
     assertUnlinkedConst(
@@ -7897,8 +7865,6 @@
   }
 
   test_expr_list_for_each_with_declaration_typed() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('var v = [for (int i in []) i];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[for (int i in []) i]',
@@ -7924,8 +7890,6 @@
   }
 
   test_expr_list_for_each_with_declaration_untyped() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('var v = [for (var i in []) i];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[for (var i in []) i]',
@@ -7948,8 +7912,6 @@
   }
 
   test_expr_list_for_each_with_identifier() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('int i; var v = [for (i in []) i];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[for (i in []) i]',
@@ -7975,8 +7937,6 @@
   }
 
   test_expr_list_for_each_with_identifier_await() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('int i; var v = [await for (i in []) i];');
     assertUnlinkedConst(
@@ -8003,8 +7963,6 @@
   }
 
   test_expr_list_for_empty_condition() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('int i; var v = [for (i = 0;; i++) i];');
     assertUnlinkedConst(variable.initializer.bodyExpr, '[for (i = 0;; i++) i]',
@@ -8039,8 +7997,6 @@
   }
 
   test_expr_list_for_empty_initializer() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('int i; var v = [for (; i < 10; i++) i];');
     assertUnlinkedConst(
@@ -8076,8 +8032,6 @@
   }
 
   test_expr_list_for_two_updaters() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText(
         'int i; int j; var v = [for (i = 0; i < 10; i++, j++) i];');
     assertUnlinkedConst(
@@ -8122,8 +8076,6 @@
   }
 
   test_expr_list_for_with_one_declaration_typed() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('var v = [for (int i = 0; i < 10; i++) i];');
     assertUnlinkedConst(
@@ -8166,8 +8118,6 @@
   }
 
   test_expr_list_for_with_one_declaration_untyped() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('var v = [for (var i = 0; i < 10; i++) i];');
     assertUnlinkedConst(
@@ -8207,8 +8157,6 @@
   }
 
   test_expr_list_for_with_two_declarations_untyped() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText(
         'var v = [for (var i = 0, j = 0; i < 10; i++) i];');
     assertUnlinkedConst(variable.initializer.bodyExpr,
@@ -8254,8 +8202,6 @@
   }
 
   test_expr_list_for_with_uninitialized_declaration_untyped() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('var v = [for (var i; i < 10; i++) i];');
     assertUnlinkedConst(
@@ -8294,8 +8240,6 @@
   }
 
   test_expr_list_for_zero_updaters() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable =
         serializeVariableText('int i; var v = [for (i = 0; i < 10;) i];');
     assertUnlinkedConst(
@@ -8361,7 +8305,6 @@
   }
 
   test_expr_makeTypedSet() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable =
         serializeVariableText('var v = <int>{11, 22, 33};');
     assertUnlinkedConst(variable.initializer.bodyExpr, '<int>{11, 22, 33}',
@@ -8410,7 +8353,6 @@
   }
 
   test_expr_makeUntypedSet() {
-    experimentStatus = ExperimentStatus(set_literals: true);
     UnlinkedVariable variable = serializeVariableText('var v = {11, 22, 33};');
     assertUnlinkedConst(variable.initializer.bodyExpr, '{11, 22, 33}',
         operators: [
@@ -8424,8 +8366,6 @@
   }
 
   test_expr_map_for() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText(
         'int i; var v = {1: 2, for (i = 0; i < 10; i++) i: i};');
     assertUnlinkedConst(
@@ -8475,8 +8415,6 @@
   }
 
   test_expr_set_for() {
-    experimentStatus = ExperimentStatus(
-        control_flow_collections: true, spread_collections: true);
     UnlinkedVariable variable = serializeVariableText(
         'int i; var v = {1, for (i = 0; i < 10; i++) i};');
     assertUnlinkedConst(
@@ -8868,7 +8806,7 @@
   }
 
   test_field_late() {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     UnlinkedClass cls = serializeClassText('class C { late int i; }');
     UnlinkedVariable variable = findVariable('i', variables: cls.fields);
@@ -8917,7 +8855,7 @@
   }
 
   test_field_static_final_late() {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     UnlinkedVariable variable =
         serializeClassText('class C { static late final int i = 0; }')
@@ -8941,7 +8879,7 @@
   }
 
   test_field_static_late() {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     UnlinkedVariable variable =
         serializeClassText('class C { static late int i; }').fields[0];
@@ -11786,7 +11724,7 @@
   }
 
   test_variable_late() {
-    experimentStatus = FeatureSet.forTesting(
+    featureSet = FeatureSet.forTesting(
         sdkVersion: '2.2.2', additionalFeatures: [Feature.non_nullable]);
     UnlinkedVariable variable =
         serializeVariableText('late int i;', variableName: 'i');
@@ -11946,10 +11884,10 @@
     var reader = new CharSequenceReader(sourceText);
     var stringSource = new StringSource(sourceText, null);
     var scanner = new Scanner(stringSource, reader, errorListener)
-      ..configureFeatures(experimentStatus);
+      ..configureFeatures(featureSet);
     var startToken = scanner.tokenize();
     var parser =
-        new Parser(stringSource, errorListener, featureSet: experimentStatus);
+        new Parser(stringSource, errorListener, featureSet: featureSet);
     var compilationUnit = parser.parseCompilationUnit(startToken);
     var f = compilationUnit.declarations[0] as FunctionDeclaration;
     var body = f.functionExpression.body as ExpressionFunctionBody;
diff --git a/pkg/analyzer/test/src/summary/test_strategies.dart b/pkg/analyzer/test/src/summary/test_strategies.dart
index eff84c4..a6879c6 100644
--- a/pkg/analyzer/test/src/summary/test_strategies.dart
+++ b/pkg/analyzer/test/src/summary/test_strategies.dart
@@ -3,11 +3,11 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/analysis/declared_variables.dart';
+import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/analysis/restricted_analysis_context.dart';
 import 'package:analyzer/src/dart/scanner/reader.dart';
 import 'package:analyzer/src/dart/scanner/scanner.dart';
@@ -35,18 +35,18 @@
 }
 
 CompilationUnit parseText(
-  String text, {
-  ExperimentStatus experimentStatus,
-}) {
-  experimentStatus ??= ExperimentStatus();
+  String text,
+  FeatureSet featureSet,
+) {
+  featureSet ??= FeatureSet.forTesting(sdkVersion: '2.3.0');
   CharSequenceReader reader = new CharSequenceReader(text);
   Scanner scanner =
       new Scanner(null, reader, AnalysisErrorListener.NULL_LISTENER)
-        ..configureFeatures(experimentStatus);
+        ..configureFeatures(featureSet);
   Token token = scanner.tokenize();
   Parser parser = new Parser(
       NonExistingSource.unknown, AnalysisErrorListener.NULL_LISTENER,
-      featureSet: experimentStatus);
+      featureSet: featureSet);
   CompilationUnit unit = parser.parseCompilationUnit(token);
   unit.lineInfo = new LineInfo(scanner.lineStarts);
   return unit;
@@ -93,8 +93,8 @@
 /// The tests themselves can then be provided via mixin, allowing summaries to
 /// be tested in a variety of ways.
 abstract class ResynthesizeTestStrategy {
-  /// The set of [ExperimentStatus] enabled in this test.
-  ExperimentStatus experimentStatus;
+  /// The set of features enabled in this test.
+  FeatureSet featureSet;
 
   void set allowMissingFiles(bool value);
 
@@ -127,7 +127,7 @@
 class ResynthesizeTestStrategyTwoPhase extends AbstractResynthesizeTest
     implements ResynthesizeTestStrategy {
   @override
-  ExperimentStatus experimentStatus = ExperimentStatus();
+  FeatureSet featureSet = FeatureSet.forTesting(sdkVersion: '2.2.2');
 
   final Set<Source> serializedSources = new Set<Source>();
 
@@ -176,8 +176,7 @@
         .map((Source source) => source.uri.toString())
         .toSet();
 
-    var analysisOptions = AnalysisOptionsImpl()
-      ..enabledExperiments = experimentStatus.toStringList();
+    var analysisOptions = AnalysisOptionsImpl()..contextFeatures = featureSet;
 
     Map<String, LinkedLibrary> linkedSummaries = link(nonSdkLibraryUris,
         getDependency, getUnit, declaredVariables, analysisOptions);
@@ -226,8 +225,7 @@
         contents = '';
       }
 
-      CompilationUnit unit =
-          parseText(contents, experimentStatus: experimentStatus);
+      CompilationUnit unit = parseText(contents, featureSet);
 
       UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
       bundleAssembler.addUnlinkedUnit(source, unlinkedUnit);
@@ -308,8 +306,8 @@
 /// The tests themselves can then be provided via mixin, allowing summaries to
 /// be tested in a variety of ways.
 abstract class SummaryBaseTestStrategy {
-  /// The set of [ExperimentStatus] enabled in this test.
-  ExperimentStatus experimentStatus;
+  /// The set of features enabled in this test.
+  FeatureSet featureSet;
 
   /// Add the given package bundle as a dependency so that it may be referenced
   /// by the files under test.
@@ -530,12 +528,12 @@
       new _FilesToLink<UnlinkedUnitBuilder>();
 
   @override
-  ExperimentStatus experimentStatus = ExperimentStatus();
+  FeatureSet featureSet = FeatureSet.forTesting();
 
   _LinkerInputs _linkerInputs;
 
-  AnalysisOptions get analysisOptions => AnalysisOptionsImpl()
-    ..enabledExperiments = experimentStatus.toStringList();
+  AnalysisOptions get analysisOptions =>
+      AnalysisOptionsImpl()..contextFeatures = featureSet;
 
   bool get _allowMissingFiles;
 
@@ -546,7 +544,7 @@
 
   @override
   void addNamedSource(String filePath, String contents) {
-    CompilationUnit unit = parseText(contents);
+    CompilationUnit unit = parseText(contents, featureSet);
     UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
     _filesToLink.uriToUnit[absUri(filePath)] = unlinkedUnit;
   }
@@ -572,8 +570,7 @@
 
   UnlinkedUnitBuilder createUnlinkedSummary(Uri uri, String text,
           {bool nnbd: false}) =>
-      serializeAstUnlinked(parseText(text, experimentStatus: experimentStatus),
-          nnbd: nnbd);
+      serializeAstUnlinked(parseText(text, featureSet), nnbd: nnbd);
 
   _LinkerInputs _createLinkerInputs(String text,
       {String path: '/test.dart', String uri, bool nnbd: false}) {