tint/resolver: Fix ICE on short-name type used as identifier.

Bug: chromium:1404922
Change-Id: I47a8a294ba62b034feba98566098bef2246a0c9f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/116281
Auto-Submit: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
diff --git a/src/tint/resolver/resolver.cc b/src/tint/resolver/resolver.cc
index 09c4518..7b35104 100644
--- a/src/tint/resolver/resolver.cc
+++ b/src/tint/resolver/resolver.cc
@@ -2716,11 +2716,13 @@
         return nullptr;
     }
 
-    if (sem_.ResolvedSymbol<type::Type>(expr)) {
+    if (sem_.ResolvedSymbol<type::Type>(expr) ||
+        type::ParseShortName(builder_->Symbols().NameFor(symbol)) != type::ShortName::kUndefined) {
         AddError("missing '(' for type initializer or cast", expr->source.End());
         return nullptr;
     }
 
+    // The dependency graph should have errored on this unresolved identifier before reaching here.
     TINT_ICE(Resolver, diagnostics_)
         << expr->source << " unresolved identifier:\n"
         << "resolved: " << (sem_resolved ? sem_resolved->TypeInfo().name : "<null>") << "\n"
diff --git a/src/tint/resolver/validation_test.cc b/src/tint/resolver/validation_test.cc
index 6ccdc7c..b09ad02 100644
--- a/src/tint/resolver/validation_test.cc
+++ b/src/tint/resolver/validation_test.cc
@@ -174,10 +174,17 @@
 
 TEST_F(ResolverValidationTest, Expr_DontCall_Type) {
     Alias("T", ty.u32());
-    WrapInFunction(Expr(Source{{{3, 3}, {3, 8}}}, "T"));
+    WrapInFunction(Expr(Source{{12, 34}}, "T"));
 
     EXPECT_FALSE(r()->Resolve());
-    EXPECT_EQ(r()->error(), "3:8 error: missing '(' for type initializer or cast");
+    EXPECT_EQ(r()->error(), "12:34 error: missing '(' for type initializer or cast");
+}
+
+TEST_F(ResolverValidationTest, Expr_DontCall_ShortName) {
+    WrapInFunction(Expr(Source{{12, 34}}, "vec3f"));
+
+    EXPECT_FALSE(r()->Resolve());
+    EXPECT_EQ(r()->error(), "12:34 error: missing '(' for type initializer or cast");
 }
 
 TEST_F(ResolverValidationTest, AssignmentStmt_InvalidLHS_BuiltinFunctionName) {