blob: 02db7c1b7cb71b3937244c3b5c555f1dd0f7d1a0 [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// 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.
// NOTE: THIS FILE IS GENERATED. DO NOT EDIT.
//
// Instead modify 'tools/experimental_features.yaml' and run
// 'dart pkg/front_end/tool/fasta.dart generate-experimental-flags' to update.
part of 'experimental_flags.dart';
/// An experiment flag including its fixed properties.
class ExperimentalFlag {
/// The name of this flag as used in the --enable-experiment option.
final String name;
/// `true` if this experimental feature is enabled by default.
///
/// When `true`, the feature can still be disabled in individual libraries
/// with a language version below the [experimentEnabledVersion], and if not
/// [isExpired], the feature can also be disabled by using a 'no-' prefix
/// in the --enable-experiment option.
final bool isEnabledByDefault;
/// `true` if this feature can no longer be changed using the
/// --enable-experiment option.
///
/// Libraries can still opt out of the feature by using a language version
/// below the [experimentEnabledVersion].
final bool isExpired;
final Version enabledVersion;
/// The minimum version that supports this feature.
///
/// If the feature is not enabled by default, this is the current language
/// version.
final Version experimentEnabledVersion;
/// The minimum version that supports this feature in allowed libraries.
///
/// Allowed libraries are specified in
///
/// sdk/lib/_internal/allowed_experiments.json
final Version experimentReleasedVersion;
const ExperimentalFlag(
{required this.name,
required this.isEnabledByDefault,
required this.isExpired,
required this.enabledVersion,
required this.experimentEnabledVersion,
required this.experimentReleasedVersion});
static const ExperimentalFlag alternativeInvalidationStrategy =
const ExperimentalFlag(
name: 'alternative-invalidation-strategy',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 18),
experimentEnabledVersion: const Version(2, 18),
experimentReleasedVersion: const Version(2, 18));
static const ExperimentalFlag classModifiers = const ExperimentalFlag(
name: 'class-modifiers',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(3, 0),
experimentEnabledVersion: const Version(3, 0),
experimentReleasedVersion: const Version(3, 0));
static const ExperimentalFlag constFunctions = const ExperimentalFlag(
name: 'const-functions',
isEnabledByDefault: false,
isExpired: false,
enabledVersion: defaultLanguageVersion,
experimentEnabledVersion: defaultLanguageVersion,
experimentReleasedVersion: defaultLanguageVersion);
static const ExperimentalFlag constantUpdate2018 = const ExperimentalFlag(
name: 'constant-update-2018',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 0),
experimentEnabledVersion: const Version(2, 0),
experimentReleasedVersion: const Version(2, 0));
static const ExperimentalFlag constructorTearoffs = const ExperimentalFlag(
name: 'constructor-tearoffs',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 15),
experimentEnabledVersion: const Version(2, 15),
experimentReleasedVersion: const Version(2, 15));
static const ExperimentalFlag controlFlowCollections = const ExperimentalFlag(
name: 'control-flow-collections',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 0),
experimentEnabledVersion: const Version(2, 0),
experimentReleasedVersion: const Version(2, 0));
static const ExperimentalFlag enhancedEnums = const ExperimentalFlag(
name: 'enhanced-enums',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 17),
experimentEnabledVersion: const Version(2, 17),
experimentReleasedVersion: const Version(2, 17));
static const ExperimentalFlag extensionMethods = const ExperimentalFlag(
name: 'extension-methods',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 6),
experimentEnabledVersion: const Version(2, 6),
experimentReleasedVersion: const Version(2, 6));
static const ExperimentalFlag genericMetadata = const ExperimentalFlag(
name: 'generic-metadata',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 14),
experimentEnabledVersion: const Version(2, 14),
experimentReleasedVersion: const Version(2, 14));
static const ExperimentalFlag inferenceUpdate1 = const ExperimentalFlag(
name: 'inference-update-1',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 18),
experimentEnabledVersion: const Version(2, 18),
experimentReleasedVersion: const Version(2, 18));
static const ExperimentalFlag inferenceUpdate2 = const ExperimentalFlag(
name: 'inference-update-2',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(3, 2),
experimentEnabledVersion: const Version(3, 2),
experimentReleasedVersion: const Version(3, 2));
static const ExperimentalFlag inferenceUpdate3 = const ExperimentalFlag(
name: 'inference-update-3',
isEnabledByDefault: true,
isExpired: false,
enabledVersion: const Version(3, 4),
experimentEnabledVersion: const Version(3, 4),
experimentReleasedVersion: const Version(3, 4));
static const ExperimentalFlag inlineClass = const ExperimentalFlag(
name: 'inline-class',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(3, 3),
experimentEnabledVersion: const Version(3, 3),
experimentReleasedVersion: const Version(3, 3));
static const ExperimentalFlag macros = const ExperimentalFlag(
name: 'macros',
isEnabledByDefault: false,
isExpired: false,
enabledVersion: defaultLanguageVersion,
experimentEnabledVersion: defaultLanguageVersion,
experimentReleasedVersion: const Version(3, 3));
static const ExperimentalFlag namedArgumentsAnywhere = const ExperimentalFlag(
name: 'named-arguments-anywhere',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 17),
experimentEnabledVersion: const Version(2, 17),
experimentReleasedVersion: const Version(2, 17));
static const ExperimentalFlag nativeAssets = const ExperimentalFlag(
name: 'native-assets',
isEnabledByDefault: false,
isExpired: false,
enabledVersion: defaultLanguageVersion,
experimentEnabledVersion: defaultLanguageVersion,
experimentReleasedVersion: defaultLanguageVersion);
static const ExperimentalFlag nonNullable = const ExperimentalFlag(
name: 'non-nullable',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 12),
experimentEnabledVersion: const Version(2, 12),
experimentReleasedVersion: const Version(2, 10));
static const ExperimentalFlag nonfunctionTypeAliases = const ExperimentalFlag(
name: 'nonfunction-type-aliases',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 13),
experimentEnabledVersion: const Version(2, 13),
experimentReleasedVersion: const Version(2, 13));
static const ExperimentalFlag patterns = const ExperimentalFlag(
name: 'patterns',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(3, 0),
experimentEnabledVersion: const Version(3, 0),
experimentReleasedVersion: const Version(3, 0));
static const ExperimentalFlag records = const ExperimentalFlag(
name: 'records',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(3, 0),
experimentEnabledVersion: const Version(3, 0),
experimentReleasedVersion: const Version(3, 0));
static const ExperimentalFlag resourceIdentifiers = const ExperimentalFlag(
name: 'resource-identifiers',
isEnabledByDefault: false,
isExpired: false,
enabledVersion: defaultLanguageVersion,
experimentEnabledVersion: defaultLanguageVersion,
experimentReleasedVersion: defaultLanguageVersion);
static const ExperimentalFlag sealedClass = const ExperimentalFlag(
name: 'sealed-class',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(3, 0),
experimentEnabledVersion: const Version(3, 0),
experimentReleasedVersion: const Version(3, 0));
static const ExperimentalFlag setLiterals = const ExperimentalFlag(
name: 'set-literals',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 0),
experimentEnabledVersion: const Version(2, 0),
experimentReleasedVersion: const Version(2, 0));
static const ExperimentalFlag spreadCollections = const ExperimentalFlag(
name: 'spread-collections',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 0),
experimentEnabledVersion: const Version(2, 0),
experimentReleasedVersion: const Version(2, 0));
static const ExperimentalFlag superParameters = const ExperimentalFlag(
name: 'super-parameters',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 17),
experimentEnabledVersion: const Version(2, 17),
experimentReleasedVersion: const Version(2, 17));
static const ExperimentalFlag testExperiment = const ExperimentalFlag(
name: 'test-experiment',
isEnabledByDefault: false,
isExpired: false,
enabledVersion: defaultLanguageVersion,
experimentEnabledVersion: defaultLanguageVersion,
experimentReleasedVersion: defaultLanguageVersion);
static const ExperimentalFlag tripleShift = const ExperimentalFlag(
name: 'triple-shift',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 14),
experimentEnabledVersion: const Version(2, 14),
experimentReleasedVersion: const Version(2, 14));
static const ExperimentalFlag unnamedLibraries = const ExperimentalFlag(
name: 'unnamed-libraries',
isEnabledByDefault: true,
isExpired: true,
enabledVersion: const Version(2, 19),
experimentEnabledVersion: const Version(2, 19),
experimentReleasedVersion: const Version(2, 19));
static const ExperimentalFlag variance = const ExperimentalFlag(
name: 'variance',
isEnabledByDefault: false,
isExpired: false,
enabledVersion: defaultLanguageVersion,
experimentEnabledVersion: defaultLanguageVersion,
experimentReleasedVersion: defaultLanguageVersion);
}
/// Interface for accessing the global state of experimental features.
class GlobalFeatures {
final Map<ExperimentalFlag, bool> explicitExperimentalFlags;
final AllowedExperimentalFlags? allowedExperimentalFlags;
final Map<ExperimentalFlag, bool>? defaultExperimentFlagsForTesting;
final Map<ExperimentalFlag, Version>? experimentEnabledVersionForTesting;
final Map<ExperimentalFlag, Version>? experimentReleasedVersionForTesting;
GlobalFeatures(this.explicitExperimentalFlags,
{this.allowedExperimentalFlags,
this.defaultExperimentFlagsForTesting,
this.experimentEnabledVersionForTesting,
this.experimentReleasedVersionForTesting});
GlobalFeature _computeGlobalFeature(ExperimentalFlag flag) {
return new GlobalFeature(
flag,
isExperimentEnabled(flag,
defaultExperimentFlagsForTesting: defaultExperimentFlagsForTesting,
explicitExperimentalFlags: explicitExperimentalFlags));
}
LibraryFeature _computeLibraryFeature(
ExperimentalFlag flag, Uri canonicalUri, Version libraryVersion) {
return new LibraryFeature(
flag,
isExperimentEnabledInLibrary(flag, canonicalUri,
defaultExperimentFlagsForTesting: defaultExperimentFlagsForTesting,
explicitExperimentalFlags: explicitExperimentalFlags,
allowedExperimentalFlags: allowedExperimentalFlags),
getExperimentEnabledVersionInLibrary(
flag, canonicalUri, explicitExperimentalFlags,
allowedExperimentalFlags: allowedExperimentalFlags,
defaultExperimentFlagsForTesting: defaultExperimentFlagsForTesting,
experimentEnabledVersionForTesting:
experimentEnabledVersionForTesting,
experimentReleasedVersionForTesting:
experimentReleasedVersionForTesting),
isExperimentEnabledInLibraryByVersion(
flag, canonicalUri, libraryVersion,
defaultExperimentFlagsForTesting: defaultExperimentFlagsForTesting,
explicitExperimentalFlags: explicitExperimentalFlags,
allowedExperimentalFlags: allowedExperimentalFlags));
}
GlobalFeature? _alternativeInvalidationStrategy;
GlobalFeature get alternativeInvalidationStrategy =>
_alternativeInvalidationStrategy ??= _computeGlobalFeature(
ExperimentalFlag.alternativeInvalidationStrategy);
GlobalFeature? _classModifiers;
GlobalFeature get classModifiers => _classModifiers ??=
_computeGlobalFeature(ExperimentalFlag.classModifiers);
GlobalFeature? _constFunctions;
GlobalFeature get constFunctions => _constFunctions ??=
_computeGlobalFeature(ExperimentalFlag.constFunctions);
GlobalFeature? _constantUpdate2018;
GlobalFeature get constantUpdate2018 => _constantUpdate2018 ??=
_computeGlobalFeature(ExperimentalFlag.constantUpdate2018);
GlobalFeature? _constructorTearoffs;
GlobalFeature get constructorTearoffs => _constructorTearoffs ??=
_computeGlobalFeature(ExperimentalFlag.constructorTearoffs);
GlobalFeature? _controlFlowCollections;
GlobalFeature get controlFlowCollections => _controlFlowCollections ??=
_computeGlobalFeature(ExperimentalFlag.controlFlowCollections);
GlobalFeature? _enhancedEnums;
GlobalFeature get enhancedEnums =>
_enhancedEnums ??= _computeGlobalFeature(ExperimentalFlag.enhancedEnums);
GlobalFeature? _extensionMethods;
GlobalFeature get extensionMethods => _extensionMethods ??=
_computeGlobalFeature(ExperimentalFlag.extensionMethods);
GlobalFeature? _genericMetadata;
GlobalFeature get genericMetadata => _genericMetadata ??=
_computeGlobalFeature(ExperimentalFlag.genericMetadata);
GlobalFeature? _inferenceUpdate1;
GlobalFeature get inferenceUpdate1 => _inferenceUpdate1 ??=
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate1);
GlobalFeature? _inferenceUpdate2;
GlobalFeature get inferenceUpdate2 => _inferenceUpdate2 ??=
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate2);
GlobalFeature? _inferenceUpdate3;
GlobalFeature get inferenceUpdate3 => _inferenceUpdate3 ??=
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate3);
GlobalFeature? _inlineClass;
GlobalFeature get inlineClass =>
_inlineClass ??= _computeGlobalFeature(ExperimentalFlag.inlineClass);
GlobalFeature? _macros;
GlobalFeature get macros =>
_macros ??= _computeGlobalFeature(ExperimentalFlag.macros);
GlobalFeature? _namedArgumentsAnywhere;
GlobalFeature get namedArgumentsAnywhere => _namedArgumentsAnywhere ??=
_computeGlobalFeature(ExperimentalFlag.namedArgumentsAnywhere);
GlobalFeature? _nativeAssets;
GlobalFeature get nativeAssets =>
_nativeAssets ??= _computeGlobalFeature(ExperimentalFlag.nativeAssets);
GlobalFeature? _nonNullable;
GlobalFeature get nonNullable =>
_nonNullable ??= _computeGlobalFeature(ExperimentalFlag.nonNullable);
GlobalFeature? _nonfunctionTypeAliases;
GlobalFeature get nonfunctionTypeAliases => _nonfunctionTypeAliases ??=
_computeGlobalFeature(ExperimentalFlag.nonfunctionTypeAliases);
GlobalFeature? _patterns;
GlobalFeature get patterns =>
_patterns ??= _computeGlobalFeature(ExperimentalFlag.patterns);
GlobalFeature? _records;
GlobalFeature get records =>
_records ??= _computeGlobalFeature(ExperimentalFlag.records);
GlobalFeature? _resourceIdentifiers;
GlobalFeature get resourceIdentifiers => _resourceIdentifiers ??=
_computeGlobalFeature(ExperimentalFlag.resourceIdentifiers);
GlobalFeature? _sealedClass;
GlobalFeature get sealedClass =>
_sealedClass ??= _computeGlobalFeature(ExperimentalFlag.sealedClass);
GlobalFeature? _setLiterals;
GlobalFeature get setLiterals =>
_setLiterals ??= _computeGlobalFeature(ExperimentalFlag.setLiterals);
GlobalFeature? _spreadCollections;
GlobalFeature get spreadCollections => _spreadCollections ??=
_computeGlobalFeature(ExperimentalFlag.spreadCollections);
GlobalFeature? _superParameters;
GlobalFeature get superParameters => _superParameters ??=
_computeGlobalFeature(ExperimentalFlag.superParameters);
GlobalFeature? _testExperiment;
GlobalFeature get testExperiment => _testExperiment ??=
_computeGlobalFeature(ExperimentalFlag.testExperiment);
GlobalFeature? _tripleShift;
GlobalFeature get tripleShift =>
_tripleShift ??= _computeGlobalFeature(ExperimentalFlag.tripleShift);
GlobalFeature? _unnamedLibraries;
GlobalFeature get unnamedLibraries => _unnamedLibraries ??=
_computeGlobalFeature(ExperimentalFlag.unnamedLibraries);
GlobalFeature? _variance;
GlobalFeature get variance =>
_variance ??= _computeGlobalFeature(ExperimentalFlag.variance);
}
/// Interface for accessing the state of experimental features within a
/// specific library.
class LibraryFeatures {
final GlobalFeatures globalFeatures;
final Uri canonicalUri;
final Version libraryVersion;
LibraryFeatures(this.globalFeatures, this.canonicalUri, this.libraryVersion);
LibraryFeature? _alternativeInvalidationStrategy;
LibraryFeature get alternativeInvalidationStrategy =>
_alternativeInvalidationStrategy ??=
globalFeatures._computeLibraryFeature(
ExperimentalFlag.alternativeInvalidationStrategy,
canonicalUri,
libraryVersion);
LibraryFeature? _classModifiers;
LibraryFeature get classModifiers =>
_classModifiers ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.classModifiers, canonicalUri, libraryVersion);
LibraryFeature? _constFunctions;
LibraryFeature get constFunctions =>
_constFunctions ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.constFunctions, canonicalUri, libraryVersion);
LibraryFeature? _constantUpdate2018;
LibraryFeature get constantUpdate2018 =>
_constantUpdate2018 ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.constantUpdate2018, canonicalUri, libraryVersion);
LibraryFeature? _constructorTearoffs;
LibraryFeature get constructorTearoffs =>
_constructorTearoffs ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.constructorTearoffs, canonicalUri, libraryVersion);
LibraryFeature? _controlFlowCollections;
LibraryFeature get controlFlowCollections =>
_controlFlowCollections ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.controlFlowCollections,
canonicalUri,
libraryVersion);
LibraryFeature? _enhancedEnums;
LibraryFeature get enhancedEnums =>
_enhancedEnums ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.enhancedEnums, canonicalUri, libraryVersion);
LibraryFeature? _extensionMethods;
LibraryFeature get extensionMethods =>
_extensionMethods ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.extensionMethods, canonicalUri, libraryVersion);
LibraryFeature? _genericMetadata;
LibraryFeature get genericMetadata =>
_genericMetadata ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.genericMetadata, canonicalUri, libraryVersion);
LibraryFeature? _inferenceUpdate1;
LibraryFeature get inferenceUpdate1 =>
_inferenceUpdate1 ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.inferenceUpdate1, canonicalUri, libraryVersion);
LibraryFeature? _inferenceUpdate2;
LibraryFeature get inferenceUpdate2 =>
_inferenceUpdate2 ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.inferenceUpdate2, canonicalUri, libraryVersion);
LibraryFeature? _inferenceUpdate3;
LibraryFeature get inferenceUpdate3 =>
_inferenceUpdate3 ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.inferenceUpdate3, canonicalUri, libraryVersion);
LibraryFeature? _inlineClass;
LibraryFeature get inlineClass =>
_inlineClass ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.inlineClass, canonicalUri, libraryVersion);
LibraryFeature? _macros;
LibraryFeature get macros =>
_macros ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.macros, canonicalUri, libraryVersion);
LibraryFeature? _namedArgumentsAnywhere;
LibraryFeature get namedArgumentsAnywhere =>
_namedArgumentsAnywhere ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.namedArgumentsAnywhere,
canonicalUri,
libraryVersion);
LibraryFeature? _nativeAssets;
LibraryFeature get nativeAssets =>
_nativeAssets ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.nativeAssets, canonicalUri, libraryVersion);
LibraryFeature? _nonNullable;
LibraryFeature get nonNullable =>
_nonNullable ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.nonNullable, canonicalUri, libraryVersion);
LibraryFeature? _nonfunctionTypeAliases;
LibraryFeature get nonfunctionTypeAliases =>
_nonfunctionTypeAliases ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.nonfunctionTypeAliases,
canonicalUri,
libraryVersion);
LibraryFeature? _patterns;
LibraryFeature get patterns =>
_patterns ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.patterns, canonicalUri, libraryVersion);
LibraryFeature? _records;
LibraryFeature get records =>
_records ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.records, canonicalUri, libraryVersion);
LibraryFeature? _resourceIdentifiers;
LibraryFeature get resourceIdentifiers =>
_resourceIdentifiers ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.resourceIdentifiers, canonicalUri, libraryVersion);
LibraryFeature? _sealedClass;
LibraryFeature get sealedClass =>
_sealedClass ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.sealedClass, canonicalUri, libraryVersion);
LibraryFeature? _setLiterals;
LibraryFeature get setLiterals =>
_setLiterals ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.setLiterals, canonicalUri, libraryVersion);
LibraryFeature? _spreadCollections;
LibraryFeature get spreadCollections =>
_spreadCollections ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.spreadCollections, canonicalUri, libraryVersion);
LibraryFeature? _superParameters;
LibraryFeature get superParameters =>
_superParameters ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.superParameters, canonicalUri, libraryVersion);
LibraryFeature? _testExperiment;
LibraryFeature get testExperiment =>
_testExperiment ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.testExperiment, canonicalUri, libraryVersion);
LibraryFeature? _tripleShift;
LibraryFeature get tripleShift =>
_tripleShift ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.tripleShift, canonicalUri, libraryVersion);
LibraryFeature? _unnamedLibraries;
LibraryFeature get unnamedLibraries =>
_unnamedLibraries ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.unnamedLibraries, canonicalUri, libraryVersion);
LibraryFeature? _variance;
LibraryFeature get variance =>
_variance ??= globalFeatures._computeLibraryFeature(
ExperimentalFlag.variance, canonicalUri, libraryVersion);
/// Returns the [LibraryFeature] corresponding to [experimentalFlag].
LibraryFeature fromSharedExperimentalFlags(
shared.ExperimentalFlag experimentalFlag) {
switch (experimentalFlag) {
case shared.ExperimentalFlag.classModifiers:
return classModifiers;
case shared.ExperimentalFlag.constFunctions:
return constFunctions;
case shared.ExperimentalFlag.constantUpdate2018:
return constantUpdate2018;
case shared.ExperimentalFlag.constructorTearoffs:
return constructorTearoffs;
case shared.ExperimentalFlag.controlFlowCollections:
return controlFlowCollections;
case shared.ExperimentalFlag.enhancedEnums:
return enhancedEnums;
case shared.ExperimentalFlag.extensionMethods:
return extensionMethods;
case shared.ExperimentalFlag.genericMetadata:
return genericMetadata;
case shared.ExperimentalFlag.inferenceUpdate1:
return inferenceUpdate1;
case shared.ExperimentalFlag.inferenceUpdate2:
return inferenceUpdate2;
case shared.ExperimentalFlag.inferenceUpdate3:
return inferenceUpdate3;
case shared.ExperimentalFlag.inlineClass:
return inlineClass;
case shared.ExperimentalFlag.macros:
return macros;
case shared.ExperimentalFlag.namedArgumentsAnywhere:
return namedArgumentsAnywhere;
case shared.ExperimentalFlag.nativeAssets:
return nativeAssets;
case shared.ExperimentalFlag.nonNullable:
return nonNullable;
case shared.ExperimentalFlag.nonfunctionTypeAliases:
return nonfunctionTypeAliases;
case shared.ExperimentalFlag.patterns:
return patterns;
case shared.ExperimentalFlag.records:
return records;
case shared.ExperimentalFlag.resourceIdentifiers:
return resourceIdentifiers;
case shared.ExperimentalFlag.sealedClass:
return sealedClass;
case shared.ExperimentalFlag.setLiterals:
return setLiterals;
case shared.ExperimentalFlag.spreadCollections:
return spreadCollections;
case shared.ExperimentalFlag.superParameters:
return superParameters;
case shared.ExperimentalFlag.testExperiment:
return testExperiment;
case shared.ExperimentalFlag.tripleShift:
return tripleShift;
case shared.ExperimentalFlag.unnamedLibraries:
return unnamedLibraries;
case shared.ExperimentalFlag.variance:
return variance;
default:
throw new UnsupportedError(
'LibraryFeatures.fromSharedExperimentalFlags($experimentalFlag)');
}
}
}
ExperimentalFlag? parseExperimentalFlag(String flag) {
switch (flag) {
case "alternative-invalidation-strategy":
return ExperimentalFlag.alternativeInvalidationStrategy;
case "class-modifiers":
return ExperimentalFlag.classModifiers;
case "const-functions":
return ExperimentalFlag.constFunctions;
case "constant-update-2018":
return ExperimentalFlag.constantUpdate2018;
case "constructor-tearoffs":
return ExperimentalFlag.constructorTearoffs;
case "control-flow-collections":
return ExperimentalFlag.controlFlowCollections;
case "enhanced-enums":
return ExperimentalFlag.enhancedEnums;
case "extension-methods":
return ExperimentalFlag.extensionMethods;
case "generic-metadata":
return ExperimentalFlag.genericMetadata;
case "inference-update-1":
return ExperimentalFlag.inferenceUpdate1;
case "inference-update-2":
return ExperimentalFlag.inferenceUpdate2;
case "inference-update-3":
return ExperimentalFlag.inferenceUpdate3;
case "inline-class":
return ExperimentalFlag.inlineClass;
case "macros":
return ExperimentalFlag.macros;
case "named-arguments-anywhere":
return ExperimentalFlag.namedArgumentsAnywhere;
case "native-assets":
return ExperimentalFlag.nativeAssets;
case "non-nullable":
return ExperimentalFlag.nonNullable;
case "nonfunction-type-aliases":
return ExperimentalFlag.nonfunctionTypeAliases;
case "patterns":
return ExperimentalFlag.patterns;
case "records":
return ExperimentalFlag.records;
case "resource-identifiers":
return ExperimentalFlag.resourceIdentifiers;
case "sealed-class":
return ExperimentalFlag.sealedClass;
case "set-literals":
return ExperimentalFlag.setLiterals;
case "spread-collections":
return ExperimentalFlag.spreadCollections;
case "super-parameters":
return ExperimentalFlag.superParameters;
case "test-experiment":
return ExperimentalFlag.testExperiment;
case "triple-shift":
return ExperimentalFlag.tripleShift;
case "unnamed-libraries":
return ExperimentalFlag.unnamedLibraries;
case "variance":
return ExperimentalFlag.variance;
}
return null;
}
final Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
ExperimentalFlag.alternativeInvalidationStrategy:
ExperimentalFlag.alternativeInvalidationStrategy.isEnabledByDefault,
ExperimentalFlag.classModifiers:
ExperimentalFlag.classModifiers.isEnabledByDefault,
ExperimentalFlag.constFunctions:
ExperimentalFlag.constFunctions.isEnabledByDefault,
ExperimentalFlag.constantUpdate2018:
ExperimentalFlag.constantUpdate2018.isEnabledByDefault,
ExperimentalFlag.constructorTearoffs:
ExperimentalFlag.constructorTearoffs.isEnabledByDefault,
ExperimentalFlag.controlFlowCollections:
ExperimentalFlag.controlFlowCollections.isEnabledByDefault,
ExperimentalFlag.enhancedEnums:
ExperimentalFlag.enhancedEnums.isEnabledByDefault,
ExperimentalFlag.extensionMethods:
ExperimentalFlag.extensionMethods.isEnabledByDefault,
ExperimentalFlag.genericMetadata:
ExperimentalFlag.genericMetadata.isEnabledByDefault,
ExperimentalFlag.inferenceUpdate1:
ExperimentalFlag.inferenceUpdate1.isEnabledByDefault,
ExperimentalFlag.inferenceUpdate2:
ExperimentalFlag.inferenceUpdate2.isEnabledByDefault,
ExperimentalFlag.inferenceUpdate3:
ExperimentalFlag.inferenceUpdate3.isEnabledByDefault,
ExperimentalFlag.inlineClass: ExperimentalFlag.inlineClass.isEnabledByDefault,
ExperimentalFlag.macros: ExperimentalFlag.macros.isEnabledByDefault,
ExperimentalFlag.namedArgumentsAnywhere:
ExperimentalFlag.namedArgumentsAnywhere.isEnabledByDefault,
ExperimentalFlag.nativeAssets:
ExperimentalFlag.nativeAssets.isEnabledByDefault,
ExperimentalFlag.nonNullable: ExperimentalFlag.nonNullable.isEnabledByDefault,
ExperimentalFlag.nonfunctionTypeAliases:
ExperimentalFlag.nonfunctionTypeAliases.isEnabledByDefault,
ExperimentalFlag.patterns: ExperimentalFlag.patterns.isEnabledByDefault,
ExperimentalFlag.records: ExperimentalFlag.records.isEnabledByDefault,
ExperimentalFlag.resourceIdentifiers:
ExperimentalFlag.resourceIdentifiers.isEnabledByDefault,
ExperimentalFlag.sealedClass: ExperimentalFlag.sealedClass.isEnabledByDefault,
ExperimentalFlag.setLiterals: ExperimentalFlag.setLiterals.isEnabledByDefault,
ExperimentalFlag.spreadCollections:
ExperimentalFlag.spreadCollections.isEnabledByDefault,
ExperimentalFlag.superParameters:
ExperimentalFlag.superParameters.isEnabledByDefault,
ExperimentalFlag.testExperiment:
ExperimentalFlag.testExperiment.isEnabledByDefault,
ExperimentalFlag.tripleShift: ExperimentalFlag.tripleShift.isEnabledByDefault,
ExperimentalFlag.unnamedLibraries:
ExperimentalFlag.unnamedLibraries.isEnabledByDefault,
ExperimentalFlag.variance: ExperimentalFlag.variance.isEnabledByDefault,
};
const AllowedExperimentalFlags defaultAllowedExperimentalFlags =
const AllowedExperimentalFlags(
sdkDefaultExperiments: {},
sdkLibraryExperiments: {},
packageExperiments: {});
const Map<shared.ExperimentalFlag, ExperimentalFlag> sharedExperimentalFlags = {
shared.ExperimentalFlag.classModifiers: ExperimentalFlag.classModifiers,
shared.ExperimentalFlag.constFunctions: ExperimentalFlag.constFunctions,
shared.ExperimentalFlag.constantUpdate2018:
ExperimentalFlag.constantUpdate2018,
shared.ExperimentalFlag.constructorTearoffs:
ExperimentalFlag.constructorTearoffs,
shared.ExperimentalFlag.controlFlowCollections:
ExperimentalFlag.controlFlowCollections,
shared.ExperimentalFlag.enhancedEnums: ExperimentalFlag.enhancedEnums,
shared.ExperimentalFlag.extensionMethods: ExperimentalFlag.extensionMethods,
shared.ExperimentalFlag.genericMetadata: ExperimentalFlag.genericMetadata,
shared.ExperimentalFlag.inferenceUpdate1: ExperimentalFlag.inferenceUpdate1,
shared.ExperimentalFlag.inferenceUpdate2: ExperimentalFlag.inferenceUpdate2,
shared.ExperimentalFlag.inferenceUpdate3: ExperimentalFlag.inferenceUpdate3,
shared.ExperimentalFlag.inlineClass: ExperimentalFlag.inlineClass,
shared.ExperimentalFlag.macros: ExperimentalFlag.macros,
shared.ExperimentalFlag.namedArgumentsAnywhere:
ExperimentalFlag.namedArgumentsAnywhere,
shared.ExperimentalFlag.nativeAssets: ExperimentalFlag.nativeAssets,
shared.ExperimentalFlag.nonNullable: ExperimentalFlag.nonNullable,
shared.ExperimentalFlag.nonfunctionTypeAliases:
ExperimentalFlag.nonfunctionTypeAliases,
shared.ExperimentalFlag.patterns: ExperimentalFlag.patterns,
shared.ExperimentalFlag.records: ExperimentalFlag.records,
shared.ExperimentalFlag.resourceIdentifiers:
ExperimentalFlag.resourceIdentifiers,
shared.ExperimentalFlag.sealedClass: ExperimentalFlag.sealedClass,
shared.ExperimentalFlag.setLiterals: ExperimentalFlag.setLiterals,
shared.ExperimentalFlag.spreadCollections: ExperimentalFlag.spreadCollections,
shared.ExperimentalFlag.superParameters: ExperimentalFlag.superParameters,
shared.ExperimentalFlag.testExperiment: ExperimentalFlag.testExperiment,
shared.ExperimentalFlag.tripleShift: ExperimentalFlag.tripleShift,
shared.ExperimentalFlag.unnamedLibraries: ExperimentalFlag.unnamedLibraries,
shared.ExperimentalFlag.variance: ExperimentalFlag.variance,
};