Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 1069266

Browse files
Kevin Millikincommit-bot@chromium.org
authored andcommitted
[cfe] Add flags for new experimental features
Add flags for extension-methods, non-nullable, and triple-shift. Change-Id: I42d2afbe1b3353a18da8cdfec1fded3ad6694e3a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103620 Auto-Submit: Kevin Millikin <[email protected]> Reviewed-by: Aske Simon Christensen <[email protected]> Commit-Queue: Kevin Millikin <[email protected]>
1 parent 052272d commit 1069266

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
enum ExperimentalFlag {
88
constantUpdate2018,
99
controlFlowCollections,
10+
extensionMethods,
11+
nonNullable,
1012
setLiterals,
1113
spreadCollections,
14+
tripleShift,
1215
}
1316

1417
ExperimentalFlag parseExperimentalFlag(String flag) {
@@ -17,17 +20,26 @@ ExperimentalFlag parseExperimentalFlag(String flag) {
1720
return ExperimentalFlag.constantUpdate2018;
1821
case "control-flow-collections":
1922
return ExperimentalFlag.controlFlowCollections;
23+
case "extension-methods":
24+
return ExperimentalFlag.extensionMethods;
25+
case "non-nullable":
26+
return ExperimentalFlag.nonNullable;
2027
case "set-literals":
2128
return ExperimentalFlag.setLiterals;
2229
case "spread-collections":
2330
return ExperimentalFlag.spreadCollections;
31+
case "triple-shift":
32+
return ExperimentalFlag.tripleShift;
2433
}
2534
return null;
2635
}
2736

2837
const Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
2938
ExperimentalFlag.constantUpdate2018: false,
3039
ExperimentalFlag.controlFlowCollections: true,
40+
ExperimentalFlag.extensionMethods: false,
41+
ExperimentalFlag.nonNullable: false,
3142
ExperimentalFlag.setLiterals: true,
3243
ExperimentalFlag.spreadCollections: true,
44+
ExperimentalFlag.tripleShift: false,
3345
};

pkg/front_end/lib/src/base/processed_options.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,6 @@ class ProcessedOptions {
316316
assert(defaultExperimentalFlags.containsKey(flag),
317317
"No default value for $flag.");
318318
// TODO(askesc): Determine default flag value from specification file.
319-
if (flag == ExperimentalFlag.setLiterals) return true;
320319
return _raw.experimentalFlags[flag] ?? defaultExperimentalFlags[flag];
321320
}
322321

pkg/front_end/lib/src/fasta/target_implementation.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,27 @@ abstract class TargetImplementation extends Target {
5050

5151
bool enableConstantUpdate2018;
5252
bool enableControlFlowCollections;
53+
bool enableExtensionMethods;
54+
bool enableNonNullable;
5355
bool enableSetLiterals;
5456
bool enableSpreadCollections;
57+
bool enableTripleShift;
5558

5659
TargetImplementation(Ticker ticker, this.uriTranslator, this.backendTarget)
5760
: enableConstantUpdate2018 = CompilerContext.current.options
5861
.isExperimentEnabled(ExperimentalFlag.constantUpdate2018),
5962
enableControlFlowCollections = CompilerContext.current.options
6063
.isExperimentEnabled(ExperimentalFlag.controlFlowCollections),
64+
enableExtensionMethods = CompilerContext.current.options
65+
.isExperimentEnabled(ExperimentalFlag.extensionMethods),
66+
enableNonNullable = CompilerContext.current.options
67+
.isExperimentEnabled(ExperimentalFlag.nonNullable),
6168
enableSetLiterals = CompilerContext.current.options
6269
.isExperimentEnabled(ExperimentalFlag.setLiterals),
6370
enableSpreadCollections = CompilerContext.current.options
6471
.isExperimentEnabled(ExperimentalFlag.spreadCollections),
72+
enableTripleShift = CompilerContext.current.options
73+
.isExperimentEnabled(ExperimentalFlag.tripleShift),
6574
super(ticker);
6675

6776
/// Creates a [LibraryBuilder] corresponding to [uri], if one doesn't exist

0 commit comments

Comments
 (0)