Experiment flags

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.)

Adding an experiment flag

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.

Summary representation

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.