mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 17:40:04 +00:00
[wildcard-variables] Add experiment flag 'wildcards-variables'.
Getting the flag out so we can at least start writing language and co19 tests. Adds the experiment flag so we can hide future wildcards work until we're ready to ship. Bug: https://github.com/dart-lang/sdk/issues/55654 Change-Id: I6185360f371bc7c3c7a109b33aeb7df44e1f1a60 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/365545 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Nate Bosch <nbosch@google.com> Reviewed-by: Phil Quitslund <pquitslund@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
8e5b70a081
commit
2cfca4e677
|
@ -205,6 +205,13 @@ enum ExperimentalFlag {
|
|||
isExpired: false,
|
||||
experimentEnabledVersion: defaultLanguageVersion,
|
||||
experimentReleasedVersion: defaultLanguageVersion),
|
||||
|
||||
wildcardVariables(
|
||||
name: 'wildcard-variables',
|
||||
isEnabledByDefault: false,
|
||||
isExpired: false,
|
||||
experimentEnabledVersion: defaultLanguageVersion,
|
||||
experimentReleasedVersion: defaultLanguageVersion),
|
||||
;
|
||||
|
||||
final String name;
|
||||
|
|
|
@ -84,6 +84,9 @@ abstract class Feature {
|
|||
/// Feature information for variance.
|
||||
static final variance = ExperimentalFeatures.variance;
|
||||
|
||||
/// Feature information for wildcard variables.
|
||||
static final wildcard_variables = ExperimentalFeatures.wildcard_variables;
|
||||
|
||||
/// If the feature may be enabled or disabled on the command line, the
|
||||
/// experimental flag that may be used to enable it. Otherwise `null`.
|
||||
///
|
||||
|
|
|
@ -47,6 +47,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
|
|||
EnableString.triple_shift: ExperimentalFeatures.triple_shift,
|
||||
EnableString.unnamed_libraries: ExperimentalFeatures.unnamed_libraries,
|
||||
EnableString.variance: ExperimentalFeatures.variance,
|
||||
EnableString.wildcard_variables: ExperimentalFeatures.wildcard_variables,
|
||||
};
|
||||
|
||||
/// Constant strings for enabling each of the currently known experimental
|
||||
|
@ -135,6 +136,9 @@ class EnableString {
|
|||
|
||||
/// String to enable the experiment "variance"
|
||||
static const String variance = 'variance';
|
||||
|
||||
/// String to enable the experiment "wildcard-variables"
|
||||
static const String wildcard_variables = 'wildcard-variables';
|
||||
}
|
||||
|
||||
class ExperimentalFeatures {
|
||||
|
@ -423,6 +427,17 @@ class ExperimentalFeatures {
|
|||
experimentalReleaseVersion: null,
|
||||
releaseVersion: null,
|
||||
);
|
||||
|
||||
static final wildcard_variables = ExperimentalFeature(
|
||||
index: 28,
|
||||
enableString: EnableString.wildcard_variables,
|
||||
isEnabledByDefault: IsEnabledByDefault.wildcard_variables,
|
||||
isExpired: IsExpired.wildcard_variables,
|
||||
documentation:
|
||||
'Local declarations and parameters named `_` are non-binding.',
|
||||
experimentalReleaseVersion: null,
|
||||
releaseVersion: null,
|
||||
);
|
||||
}
|
||||
|
||||
/// Constant bools indicating whether each experimental flag is currently
|
||||
|
@ -511,6 +526,9 @@ class IsEnabledByDefault {
|
|||
|
||||
/// Default state of the experiment "variance"
|
||||
static const bool variance = false;
|
||||
|
||||
/// Default state of the experiment "wildcard-variables"
|
||||
static const bool wildcard_variables = false;
|
||||
}
|
||||
|
||||
/// Constant bools indicating whether each experimental flag is currently
|
||||
|
@ -600,6 +618,9 @@ class IsExpired {
|
|||
|
||||
/// Expiration status of the experiment "variance"
|
||||
static const bool variance = false;
|
||||
|
||||
/// Expiration status of the experiment "wildcard-variables"
|
||||
static const bool wildcard_variables = false;
|
||||
}
|
||||
|
||||
mixin _CurrentState {
|
||||
|
@ -699,5 +720,9 @@ mixin _CurrentState {
|
|||
/// Current state for the flag "variance"
|
||||
bool get variance => isEnabled(ExperimentalFeatures.variance);
|
||||
|
||||
/// Current state for the flag "wildcard-variables"
|
||||
bool get wildcard_variables =>
|
||||
isEnabled(ExperimentalFeatures.wildcard_variables);
|
||||
|
||||
bool isEnabled(covariant ExperimentalFeature feature);
|
||||
}
|
||||
|
|
|
@ -282,6 +282,14 @@ class ExperimentalFlag {
|
|||
enabledVersion: defaultLanguageVersion,
|
||||
experimentEnabledVersion: defaultLanguageVersion,
|
||||
experimentReleasedVersion: defaultLanguageVersion);
|
||||
|
||||
static const ExperimentalFlag wildcardVariables = const ExperimentalFlag(
|
||||
name: 'wildcard-variables',
|
||||
isEnabledByDefault: false,
|
||||
isExpired: false,
|
||||
enabledVersion: defaultLanguageVersion,
|
||||
experimentEnabledVersion: defaultLanguageVersion,
|
||||
experimentReleasedVersion: defaultLanguageVersion);
|
||||
}
|
||||
|
||||
/// Interface for accessing the global state of experimental features.
|
||||
|
@ -445,6 +453,10 @@ class GlobalFeatures {
|
|||
GlobalFeature? _variance;
|
||||
GlobalFeature get variance =>
|
||||
_variance ??= _computeGlobalFeature(ExperimentalFlag.variance);
|
||||
|
||||
GlobalFeature? _wildcardVariables;
|
||||
GlobalFeature get wildcardVariables => _wildcardVariables ??=
|
||||
_computeGlobalFeature(ExperimentalFlag.wildcardVariables);
|
||||
}
|
||||
|
||||
/// Interface for accessing the state of experimental features within a
|
||||
|
@ -610,6 +622,11 @@ class LibraryFeatures {
|
|||
_variance ??= globalFeatures._computeLibraryFeature(
|
||||
ExperimentalFlag.variance, canonicalUri, libraryVersion);
|
||||
|
||||
LibraryFeature? _wildcardVariables;
|
||||
LibraryFeature get wildcardVariables =>
|
||||
_wildcardVariables ??= globalFeatures._computeLibraryFeature(
|
||||
ExperimentalFlag.wildcardVariables, canonicalUri, libraryVersion);
|
||||
|
||||
/// Returns the [LibraryFeature] corresponding to [experimentalFlag].
|
||||
LibraryFeature fromSharedExperimentalFlags(
|
||||
shared.ExperimentalFlag experimentalFlag) {
|
||||
|
@ -670,6 +687,8 @@ class LibraryFeatures {
|
|||
return unnamedLibraries;
|
||||
case shared.ExperimentalFlag.variance:
|
||||
return variance;
|
||||
case shared.ExperimentalFlag.wildcardVariables:
|
||||
return wildcardVariables;
|
||||
default:
|
||||
throw new UnsupportedError(
|
||||
'LibraryFeatures.fromSharedExperimentalFlags($experimentalFlag)');
|
||||
|
@ -737,6 +756,8 @@ ExperimentalFlag? parseExperimentalFlag(String flag) {
|
|||
return ExperimentalFlag.unnamedLibraries;
|
||||
case "variance":
|
||||
return ExperimentalFlag.variance;
|
||||
case "wildcard-variables":
|
||||
return ExperimentalFlag.wildcardVariables;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -791,6 +812,8 @@ final Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
|
|||
ExperimentalFlag.unnamedLibraries:
|
||||
ExperimentalFlag.unnamedLibraries.isEnabledByDefault,
|
||||
ExperimentalFlag.variance: ExperimentalFlag.variance.isEnabledByDefault,
|
||||
ExperimentalFlag.wildcardVariables:
|
||||
ExperimentalFlag.wildcardVariables.isEnabledByDefault,
|
||||
};
|
||||
const AllowedExperimentalFlags defaultAllowedExperimentalFlags =
|
||||
const AllowedExperimentalFlags(
|
||||
|
@ -832,4 +855,5 @@ const Map<shared.ExperimentalFlag, ExperimentalFlag> sharedExperimentalFlags = {
|
|||
shared.ExperimentalFlag.tripleShift: ExperimentalFlag.tripleShift,
|
||||
shared.ExperimentalFlag.unnamedLibraries: ExperimentalFlag.unnamedLibraries,
|
||||
shared.ExperimentalFlag.variance: ExperimentalFlag.variance,
|
||||
shared.ExperimentalFlag.wildcardVariables: ExperimentalFlag.wildcardVariables,
|
||||
};
|
||||
|
|
|
@ -128,6 +128,9 @@ features:
|
|||
resource-identifiers:
|
||||
help: "Output arguments used by static functions."
|
||||
|
||||
wildcard-variables:
|
||||
help: "Local declarations and parameters named `_` are non-binding."
|
||||
|
||||
# Experiment flag only used for testing.
|
||||
test-experiment:
|
||||
help: >-
|
||||
|
|
Loading…
Reference in a new issue