[VM] Add experimental flags to gen_kernel.
Bug: https://github.com/dart-lang/sdk/issues/35602
Change-Id: I41cc7fcfe2ec520d4b6cf1d8e9535c618b09637d
Reviewed-on: https://dart-review.googlesource.com/c/90540
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
diff --git a/pkg/front_end/lib/src/api_unstable/vm.dart b/pkg/front_end/lib/src/api_unstable/vm.dart
index 6564a5b..5d7cd8c 100644
--- a/pkg/front_end/lib/src/api_unstable/vm.dart
+++ b/pkg/front_end/lib/src/api_unstable/vm.dart
@@ -2,7 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-export '../api_prototype/compiler_options.dart' show CompilerOptions;
+export '../api_prototype/compiler_options.dart'
+ show CompilerOptions, parseExperimentalFlags;
export '../api_prototype/diagnostic_message.dart'
show DiagnosticMessage, DiagnosticMessageHandler, getMessageUri;
diff --git a/pkg/vm/lib/kernel_front_end.dart b/pkg/vm/lib/kernel_front_end.dart
index e48e30b..6b50c79 100644
--- a/pkg/vm/lib/kernel_front_end.dart
+++ b/pkg/vm/lib/kernel_front_end.dart
@@ -27,6 +27,7 @@
StandardFileSystem,
getMessageUri,
kernelForProgram,
+ parseExperimentalFlags,
printDiagnosticMessage;
import 'package:kernel/type_environment.dart' show TypeEnvironment;
@@ -107,6 +108,8 @@
help: 'Drop AST for members with bytecode', defaultsTo: false);
args.addFlag('use-future-bytecode-format',
help: 'Generate bytecode in the bleeding edge format', defaultsTo: false);
+ args.addMultiOption('enable-experiment',
+ help: 'Comma separated list of experimental features to enable.');
}
/// Create ArgParser and populate it with options consumed by [runCompiler].
@@ -148,6 +151,7 @@
final bool enableAsserts = options['enable-asserts'];
final bool enableConstantEvaluation = options['enable-constant-evaluation'];
final bool splitOutputByPackages = options['split-output-by-packages'];
+ final List<String> experimentalFlags = options['enable-experiment'];
final Map<String, String> environmentDefines = {};
if (!parseCommandLineDefines(options['define'], environmentDefines, usage)) {
@@ -187,6 +191,7 @@
..fileSystem = fileSystem
..linkedDependencies = linkedDependencies
..packagesFileUri = packagesUri
+ ..experimentalFlags = parseExperimentalFlags(experimentalFlags, print)
..onDiagnostic = (DiagnosticMessage m) {
errorDetector(m);
}