Skip to content

Commit 62902d2

Browse files
[language] Add experimental flag 'static-extensions'
Part of #61485 Part of #61484 Change-Id: I6b88a2df4fd4f01826c178138c21a4b300818e92 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449300 Reviewed-by: Michael Thomsen <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent 7cec6b3 commit 62902d2

File tree

5 files changed

+72
-8
lines changed

5 files changed

+72
-8
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,14 @@ enum ExperimentalFlag {
266266
experimentReleasedVersion: const Version(2, 0),
267267
),
268268

269+
staticExtensions(
270+
name: 'static-extensions',
271+
isEnabledByDefault: false,
272+
isExpired: false,
273+
experimentEnabledVersion: defaultLanguageVersion,
274+
experimentReleasedVersion: defaultLanguageVersion,
275+
),
276+
269277
superParameters(
270278
name: 'super-parameters',
271279
isEnabledByDefault: true,

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ testFineAfterLibraryAnalyzerHook;
106106
// TODO(scheglov): Clean up the list of implicitly analyzed files.
107107
class AnalysisDriver {
108108
/// The version of data format, should be incremented on every format change.
109-
static const int DATA_VERSION = 558;
109+
static const int DATA_VERSION = 559;
110110

111111
/// The number of exception contexts allowed to write. Once this field is
112112
/// zero, we stop writing any new exception contexts in this process.

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

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
5252
EnableString.set_literals: ExperimentalFeatures.set_literals,
5353
EnableString.sound_flow_analysis: ExperimentalFeatures.sound_flow_analysis,
5454
EnableString.spread_collections: ExperimentalFeatures.spread_collections,
55+
EnableString.static_extensions: ExperimentalFeatures.static_extensions,
5556
EnableString.super_parameters: ExperimentalFeatures.super_parameters,
5657
EnableString.test_experiment: ExperimentalFeatures.test_experiment,
5758
EnableString.triple_shift: ExperimentalFeatures.triple_shift,
@@ -160,6 +161,9 @@ class EnableString {
160161
/// String to enable the experiment "spread-collections"
161162
static const String spread_collections = 'spread-collections';
162163

164+
/// String to enable the experiment "static-extensions"
165+
static const String static_extensions = 'static-extensions';
166+
163167
/// String to enable the experiment "super-parameters"
164168
static const String super_parameters = 'super-parameters';
165169

@@ -543,8 +547,19 @@ class ExperimentalFeatures {
543547
channels: ["stable", "beta", "dev", "main"],
544548
);
545549

546-
static final super_parameters = ExperimentalFeature(
550+
static final static_extensions = ExperimentalFeature(
547551
index: 32,
552+
enableString: EnableString.static_extensions,
553+
isEnabledByDefault: IsEnabledByDefault.static_extensions,
554+
isExpired: IsExpired.static_extensions,
555+
documentation: 'Extensions with static capabilities.',
556+
experimentalReleaseVersion: null,
557+
releaseVersion: null,
558+
channels: ["stable", "beta", "dev", "main"],
559+
);
560+
561+
static final super_parameters = ExperimentalFeature(
562+
index: 33,
548563
enableString: EnableString.super_parameters,
549564
isEnabledByDefault: IsEnabledByDefault.super_parameters,
550565
isExpired: IsExpired.super_parameters,
@@ -555,7 +570,7 @@ class ExperimentalFeatures {
555570
);
556571

557572
static final test_experiment = ExperimentalFeature(
558-
index: 33,
573+
index: 34,
559574
enableString: EnableString.test_experiment,
560575
isEnabledByDefault: IsEnabledByDefault.test_experiment,
561576
isExpired: IsExpired.test_experiment,
@@ -567,7 +582,7 @@ class ExperimentalFeatures {
567582
);
568583

569584
static final triple_shift = ExperimentalFeature(
570-
index: 34,
585+
index: 35,
571586
enableString: EnableString.triple_shift,
572587
isEnabledByDefault: IsEnabledByDefault.triple_shift,
573588
isExpired: IsExpired.triple_shift,
@@ -578,7 +593,7 @@ class ExperimentalFeatures {
578593
);
579594

580595
static final unnamed_libraries = ExperimentalFeature(
581-
index: 35,
596+
index: 36,
582597
enableString: EnableString.unnamed_libraries,
583598
isEnabledByDefault: IsEnabledByDefault.unnamed_libraries,
584599
isExpired: IsExpired.unnamed_libraries,
@@ -589,7 +604,7 @@ class ExperimentalFeatures {
589604
);
590605

591606
static final unquoted_imports = ExperimentalFeature(
592-
index: 36,
607+
index: 37,
593608
enableString: EnableString.unquoted_imports,
594609
isEnabledByDefault: IsEnabledByDefault.unquoted_imports,
595610
isExpired: IsExpired.unquoted_imports,
@@ -600,7 +615,7 @@ class ExperimentalFeatures {
600615
);
601616

602617
static final variance = ExperimentalFeature(
603-
index: 37,
618+
index: 38,
604619
enableString: EnableString.variance,
605620
isEnabledByDefault: IsEnabledByDefault.variance,
606621
isExpired: IsExpired.variance,
@@ -611,7 +626,7 @@ class ExperimentalFeatures {
611626
);
612627

613628
static final wildcard_variables = ExperimentalFeature(
614-
index: 38,
629+
index: 39,
615630
enableString: EnableString.wildcard_variables,
616631
isEnabledByDefault: IsEnabledByDefault.wildcard_variables,
617632
isExpired: IsExpired.wildcard_variables,
@@ -722,6 +737,9 @@ class IsEnabledByDefault {
722737
/// Default state of the experiment "spread-collections"
723738
static const bool spread_collections = true;
724739

740+
/// Default state of the experiment "static-extensions"
741+
static const bool static_extensions = false;
742+
725743
/// Default state of the experiment "super-parameters"
726744
static const bool super_parameters = true;
727745

@@ -844,6 +862,9 @@ class IsExpired {
844862
/// Expiration status of the experiment "spread-collections"
845863
static const bool spread_collections = true;
846864

865+
/// Expiration status of the experiment "static-extensions"
866+
static const bool static_extensions = false;
867+
847868
/// Expiration status of the experiment "super-parameters"
848869
static const bool super_parameters = true;
849870

@@ -978,6 +999,10 @@ mixin _CurrentState {
978999
bool get spread_collections =>
9791000
isEnabled(ExperimentalFeatures.spread_collections);
9801001

1002+
/// Current state for the flag "static-extensions"
1003+
bool get static_extensions =>
1004+
isEnabled(ExperimentalFeatures.static_extensions);
1005+
9811006
/// Current state for the flag "super-parameters"
9821007
bool get super_parameters => isEnabled(ExperimentalFeatures.super_parameters);
9831008

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,15 @@ class ExperimentalFlag {
350350
experimentReleasedVersion: const Version(2, 0),
351351
);
352352

353+
static const ExperimentalFlag staticExtensions = const ExperimentalFlag(
354+
name: 'static-extensions',
355+
isEnabledByDefault: false,
356+
isExpired: false,
357+
enabledVersion: defaultLanguageVersion,
358+
experimentEnabledVersion: defaultLanguageVersion,
359+
experimentReleasedVersion: defaultLanguageVersion,
360+
);
361+
353362
static const ExperimentalFlag superParameters = const ExperimentalFlag(
354363
name: 'super-parameters',
355364
isEnabledByDefault: true,
@@ -612,6 +621,10 @@ class GlobalFeatures {
612621
GlobalFeature get spreadCollections => _spreadCollections ??=
613622
_computeGlobalFeature(ExperimentalFlag.spreadCollections);
614623

624+
GlobalFeature? _staticExtensions;
625+
GlobalFeature get staticExtensions => _staticExtensions ??=
626+
_computeGlobalFeature(ExperimentalFlag.staticExtensions);
627+
615628
GlobalFeature? _superParameters;
616629
GlobalFeature get superParameters => _superParameters ??=
617630
_computeGlobalFeature(ExperimentalFlag.superParameters);
@@ -916,6 +929,14 @@ class LibraryFeatures {
916929
libraryVersion,
917930
);
918931

932+
LibraryFeature? _staticExtensions;
933+
LibraryFeature get staticExtensions =>
934+
_staticExtensions ??= globalFeatures._computeLibraryFeature(
935+
ExperimentalFlag.staticExtensions,
936+
canonicalUri,
937+
libraryVersion,
938+
);
939+
919940
LibraryFeature? _superParameters;
920941
LibraryFeature get superParameters =>
921942
_superParameters ??= globalFeatures._computeLibraryFeature(
@@ -1041,6 +1062,8 @@ class LibraryFeatures {
10411062
return soundFlowAnalysis;
10421063
case shared.ExperimentalFlag.spreadCollections:
10431064
return spreadCollections;
1065+
case shared.ExperimentalFlag.staticExtensions:
1066+
return staticExtensions;
10441067
case shared.ExperimentalFlag.superParameters:
10451068
return superParameters;
10461069
case shared.ExperimentalFlag.testExperiment:
@@ -1127,6 +1150,8 @@ ExperimentalFlag? parseExperimentalFlag(String flag) {
11271150
return ExperimentalFlag.soundFlowAnalysis;
11281151
case "spread-collections":
11291152
return ExperimentalFlag.spreadCollections;
1153+
case "static-extensions":
1154+
return ExperimentalFlag.staticExtensions;
11301155
case "super-parameters":
11311156
return ExperimentalFlag.superParameters;
11321157
case "test-experiment":
@@ -1204,6 +1229,8 @@ final Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
12041229
ExperimentalFlag.soundFlowAnalysis.isEnabledByDefault,
12051230
ExperimentalFlag.spreadCollections:
12061231
ExperimentalFlag.spreadCollections.isEnabledByDefault,
1232+
ExperimentalFlag.staticExtensions:
1233+
ExperimentalFlag.staticExtensions.isEnabledByDefault,
12071234
ExperimentalFlag.superParameters:
12081235
ExperimentalFlag.superParameters.isEnabledByDefault,
12091236
ExperimentalFlag.testExperiment:
@@ -1264,6 +1291,7 @@ const Map<shared.ExperimentalFlag, ExperimentalFlag> sharedExperimentalFlags = {
12641291
shared.ExperimentalFlag.setLiterals: ExperimentalFlag.setLiterals,
12651292
shared.ExperimentalFlag.soundFlowAnalysis: ExperimentalFlag.soundFlowAnalysis,
12661293
shared.ExperimentalFlag.spreadCollections: ExperimentalFlag.spreadCollections,
1294+
shared.ExperimentalFlag.staticExtensions: ExperimentalFlag.staticExtensions,
12671295
shared.ExperimentalFlag.superParameters: ExperimentalFlag.superParameters,
12681296
shared.ExperimentalFlag.testExperiment: ExperimentalFlag.testExperiment,
12691297
shared.ExperimentalFlag.tripleShift: ExperimentalFlag.tripleShift,

tools/experimental_features.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@ features:
153153
inference-update-4:
154154
help: "A bundle of updates to type inference."
155155

156+
static-extensions:
157+
help: "Extensions with static capabilities."
158+
156159
# Experiment flag only used for testing.
157160
test-experiment:
158161
help: >-

0 commit comments

Comments
 (0)