If you‘re implementing a language feature, then it needs to have an accompanying experiment flag. (Or multiple experiments if it’s going to be enabled over the course of multiple releases.)
Experiment flags are shared across all of the tools, so they are defined in a single location. To add a new flag, edit experimental_features.yaml
. The initial commit is only required to define the name and to include a help:
key.
To generate the declarations used by the analyzer, run dart pkg/analyzer/tool/experiments/generate.dart
.
To generate the declarations used by the front-end, run dart pkg/front_end/tool/cfe.dart generate-experimental-flags
.
The set of (the indexes of) enabled experiments is used to build the hash for summary files. If defining the new experiment flag changes the indexes of existing experiment flags, then the value of the static field AnalysisDriver.DATA_VERSION
needs to be incremented.