Add tint.natvis to CMake and fix outdated visualizers

Change-Id: I4940bbf24be3dd691284d5c097b99e9e8941b95e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/150460
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index 38b292b..5388e0b 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -561,6 +561,13 @@
 include("BUILD.cmake")
 
 ################################################################################
+# Bespoke target settings
+################################################################################
+if (MSVC)
+  target_sources(tint_api PRIVATE tint.natvis)
+endif()
+
+################################################################################
 # Additional fuzzer tests
 ################################################################################
 if(TINT_BUILD_TESTS)
diff --git a/src/tint/tint.natvis b/src/tint/tint.natvis
index 47198c0..dbc090a 100644
--- a/src/tint/tint.natvis
+++ b/src/tint/tint.natvis
@@ -100,14 +100,20 @@
 		<DisplayString Condition="params.size()  > 3">fn {symbol}({*params[0]} {*params[1]} {*params[2]} {params.size()-3} more...) -> {*return_type} {*body}</DisplayString>
 	</Type>
 
-	<Type Name="tint::ast::IdentifierExpression">
-		<!--the ",sb" specifier removes the double quotes on the displayed string -->
+	<Type Name="tint::ast::Identifier">
 		<DisplayString>{symbol}</DisplayString>
 		<Expand>
 			<Item Name="symbol">symbol</Item>
 		</Expand>
 	</Type>
 
+	<Type Name="tint::ast::IdentifierExpression">
+		<DisplayString>{*identifier}</DisplayString>
+		<Expand>
+			<Item Name="identifier">identifier</Item>
+		</Expand>
+	</Type>
+
 	<Type Name="tint::ast::IndexAccessorExpression">
 		<DisplayString>{*object}[{*index}]</DisplayString>
 		<Expand>
@@ -117,9 +123,8 @@
 	</Type>
 
 	<Type Name="tint::ast::MemberAccessorExpression">
-		<DisplayString>{*structure}.{*member}</DisplayString>
+		<DisplayString>{*member}</DisplayString>
 		<Expand>
-			<Item Name="structure">*structure</Item>
 			<Item Name="member">*member</Item>
 		</Expand>
 	</Type>
@@ -179,12 +184,12 @@
 	</Type>
 
 	<Type Name="tint::ast::CallExpression">
-		<DisplayString Condition="args.Length() == 0">{target}()</DisplayString>
-		<DisplayString Condition="args.Length() == 1">{target}({*args[0]})</DisplayString>
-		<DisplayString Condition="args.Length() == 2">{target}({*args[0]}, {*args[1]})</DisplayString>
-		<DisplayString Condition="args.Length() == 3">{target}({*args[0]}, {*args[1]}, {*args[2]})</DisplayString>
-		<DisplayString Condition="args.Length() == 4">{target}({*args[0]}, {*args[1]}, {*args[2]}, {*args[3]})</DisplayString>
-		<DisplayString Condition="args.Length()  > 4">{target}({*args[0]}, {*args[1]}, {*args[2]}, {args.Length()-3} more...)</DisplayString>
+		<DisplayString Condition="args.Length() == 0">{*target}()</DisplayString>
+		<DisplayString Condition="args.Length() == 1">{*target}({*args[0]})</DisplayString>
+		<DisplayString Condition="args.Length() == 2">{*target}({*args[0]}, {*args[1]})</DisplayString>
+		<DisplayString Condition="args.Length() == 3">{*target}({*args[0]}, {*args[1]}, {*args[2]})</DisplayString>
+		<DisplayString Condition="args.Length() == 4">{*target}({*args[0]}, {*args[1]}, {*args[2]}, {*args[3]})</DisplayString>
+		<DisplayString Condition="args.Length()  > 4">{*target}({*args[0]}, {*args[1]}, {*args[2]}, {args.Length()-3} more...)</DisplayString>
 		<!-- TODO: add more overloads -->
 	</Type>
 
@@ -211,22 +216,6 @@
 		<DisplayString>{name}</DisplayString>
 	</Type>
 
-	<Type Name="tint::ast::Bool">
-		<DisplayString>bool</DisplayString>
-	</Type>
-
-	<Type Name="tint::ast::I32">
-		<DisplayString>i32</DisplayString>
-	</Type>
-
-	<Type Name="tint::ast::U32">
-		<DisplayString>u32</DisplayString>
-	</Type>
-
-	<Type Name="tint::ast::F32">
-		<DisplayString>f32</DisplayString>
-	</Type>
-
 	<!--=================================================================-->
 	<!-- sem -->
 	<!--=================================================================-->
@@ -247,12 +236,20 @@
 		<DisplayString>f32</DisplayString>
 	</Type>
 
+	<Type Name="tint::core::type::I32">
+		<DisplayString>i32</DisplayString>
+	</Type>
+
+	<Type Name="tint::core::type::U32">
+		<DisplayString>u32</DisplayString>
+	</Type>
+
 	<Type Name="tint::core::type::Vector">
 		<DisplayString>vec{width_}&lt;{*subtype_}&gt;</DisplayString>
 	</Type>
 
-	<Type Name="tint::core::connstant::Value">
-		<DisplayString>Type={*Type()} Value={Value()}</DisplayString>
+	<Type Name="tint::core::constant::Value">
+		<DisplayString>Type={*Type()} Value={InternalValue()}</DisplayString>
 	</Type>
 
 	<Type Name="tint::sem::ValueExpression">