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.');
}