Skip to content

Commit 8d70508

Browse files
danrubelcommit-bot@chromium.org
authored andcommitted
remove retired experimental flags from kernel
Change-Id: Id0f5e64ad7431e42a10c09fdaf1fae70b73a6d68 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104900 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com> Commit-Queue: Dan Rubel <danrubel@google.com>
1 parent 0674955 commit 8d70508

6 files changed

Lines changed: 42 additions & 16 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class IsExpired {
182182
static const bool constant_update_2018 = false;
183183

184184
/// Expiration status of the experiment "control-flow-collections"
185-
static const bool control_flow_collections = true;
185+
static const bool control_flow_collections = false;
186186

187187
/// Expiration status of the experiment "extension-methods"
188188
static const bool extension_methods = false;
@@ -194,7 +194,7 @@ class IsExpired {
194194
static const bool set_literals = true;
195195

196196
/// Expiration status of the experiment "spread-collections"
197-
static const bool spread_collections = true;
197+
static const bool spread_collections = false;
198198

199199
/// Expiration status of the experiment "triple-shift"
200200
static const bool triple_shift = false;

pkg/dev_compiler/lib/src/kernel/command.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ Future<CompilerResult> _compile(List<String> args,
217217
var experiments = <fe.ExperimentalFlag, bool>{};
218218
for (var name in options.experiments.keys) {
219219
var flag = fe.parseExperimentalFlag(name);
220-
if (flag != null) {
220+
if (flag == fe.ExperimentalFlag.expiredFlag) {
221+
stderr.writeln("Flag '$name' is no longer required.");
222+
} else if (flag != null) {
221223
experiments[flag] = options.experiments[name];
222224
} else {
223225
stderr.writeln("Unknown experiment flag '$name'.");

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ Map<ExperimentalFlag, bool> parseExperimentalFlags(
244244
}
245245
}
246246
for (ExperimentalFlag flag in ExperimentalFlag.values) {
247+
if (flag == ExperimentalFlag.expiredFlag) continue;
247248
assert(defaultExperimentalFlags.containsKey(flag),
248249
"No default value for $flag.");
249250
flags[flag] ??= defaultExperimentalFlags[flag];

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@ enum ExperimentalFlag {
1212
controlFlowCollections,
1313
extensionMethods,
1414
nonNullable,
15-
setLiterals,
1615
spreadCollections,
1716
tripleShift,
17+
18+
// A placeholder representing an "expired" flag which has been removed
19+
// from the codebase but still needs to be gracefully ignored
20+
// when specified on the command line.
21+
expiredFlag,
1822
}
1923

2024
ExperimentalFlag parseExperimentalFlag(String flag) {
@@ -27,12 +31,14 @@ ExperimentalFlag parseExperimentalFlag(String flag) {
2731
return ExperimentalFlag.extensionMethods;
2832
case "non-nullable":
2933
return ExperimentalFlag.nonNullable;
30-
case "set-literals":
31-
return ExperimentalFlag.setLiterals;
3234
case "spread-collections":
3335
return ExperimentalFlag.spreadCollections;
3436
case "triple-shift":
3537
return ExperimentalFlag.tripleShift;
38+
39+
// Expired flags
40+
case "set-literals":
41+
return ExperimentalFlag.expiredFlag;
3642
}
3743
return null;
3844
}
@@ -42,7 +48,6 @@ const Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
4248
ExperimentalFlag.controlFlowCollections: true,
4349
ExperimentalFlag.extensionMethods: false,
4450
ExperimentalFlag.nonNullable: false,
45-
ExperimentalFlag.setLiterals: true,
4651
ExperimentalFlag.spreadCollections: true,
4752
ExperimentalFlag.tripleShift: false,
4853
};

pkg/front_end/tool/_fasta/generate_experimental_flags.dart

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,33 +51,53 @@ Future<String> generateMessagesFile() async {
5151
enum ExperimentalFlag {
5252
''');
5353
for (var key in keys) {
54+
var expired = (yaml[key] as YamlMap)['expired'];
55+
if (expired == true) continue;
5456
sb.writeln(' ${keyToIdentifier(key)},');
5557
}
56-
sb.writeln('}');
57-
5858
sb.write('''
5959
60+
// A placeholder representing an "expired" flag which has been removed
61+
// from the codebase but still needs to be gracefully ignored
62+
// when specified on the command line.
63+
expiredFlag,
64+
}
65+
6066
ExperimentalFlag parseExperimentalFlag(String flag) {
6167
switch (flag) {
6268
''');
69+
var expiredKeys = <String>[];
6370
for (var key in keys) {
71+
var expired = (yaml[key] as YamlMap)['expired'];
72+
if (expired == true) {
73+
expiredKeys.add(key);
74+
continue;
75+
}
6476
sb.writeln(' case "$key":');
6577
sb.writeln(' return ExperimentalFlag.${keyToIdentifier(key)};');
6678
}
79+
if (expiredKeys.isNotEmpty) {
80+
sb.write('''
81+
82+
// Expired flags
83+
''');
84+
for (var key in expiredKeys) {
85+
sb.writeln(' case "$key":');
86+
sb.writeln(' return ExperimentalFlag.expiredFlag;');
87+
}
88+
}
6789
sb.write(''' }
6890
return null;
6991
}
70-
''');
71-
72-
sb.write('''
7392
7493
const Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
7594
''');
7695
for (var key in keys) {
96+
var expired = (yaml[key] as YamlMap)['expired'];
97+
if (expired == true) continue;
7798
bool shipped = (yaml[key] as YamlMap)['enabledIn'] != null;
7899
sb.writeln(' ExperimentalFlag.${keyToIdentifier(key)}: ${shipped},');
79100
if (shipped) {
80-
var expired = (yaml[key] as YamlMap)['expired'];
81101
if (expired == false) {
82102
throw 'Cannot mark shipped feature as "expired: false"';
83103
}

tools/experimental_features.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,13 @@ triple-shift:
8383
help: "Triple-shift operator"
8484

8585
#
86-
# Flags below this line are either retired or rejected, cannot be specified
86+
# Flags below this line are shipped, retired, or rejected, cannot be specified
8787
# on the command line, and will eventually be removed.
8888
#
8989

9090
control-flow-collections:
9191
help: "Control Flow Collections"
9292
enabledIn: '2.2.2'
93-
expired: true
9493

9594
set-literals:
9695
help: "Set Literals"
@@ -100,4 +99,3 @@ set-literals:
10099
spread-collections:
101100
help: "Spread Collections"
102101
enabledIn: '2.2.2'
103-
expired: true

0 commit comments

Comments
 (0)