Skip to content

Commit 2cfca4e

Browse files
committed
[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: #55654 Change-Id: I6185360f371bc7c3c7a109b33aeb7df44e1f1a60 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/365545 Reviewed-by: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]> Reviewed-by: Nate Bosch <[email protected]> Reviewed-by: Phil Quitslund <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 8e5b70a commit 2cfca4e

File tree

5 files changed

+62
-0
lines changed

5 files changed

+62
-0
lines changed

pkg/_fe_analyzer_shared/lib/src/experiments/flags.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,13 @@ enum ExperimentalFlag {
205205
isExpired: false,
206206
experimentEnabledVersion: defaultLanguageVersion,
207207
experimentReleasedVersion: defaultLanguageVersion),
208+
209+
wildcardVariables(
210+
name: 'wildcard-variables',
211+
isEnabledByDefault: false,
212+
isExpired: false,
213+
experimentEnabledVersion: defaultLanguageVersion,
214+
experimentReleasedVersion: defaultLanguageVersion),
208215
;
209216

210217
final String name;

pkg/analyzer/lib/dart/analysis/features.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ abstract class Feature {
8484
/// Feature information for variance.
8585
static final variance = ExperimentalFeatures.variance;
8686

87+
/// Feature information for wildcard variables.
88+
static final wildcard_variables = ExperimentalFeatures.wildcard_variables;
89+
8790
/// If the feature may be enabled or disabled on the command line, the
8891
/// experimental flag that may be used to enable it. Otherwise `null`.
8992
///

pkg/analyzer/lib/src/dart/analysis/experiments.g.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
4747
EnableString.triple_shift: ExperimentalFeatures.triple_shift,
4848
EnableString.unnamed_libraries: ExperimentalFeatures.unnamed_libraries,
4949
EnableString.variance: ExperimentalFeatures.variance,
50+
EnableString.wildcard_variables: ExperimentalFeatures.wildcard_variables,
5051
};
5152

5253
/// Constant strings for enabling each of the currently known experimental
@@ -135,6 +136,9 @@ class EnableString {
135136

136137
/// String to enable the experiment "variance"
137138
static const String variance = 'variance';
139+
140+
/// String to enable the experiment "wildcard-variables"
141+
static const String wildcard_variables = 'wildcard-variables';
138142
}
139143

140144
class ExperimentalFeatures {
@@ -423,6 +427,17 @@ class ExperimentalFeatures {
423427
experimentalReleaseVersion: null,
424428
releaseVersion: null,
425429
);
430+
431+
static final wildcard_variables = ExperimentalFeature(
432+
index: 28,
433+
enableString: EnableString.wildcard_variables,
434+
isEnabledByDefault: IsEnabledByDefault.wildcard_variables,
435+
isExpired: IsExpired.wildcard_variables,
436+
documentation:
437+
'Local declarations and parameters named `_` are non-binding.',
438+
experimentalReleaseVersion: null,
439+
releaseVersion: null,
440+
);
426441
}
427442

428443
/// Constant bools indicating whether each experimental flag is currently
@@ -511,6 +526,9 @@ class IsEnabledByDefault {
511526

512527
/// Default state of the experiment "variance"
513528
static const bool variance = false;
529+
530+
/// Default state of the experiment "wildcard-variables"
531+
static const bool wildcard_variables = false;
514532
}
515533

516534
/// Constant bools indicating whether each experimental flag is currently
@@ -600,6 +618,9 @@ class IsExpired {
600618

601619
/// Expiration status of the experiment "variance"
602620
static const bool variance = false;
621+
622+
/// Expiration status of the experiment "wildcard-variables"
623+
static const bool wildcard_variables = false;
603624
}
604625

605626
mixin _CurrentState {
@@ -699,5 +720,9 @@ mixin _CurrentState {
699720
/// Current state for the flag "variance"
700721
bool get variance => isEnabled(ExperimentalFeatures.variance);
701722

723+
/// Current state for the flag "wildcard-variables"
724+
bool get wildcard_variables =>
725+
isEnabled(ExperimentalFeatures.wildcard_variables);
726+
702727
bool isEnabled(covariant ExperimentalFeature feature);
703728
}

pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,14 @@ class ExperimentalFlag {
282282
enabledVersion: defaultLanguageVersion,
283283
experimentEnabledVersion: defaultLanguageVersion,
284284
experimentReleasedVersion: defaultLanguageVersion);
285+
286+
static const ExperimentalFlag wildcardVariables = const ExperimentalFlag(
287+
name: 'wildcard-variables',
288+
isEnabledByDefault: false,
289+
isExpired: false,
290+
enabledVersion: defaultLanguageVersion,
291+
experimentEnabledVersion: defaultLanguageVersion,
292+
experimentReleasedVersion: defaultLanguageVersion);
285293
}
286294

287295
/// Interface for accessing the global state of experimental features.
@@ -445,6 +453,10 @@ class GlobalFeatures {
445453
GlobalFeature? _variance;
446454
GlobalFeature get variance =>
447455
_variance ??= _computeGlobalFeature(ExperimentalFlag.variance);
456+
457+
GlobalFeature? _wildcardVariables;
458+
GlobalFeature get wildcardVariables => _wildcardVariables ??=
459+
_computeGlobalFeature(ExperimentalFlag.wildcardVariables);
448460
}
449461

450462
/// Interface for accessing the state of experimental features within a
@@ -610,6 +622,11 @@ class LibraryFeatures {
610622
_variance ??= globalFeatures._computeLibraryFeature(
611623
ExperimentalFlag.variance, canonicalUri, libraryVersion);
612624

625+
LibraryFeature? _wildcardVariables;
626+
LibraryFeature get wildcardVariables =>
627+
_wildcardVariables ??= globalFeatures._computeLibraryFeature(
628+
ExperimentalFlag.wildcardVariables, canonicalUri, libraryVersion);
629+
613630
/// Returns the [LibraryFeature] corresponding to [experimentalFlag].
614631
LibraryFeature fromSharedExperimentalFlags(
615632
shared.ExperimentalFlag experimentalFlag) {
@@ -670,6 +687,8 @@ class LibraryFeatures {
670687
return unnamedLibraries;
671688
case shared.ExperimentalFlag.variance:
672689
return variance;
690+
case shared.ExperimentalFlag.wildcardVariables:
691+
return wildcardVariables;
673692
default:
674693
throw new UnsupportedError(
675694
'LibraryFeatures.fromSharedExperimentalFlags($experimentalFlag)');
@@ -737,6 +756,8 @@ ExperimentalFlag? parseExperimentalFlag(String flag) {
737756
return ExperimentalFlag.unnamedLibraries;
738757
case "variance":
739758
return ExperimentalFlag.variance;
759+
case "wildcard-variables":
760+
return ExperimentalFlag.wildcardVariables;
740761
}
741762
return null;
742763
}
@@ -791,6 +812,8 @@ final Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
791812
ExperimentalFlag.unnamedLibraries:
792813
ExperimentalFlag.unnamedLibraries.isEnabledByDefault,
793814
ExperimentalFlag.variance: ExperimentalFlag.variance.isEnabledByDefault,
815+
ExperimentalFlag.wildcardVariables:
816+
ExperimentalFlag.wildcardVariables.isEnabledByDefault,
794817
};
795818
const AllowedExperimentalFlags defaultAllowedExperimentalFlags =
796819
const AllowedExperimentalFlags(
@@ -832,4 +855,5 @@ const Map<shared.ExperimentalFlag, ExperimentalFlag> sharedExperimentalFlags = {
832855
shared.ExperimentalFlag.tripleShift: ExperimentalFlag.tripleShift,
833856
shared.ExperimentalFlag.unnamedLibraries: ExperimentalFlag.unnamedLibraries,
834857
shared.ExperimentalFlag.variance: ExperimentalFlag.variance,
858+
shared.ExperimentalFlag.wildcardVariables: ExperimentalFlag.wildcardVariables,
835859
};

tools/experimental_features.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ features:
128128
resource-identifiers:
129129
help: "Output arguments used by static functions."
130130

131+
wildcard-variables:
132+
help: "Local declarations and parameters named `_` are non-binding."
133+
131134
# Experiment flag only used for testing.
132135
test-experiment:
133136
help: >-

0 commit comments

Comments
 (0)