Add "super-parameters" experiment flag

Part of https://github.com/dart-lang/sdk/issues/47525.

Change-Id: If7bf6f39b9b3ade1769f158ea1ca45515f859a2a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/217640
Auto-Submit: Chloe Stefantsova <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 0c9499c..557a2e8 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -80,7 +80,7 @@
 /// TODO(scheglov) Clean up the list of implicitly analyzed files.
 class AnalysisDriver implements AnalysisDriverGeneric {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 189;
+  static const int DATA_VERSION = 190;
 
   /// The number of exception contexts allowed to write. Once this field is
   /// zero, we stop writing any new exception contexts in this process.
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
index e4c3cc4..ce99ad0 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
@@ -28,6 +28,7 @@
       ExperimentalFeatures.nonfunction_type_aliases,
   EnableString.set_literals: ExperimentalFeatures.set_literals,
   EnableString.spread_collections: ExperimentalFeatures.spread_collections,
+  EnableString.super_parameters: ExperimentalFeatures.super_parameters,
   EnableString.test_experiment: ExperimentalFeatures.test_experiment,
   EnableString.triple_shift: ExperimentalFeatures.triple_shift,
   EnableString.value_class: ExperimentalFeatures.value_class,
@@ -76,6 +77,9 @@
   /// String to enable the experiment "spread-collections"
   static const String spread_collections = 'spread-collections';
 
+  /// String to enable the experiment "super-parameters"
+  static const String super_parameters = 'super-parameters';
+
   /// String to enable the experiment "test-experiment"
   static const String test_experiment = 'test-experiment';
 
@@ -223,8 +227,18 @@
     releaseVersion: Version.parse('2.0.0'),
   );
 
-  static final test_experiment = ExperimentalFeature(
+  static final super_parameters = ExperimentalFeature(
     index: 13,
+    enableString: EnableString.super_parameters,
+    isEnabledByDefault: IsEnabledByDefault.super_parameters,
+    isExpired: IsExpired.super_parameters,
+    documentation: 'Super-Initializer Parameters',
+    experimentalReleaseVersion: null,
+    releaseVersion: null,
+  );
+
+  static final test_experiment = ExperimentalFeature(
+    index: 14,
     enableString: EnableString.test_experiment,
     isEnabledByDefault: IsEnabledByDefault.test_experiment,
     isExpired: IsExpired.test_experiment,
@@ -235,7 +249,7 @@
   );
 
   static final triple_shift = ExperimentalFeature(
-    index: 14,
+    index: 15,
     enableString: EnableString.triple_shift,
     isEnabledByDefault: IsEnabledByDefault.triple_shift,
     isExpired: IsExpired.triple_shift,
@@ -245,7 +259,7 @@
   );
 
   static final value_class = ExperimentalFeature(
-    index: 15,
+    index: 16,
     enableString: EnableString.value_class,
     isEnabledByDefault: IsEnabledByDefault.value_class,
     isExpired: IsExpired.value_class,
@@ -255,7 +269,7 @@
   );
 
   static final variance = ExperimentalFeature(
-    index: 16,
+    index: 17,
     enableString: EnableString.variance,
     isEnabledByDefault: IsEnabledByDefault.variance,
     isExpired: IsExpired.variance,
@@ -307,6 +321,9 @@
   /// Default state of the experiment "spread-collections"
   static const bool spread_collections = true;
 
+  /// Default state of the experiment "super-parameters"
+  static const bool super_parameters = false;
+
   /// Default state of the experiment "test-experiment"
   static const bool test_experiment = false;
 
@@ -363,6 +380,9 @@
   /// Expiration status of the experiment "spread-collections"
   static const bool spread_collections = true;
 
+  /// Expiration status of the experiment "super-parameters"
+  static const bool super_parameters = false;
+
   /// Expiration status of the experiment "test-experiment"
   static const bool test_experiment = false;
 
@@ -423,6 +443,9 @@
   bool get spread_collections =>
       isEnabled(ExperimentalFeatures.spread_collections);
 
+  /// Current state for the flag "super-parameters"
+  bool get super_parameters => isEnabled(ExperimentalFeatures.super_parameters);
+
   /// Current state for the flag "test-experiment"
   bool get test_experiment => isEnabled(ExperimentalFeatures.test_experiment);
 
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 82414c9..4102f5a 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
@@ -24,6 +24,7 @@
   nonfunctionTypeAliases,
   setLiterals,
   spreadCollections,
+  superParameters,
   testExperiment,
   tripleShift,
   valueClass,
@@ -45,6 +46,7 @@
 const Version enableNonfunctionTypeAliasesVersion = const Version(2, 13);
 const Version enableSetLiteralsVersion = const Version(2, 0);
 const Version enableSpreadCollectionsVersion = const Version(2, 0);
+const Version enableSuperParametersVersion = const Version(2, 15);
 const Version enableTestExperimentVersion = const Version(2, 15);
 const Version enableTripleShiftVersion = const Version(2, 14);
 const Version enableValueClassVersion = const Version(2, 15);
@@ -80,6 +82,8 @@
       return ExperimentalFlag.setLiterals;
     case "spread-collections":
       return ExperimentalFlag.spreadCollections;
+    case "super-parameters":
+      return ExperimentalFlag.superParameters;
     case "test-experiment":
       return ExperimentalFlag.testExperiment;
     case "triple-shift":
@@ -107,6 +111,7 @@
   ExperimentalFlag.nonfunctionTypeAliases: true,
   ExperimentalFlag.setLiterals: true,
   ExperimentalFlag.spreadCollections: true,
+  ExperimentalFlag.superParameters: false,
   ExperimentalFlag.testExperiment: false,
   ExperimentalFlag.tripleShift: true,
   ExperimentalFlag.valueClass: false,
@@ -128,6 +133,7 @@
   ExperimentalFlag.nonfunctionTypeAliases: false,
   ExperimentalFlag.setLiterals: true,
   ExperimentalFlag.spreadCollections: true,
+  ExperimentalFlag.superParameters: false,
   ExperimentalFlag.testExperiment: false,
   ExperimentalFlag.tripleShift: false,
   ExperimentalFlag.valueClass: false,
@@ -149,6 +155,7 @@
   ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 13),
   ExperimentalFlag.setLiterals: const Version(2, 0),
   ExperimentalFlag.spreadCollections: const Version(2, 0),
+  ExperimentalFlag.superParameters: const Version(2, 15),
   ExperimentalFlag.testExperiment: const Version(2, 15),
   ExperimentalFlag.tripleShift: const Version(2, 14),
   ExperimentalFlag.valueClass: const Version(2, 15),
@@ -170,6 +177,7 @@
   ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 13),
   ExperimentalFlag.setLiterals: const Version(2, 0),
   ExperimentalFlag.spreadCollections: const Version(2, 0),
+  ExperimentalFlag.superParameters: const Version(2, 15),
   ExperimentalFlag.testExperiment: const Version(2, 15),
   ExperimentalFlag.tripleShift: const Version(2, 14),
   ExperimentalFlag.valueClass: const Version(2, 15),
diff --git a/tools/experimental_features.yaml b/tools/experimental_features.yaml
index bf28d56..3c3b0a7 100644
--- a/tools/experimental_features.yaml
+++ b/tools/experimental_features.yaml
@@ -128,6 +128,9 @@
   named-arguments-anywhere:
     help: "Named Arguments Anywhere"
 
+  super-parameters:
+    help: "Super-Initializer Parameters"
+
 # Experiment flag only used for testing.
   test-experiment:
     help: >-