Handle thrown maps and rejects from fe server (#37743)
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index 4858710..f909027 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart
@@ -653,7 +653,7 @@ if (!_compileRequestNeedsConfirmation) { return Future<CompilerOutput>.value(null); } - _stdoutHandler.reset(); + _stdoutHandler.reset(expectSources: false); _server.stdin.writeln('reject'); printTrace('<- reject'); _compileRequestNeedsConfirmation = false;
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index 167b402..14091bf 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -540,12 +540,10 @@ this.stayResident = true, this.hotMode = true, this.dillOutputPath, - }) { - _mainPath = findMainDartFile(target); - _projectRootPath = projectRootPath ?? fs.currentDirectory.path; - _packagesFilePath = - packagesFilePath ?? fs.path.absolute(PackageMap.globalPackagesPath); - _assetBundle = AssetBundleFactory.instance.createBundle(); + }) : mainPath = findMainDartFile(target), + projectRootPath = projectRootPath ?? fs.currentDirectory.path, + packagesFilePath = packagesFilePath ?? fs.path.absolute(PackageMap.globalPackagesPath), + assetBundle = AssetBundleFactory.instance.createBundle() { // TODO(jonahwilliams): this is transitionary logic to allow us to support // platforms that are not yet using flutter assemble. In the "new world", // builds are isolated based on a number of factors. Thus, we cannot assume @@ -570,19 +568,15 @@ final bool ipv6; final Completer<int> _finished = Completer<int>(); final String dillOutputPath; + final String packagesFilePath; + final String projectRootPath; + final String mainPath; + final AssetBundle assetBundle; + bool _exited = false; bool hotMode ; - String _packagesFilePath; - String get packagesFilePath => _packagesFilePath; - String _projectRootPath; - String get projectRootPath => _projectRootPath; - String _mainPath; - String get mainPath => _mainPath; String getReloadPath({ bool fullRestart }) => mainPath + (fullRestart ? '' : '.incremental') + '.dill'; - AssetBundle _assetBundle; - AssetBundle get assetBundle => _assetBundle; - bool get isRunningDebug => debuggingOptions.buildInfo.isDebug; bool get isRunningProfile => debuggingOptions.buildInfo.isProfile; bool get isRunningRelease => debuggingOptions.buildInfo.isRelease;
diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index b834a81..4a7ea38 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart
@@ -654,7 +654,7 @@ for (FlutterDevice device in flutterDevices) { for (FlutterView view in device.views) { if (view.uiIsolate == null) { - throw 'Application isolate not found'; + return OperationResult(2, 'Application isolate not found', fatal: true); } } } @@ -762,7 +762,6 @@ } // Record time it took for the VM to reload the sources. _addBenchmarkData('hotReloadVMReloadMilliseconds', vmReloadTimer.elapsed.inMilliseconds); - final Stopwatch reassembleTimer = Stopwatch()..start(); // Reload the isolate. final List<Future<void>> allDevices = <Future<void>>[];
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 777323c..b55f4da 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -1177,7 +1177,7 @@ final Map<String, dynamic> response = await invokeRpcRaw('_reloadSources', params: arguments); return response; } on rpc.RpcException catch (e) { - return Future<Map<String, dynamic>>.error(<String, dynamic>{ + return Future<Map<String, dynamic>>.value(<String, dynamic>{ 'code': e.code, 'message': e.message, 'data': e.data,