Don't log stack traces to console on build failures (#44966)
diff --git a/packages/flutter_tools/lib/src/aot.dart b/packages/flutter_tools/lib/src/aot.dart index 50be745..b76d227 100644 --- a/packages/flutter_tools/lib/src/aot.dart +++ b/packages/flutter_tools/lib/src/aot.dart
@@ -226,8 +226,11 @@ status?.stop(); if (!result.success) { for (ExceptionMeasurement measurement in result.exceptions.values) { - printError(measurement.exception.toString()); - printError(measurement.stackTrace.toString()); + printError('Target ${measurement.target} failed: ${measurement.exception}', + stackTrace: measurement.fatal + ? measurement.stackTrace + : null, + ); } throwToolExit('Failed to build aot.'); }
diff --git a/packages/flutter_tools/lib/src/build_system/build_system.dart b/packages/flutter_tools/lib/src/build_system/build_system.dart index 3c303c6..c81a43c 100644 --- a/packages/flutter_tools/lib/src/build_system/build_system.dart +++ b/packages/flutter_tools/lib/src/build_system/build_system.dart
@@ -556,6 +556,8 @@ } } } catch (exception, stackTrace) { + // TODO(jonahwilliams): throw specific exception for expected errors to mark + // as non-fatal. All others should be fatal. node.target.clearStamp(environment); passed = false; skipped = false; @@ -573,12 +575,15 @@ /// Helper class to collect exceptions. class ExceptionMeasurement { - ExceptionMeasurement(this.target, this.exception, this.stackTrace); + ExceptionMeasurement(this.target, this.exception, this.stackTrace, {this.fatal = false}); final String target; final dynamic exception; final StackTrace stackTrace; + /// Whether this exception was a fatal build system error. + final bool fatal; + @override String toString() => 'target: $target\nexception:$exception\n$stackTrace'; }
diff --git a/packages/flutter_tools/lib/src/bundle.dart b/packages/flutter_tools/lib/src/bundle.dart index 0193354..8d157ea9 100644 --- a/packages/flutter_tools/lib/src/bundle.dart +++ b/packages/flutter_tools/lib/src/bundle.dart
@@ -126,8 +126,11 @@ if (!result.success) { for (ExceptionMeasurement measurement in result.exceptions.values) { - printError(measurement.exception.toString()); - printError(measurement.stackTrace.toString()); + printError('Target ${measurement.target} failed: ${measurement.exception}', + stackTrace: measurement.fatal + ? measurement.stackTrace + : null, + ); } throwToolExit('Failed to build bundle.'); }
diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart index b475880..8b83775 100644 --- a/packages/flutter_tools/lib/src/commands/assemble.dart +++ b/packages/flutter_tools/lib/src/commands/assemble.dart
@@ -155,8 +155,12 @@ resourcePoolSize: argResults['resource-pool-size'], )); if (!result.success) { - for (MapEntry<String, ExceptionMeasurement> data in result.exceptions.entries) { - printError('Target ${data.key} failed: ${data.value.exception}', stackTrace: data.value.stackTrace); + for (ExceptionMeasurement measurement in result.exceptions.values) { + printError('Target ${measurement.target} failed: ${measurement.exception}', + stackTrace: measurement.fatal + ? measurement.stackTrace + : null, + ); } throwToolExit('build failed.'); }
diff --git a/packages/flutter_tools/lib/src/web/compile.dart b/packages/flutter_tools/lib/src/web/compile.dart index f0d9524..4f40ccc 100644 --- a/packages/flutter_tools/lib/src/web/compile.dart +++ b/packages/flutter_tools/lib/src/web/compile.dart
@@ -54,8 +54,11 @@ )); if (!result.success) { for (ExceptionMeasurement measurement in result.exceptions.values) { - printError(measurement.stackTrace.toString()); - printError(measurement.exception.toString()); + printError('Target ${measurement.target} failed: ${measurement.exception}', + stackTrace: measurement.fatal + ? measurement.stackTrace + : null, + ); } throwToolExit('Failed to compile application for the Web.'); }