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

* Add support for experimental flags during hot reload.
This commit is contained in:
Siva 2019-01-29 17:19:06 -08:00 committed by GitHub
parent dd86f70f4a
commit 4e68b7c752
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 2 deletions

View File

@ -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();

View File

@ -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

View File

@ -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;