[SDK] Adds --enable-experiment to dart2native.
Bug: https://github.com/dart-lang/sdk/issues/42849
Change-Id: Ibde382971a6b8b296f9a0a8792f0fec0e1741286
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157963
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
diff --git a/pkg/dart2native/bin/dart2native.dart b/pkg/dart2native/bin/dart2native.dart
index 57c6f21..6df0953 100644
--- a/pkg/dart2native/bin/dart2native.dart
+++ b/pkg/dart2native/bin/dart2native.dart
@@ -60,6 +60,10 @@
..addOption('save-debugging-info', abbr: 'S', valueHelp: 'path', help: '''
Remove debugging information from the output and save it separately to the specified file. <path> can be relative or absolute.
''')
+ ..addOption('enable-experiment',
+ defaultsTo: '', valueHelp: 'feature', hide: true, help: '''
+Comma separated list of experimental features.
+''')
..addFlag('verbose',
abbr: 'v', negatable: false, help: 'Show verbose output.');
@@ -99,6 +103,7 @@
debugFile: parsedArgs['save-debugging-info'],
packages: parsedArgs['packages'],
defines: parsedArgs['define'],
+ enableExperiment: parsedArgs['enable-experiment'],
enableAsserts: parsedArgs['enable-asserts'],
verbose: parsedArgs['verbose'],
extraOptions: parsedArgs['extra-gen-snapshot-options']);
diff --git a/pkg/dart2native/lib/dart2native.dart b/pkg/dart2native/lib/dart2native.dart
index 06aaeec..0139b24 100644
--- a/pkg/dart2native/lib/dart2native.dart
+++ b/pkg/dart2native/lib/dart2native.dart
@@ -39,11 +39,13 @@
Future generateAotKernel(String dart, String genKernel, String platformDill,
String sourceFile, String kernelFile, String packages, List<String> defines,
- {List<String> extraGenKernelOptions = const []}) {
+ {String enableExperiment = '',
+ List<String> extraGenKernelOptions = const []}) {
return Process.run(dart, [
genKernel,
'--platform',
platformDill,
+ if (enableExperiment.isNotEmpty) '--enable-experiment=${enableExperiment}',
'--aot',
'-Ddart.vm.product=true',
...(defines.map((d) => '-D${d}')),
diff --git a/pkg/dart2native/lib/generate.dart b/pkg/dart2native/lib/generate.dart
index c4cbbcb..7ce1f9a2 100644
--- a/pkg/dart2native/lib/generate.dart
+++ b/pkg/dart2native/lib/generate.dart
@@ -24,6 +24,7 @@
String debugFile,
String packages,
List<String> defines,
+ String enableExperiment = '',
bool enableAsserts = false,
bool verbose = false,
List<String> extraOptions = const [],
@@ -52,7 +53,8 @@
final String kernelFile = path.join(tempDir.path, 'kernel.dill');
final kernelResult = await generateAotKernel(Platform.executable, genKernel,
- productPlatformDill, sourcePath, kernelFile, packages, defines);
+ productPlatformDill, sourcePath, kernelFile, packages, defines,
+ enableExperiment: enableExperiment);
if (kernelResult.exitCode != 0) {
stderr.writeln(kernelResult.stdout);
stderr.writeln(kernelResult.stderr);