add --verbose support to Kernel worker
diff --git a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
index eacc6bb..1febf02 100644
--- a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
+++ b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
@@ -96,15 +96,17 @@
 }
 
 Future<InitializedCompilerState> initializeCompiler(
-    InitializedCompilerState oldState,
-    Uri sdkSummary,
-    Uri librariesSpecificationUri,
-    Uri packagesFile,
-    List<Uri> additionalDills,
-    Target target,
-    FileSystem fileSystem,
-    Iterable<String> experiments,
-    Map<String, String> environmentDefines) async {
+  InitializedCompilerState oldState,
+  Uri sdkSummary,
+  Uri librariesSpecificationUri,
+  Uri packagesFile,
+  List<Uri> additionalDills,
+  Target target,
+  FileSystem fileSystem,
+  Iterable<String> experiments,
+  Map<String, String> environmentDefines, {
+  bool verbose: false,
+}) async {
   // TODO(sigmund): use incremental compiler when it supports our use case.
   // Note: it is common for the summary worker to invoke the compiler with the
   // same input summary URIs, but with different contents, so we'd need to be
@@ -120,7 +122,8 @@
     ..environmentDefines = environmentDefines
     ..experimentalFlags = parseExperimentalFlags(
         parseExperimentalArguments(experiments),
-        onError: (e) => throw e);
+        onError: (e) => throw e)
+    ..verbose = verbose;
 
   ProcessedOptions processedOpts = new ProcessedOptions(options: options);
 
diff --git a/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart b/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
index 16c2863..9668bc0 100644
--- a/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
+++ b/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
@@ -53,7 +53,8 @@
     Map<String, String> environmentDefines: const {},
     bool outlineOnly,
     bool omitPlatform: false,
-    bool trackNeededDillLibraries: false}) async {
+    bool trackNeededDillLibraries: false,
+    bool verbose: false}) async {
   bool isRetry = false;
   while (true) {
     try {
@@ -98,7 +99,8 @@
           ..fileSystem = fileSystem
           ..omitPlatform = omitPlatform
           ..environmentDefines = environmentDefines
-          ..experimentalFlags = experimentalFlags;
+          ..experimentalFlags = experimentalFlags
+          ..verbose = verbose;
 
         processedOpts = new ProcessedOptions(options: options);
         cachedSdkInput = new WorkerInputComponent(
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index a374fc2..240ffd7 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -143,7 +143,8 @@
   ..addFlag('track-widget-creation', defaultsTo: false)
   ..addMultiOption('enable-experiment',
       help: 'Enable a language experiment when invoking the CFE.')
-  ..addMultiOption('define', abbr: 'D');
+  ..addMultiOption('define', abbr: 'D')
+  ..addFlag('verbose', defaultsTo: false);
 
 class ComputeKernelResult {
   final bool succeeded;
@@ -247,6 +248,7 @@
   bool usingIncrementalCompiler = false;
   bool recordUsedInputs = parsedArgs["used-inputs"] != null;
   var environmentDefines = _parseEnvironmentDefines(parsedArgs['define']);
+  var verbose = parsedArgs['verbose'] as bool;
 
   if (parsedArgs['use-incremental-compiler']) {
     usingIncrementalCompiler = true;
@@ -303,12 +305,15 @@
         target,
         fileSystem,
         parsedArgs['enable-experiment'] as List<String>,
-        environmentDefines);
+        environmentDefines,
+        verbose: verbose);
   }
 
   void onDiagnostic(fe.DiagnosticMessage message) {
     fe.printDiagnosticMessage(message, out.writeln);
-    succeeded = false;
+    if (message.severity == fe.Severity.error) {
+      succeeded = false;
+    }
   }
 
   List<int> kernel;