Interrupt fuzzer if invalid program is generated

If a a valid shader is input into Tint an valid shader should be
output, if the output is invalid then there is a bug in Tint.

BUG=tint:721

Change-Id: Id3fe80eeb65fa55276d74e2f4868e276bd52ec86
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50000
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/fuzzers/tint_common_fuzzer.cc b/fuzzers/tint_common_fuzzer.cc
index e4a77c0..b47a327 100644
--- a/fuzzers/tint_common_fuzzer.cc
+++ b/fuzzers/tint_common_fuzzer.cc
@@ -33,6 +33,15 @@
   __builtin_trap();
 }
 
+[[noreturn]] void ValidityErrorReporter() {
+  auto printer = tint::diag::Printer::create(stderr, true);
+  printer->write(
+      "Fuzzing detected valid input program being transformed into an invalid "
+      "output progam",
+      {diag::Color::kRed, true});
+  __builtin_trap();
+}
+
 bool ExtractBindingRemapperInputs(const uint8_t** data,
                                   size_t* size,
                                   tint::transform::DataMap* inputs) {
@@ -244,7 +253,7 @@
   if (transform_manager_) {
     auto out = transform_manager_->Run(&program, transform_inputs_);
     if (!out.program.IsValid()) {
-      return 0;
+      ValidityErrorReporter();
     }
 
     program = std::move(out.program);