[tint][ir][val] Handle null types in lets when logging errors

Fixes: 376493191
Change-Id: I4cae624927a0e87096a03df217ae521460ca1506
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/213115
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/tint/lang/core/ir/validator.cc b/src/tint/lang/core/ir/validator.cc
index 3720ffc..6cc6af1 100644
--- a/src/tint/lang/core/ir/validator.cc
+++ b/src/tint/lang/core/ir/validator.cc
@@ -2172,9 +2172,12 @@
 
     if (l->Result(0) && l->Value()) {
         if (l->Result(0)->Type() != l->Value()->Type()) {
-            AddError(l) << "result type " << style::Type(l->Result(0)->Type()->FriendlyName())
-                        << " does not match value type "
-                        << style::Type(l->Value()->Type()->FriendlyName());
+            auto result_type_name =
+                l->Result(0)->Type() ? l->Result(0)->Type()->FriendlyName() : "undef";
+            auto value_type_name =
+                l->Value()->Type() ? l->Value()->Type()->FriendlyName() : "undef";
+            AddError(l) << "result type " << style::Type(result_type_name)
+                        << " does not match value type " << style::Type(value_type_name);
         }
     }
 }
@@ -2390,8 +2393,8 @@
 
         auto* index = a->Indices()[i];
         if (DAWN_UNLIKELY(!index->Type() || !index->Type()->IsIntegerScalar())) {
-            err() << "index must be integer, got "
-                  << (index->Type() ? index->Type()->FriendlyName() : "undefined");
+            auto name = index->Type() ? index->Type()->FriendlyName() : "undef";
+            err() << "index must be integer, got " << name;
             return;
         }