Unverified Commit 4e68b7c7 authored by Siva's avatar Siva Committed by GitHub

Add support for experimental flags during hot reload. (#27252)

* Add support for experimental flags during hot reload.
parent dd86f70f
......@@ -339,6 +339,12 @@ class RunCommand extends RunCommandBase {
throwToolExit('Error: --train is only allowed when running as --dynamic --profile '
'(recommended) or --debug (may include unwanted debug symbols).');
List<String> expFlags;
if (argParser.options.containsKey(FlutterOptions.kEnableExperiment) &&
argResults[FlutterOptions.kEnableExperiment].isNotEmpty) {
expFlags = argResults[FlutterOptions.kEnableExperiment];
}
final List<FlutterDevice> flutterDevices = devices.map<FlutterDevice>((Device device) {
return FlutterDevice(
device,
......@@ -347,6 +353,7 @@ class RunCommand extends RunCommandBase {
fileSystemRoots: argResults['filesystem-root'],
fileSystemScheme: argResults['filesystem-scheme'],
viewFilter: argResults['isolate-filter'],
experimentalFlags: expFlags,
);
}).toList();
......
......@@ -341,7 +341,8 @@ class ResidentCompiler {
CompilerMessageConsumer compilerMessageConsumer = printError,
String initializeFromDill,
TargetModel targetModel = TargetModel.flutter,
bool unsafePackageSerialization
bool unsafePackageSerialization,
List<String> experimentalFlags,
}) : assert(_sdkRoot != null),
_trackWidgetCreation = trackWidgetCreation,
_packagesPath = packagesPath,
......@@ -351,7 +352,8 @@ class ResidentCompiler {
_stdoutHandler = StdoutHandler(consumer: compilerMessageConsumer),
_controller = StreamController<_CompilationRequest>(),
_initializeFromDill = initializeFromDill,
_unsafePackageSerialization = unsafePackageSerialization {
_unsafePackageSerialization = unsafePackageSerialization,
_experimentalFlags = experimentalFlags {
// This is a URI, not a file path, so the forward slash is correct even on Windows.
if (!_sdkRoot.endsWith('/'))
_sdkRoot = '$_sdkRoot/';
......@@ -367,6 +369,7 @@ class ResidentCompiler {
final StdoutHandler _stdoutHandler;
String _initializeFromDill;
bool _unsafePackageSerialization;
final List<String> _experimentalFlags;
final StreamController<_CompilationRequest> _controller;
......@@ -479,6 +482,10 @@ class ResidentCompiler {
if (_unsafePackageSerialization == true) {
command.add('--unsafe-package-serialization');
}
if ((_experimentalFlags != null) && _experimentalFlags.isNotEmpty) {
final String expFlags = _experimentalFlags.join(',');
command.add('--enable-experiment=$expFlags');
}
printTrace(command.join(' '));
_server = await processManager.start(command);
_server.stdout
......
......@@ -35,6 +35,7 @@ class FlutterDevice {
this.fileSystemScheme,
this.viewFilter,
TargetModel targetModel = TargetModel.flutter,
List<String> experimentalFlags,
ResidentCompiler generator,
}) : assert(trackWidgetCreation != null),
generator = generator ?? ResidentCompiler(
......@@ -43,6 +44,7 @@ class FlutterDevice {
fileSystemRoots: fileSystemRoots,
fileSystemScheme: fileSystemScheme,
targetModel: targetModel,
experimentalFlags: experimentalFlags,
);
final Device device;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment