From 763bf114602600a01488d5dc6db9f1b521e2857c Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Thu, 24 Jan 2019 09:48:10 -0800 Subject: [PATCH] Experimental flags for hot reloads (#26988) * First pass at incremental exp flags * adkfgjh --- packages/flutter_tools/lib/src/commands/run.dart | 6 ++++++ packages/flutter_tools/lib/src/compile.dart | 11 +++++++++-- packages/flutter_tools/lib/src/resident_runner.dart | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 16b764e4151..7f5075765f4 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -333,6 +333,11 @@ class RunCommand extends RunCommandBase { throwToolExit('Error: --train is only allowed when running as --dynamic --profile ' '(recommended) or --debug (may include unwanted debug symbols).'); + List expFlags = null; + if (argParser.options.containsKey(FlutterOptions.kEnableExperiment) && + argResults[FlutterOptions.kEnableExperiment] != null) { + expFlags = argResults[FlutterOptions.kEnableExperiment]; + } final List flutterDevices = devices.map((Device device) { return FlutterDevice( device, @@ -341,6 +346,7 @@ class RunCommand extends RunCommandBase { fileSystemRoots: argResults['filesystem-root'], fileSystemScheme: argResults['filesystem-scheme'], viewFilter: argResults['isolate-filter'], + experimentalFlags: expFlags, ); }).toList(); diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index eb584a186dd..428fa484271 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart @@ -332,7 +332,8 @@ class ResidentCompiler { CompilerMessageConsumer compilerMessageConsumer = printError, String initializeFromDill, TargetModel targetModel = TargetModel.flutter, - bool unsafePackageSerialization + bool unsafePackageSerialization, + List experimentalFlags, }) : assert(_sdkRoot != null), _trackWidgetCreation = trackWidgetCreation, _packagesPath = packagesPath, @@ -342,7 +343,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/'; @@ -358,6 +360,7 @@ class ResidentCompiler { final _StdoutHandler _stdoutHandler; String _initializeFromDill; bool _unsafePackageSerialization; + final List _experimentalFlags; final StreamController<_CompilationRequest> _controller; @@ -470,6 +473,10 @@ class ResidentCompiler { if (_unsafePackageSerialization == true) { command.add('--unsafe-package-serialization'); } + if (_experimentalFlags != null) { + var expFlags = _experimentalFlags.join(","); + command.add('--enable-experiment=${expFlags}'); + } printTrace(command.join(' ')); _server = await processManager.start(command); _server.stdout diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index eecb0571737..75e8b9c33e6 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -35,6 +35,7 @@ class FlutterDevice { this.fileSystemScheme, this.viewFilter, TargetModel targetModel = TargetModel.flutter, + List 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;