Do not hide problems in kernel_sdk.dart

This addresses the most concerning problem in #37117

Change-Id: I38feb310023b066922a8049c5026a49572c3e399
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105461
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
diff --git a/pkg/dev_compiler/tool/kernel_sdk.dart b/pkg/dev_compiler/tool/kernel_sdk.dart
index d7e000d..0366522 100755
--- a/pkg/dev_compiler/tool/kernel_sdk.dart
+++ b/pkg/dev_compiler/tool/kernel_sdk.dart
@@ -14,7 +14,12 @@
 import 'package:dev_compiler/src/kernel/command.dart';
 import 'package:dev_compiler/src/kernel/compiler.dart';
 import 'package:front_end/src/api_unstable/ddc.dart'
-    show CompilerOptions, kernelForComponent;
+    show
+        CompilerOptions,
+        kernelForComponent,
+        DiagnosticMessage,
+        printDiagnosticMessage,
+        Severity;
 import 'package:kernel/kernel.dart';
 import 'package:kernel/target/targets.dart';
 import 'package:path/path.dart' as path;
@@ -38,14 +43,25 @@
   }
 
   var librarySpecPath = parserOptions['libraries'] as String;
+  var packagesPath = path.join(ddcPath, '../../.packages');
 
   var target = DevCompilerTarget(TargetFlags());
+  void onDiagnostic(DiagnosticMessage message) {
+    printDiagnosticMessage(message, print);
+    if (message.severity == Severity.error ||
+        message.severity == Severity.internalProblem) {
+      exitCode = 1;
+    }
+  }
+
   var options = CompilerOptions()
     ..compileSdk = true
-    // TODO(sigmund): remove this unnecessary option when possible.
+    // TODO(sigmund): remove these two unnecessary options when possible.
     ..sdkRoot = Uri.base
+    ..packagesFileUri = Uri.base.resolveUri(Uri.file(packagesPath))
     ..librariesSpecificationUri = Uri.base.resolveUri(Uri.file(librarySpecPath))
-    ..target = target;
+    ..target = target
+    ..onDiagnostic = onDiagnostic;
 
   var inputs = target.extraRequiredLibraries.map(Uri.parse).toList();
   var component = await kernelForComponent(inputs, options);