[ir] Fix let accessor tests

This CL updates the disassembler to inline the values for `let` data
into the accessor.

Bug: tint:1913
Change-Id: I2866aabd344c9a0e5364f49b6da35c03f52be3d9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/135502
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/ir/disassembler.cc b/src/tint/ir/disassembler.cc
index 1ba8db7..7763366 100644
--- a/src/tint/ir/disassembler.cc
+++ b/src/tint/ir/disassembler.cc
@@ -293,17 +293,19 @@
                         out_ << (scalar->ValueAs<bool>() ? "true" : "false");
                     },
                     [&](const constant::Splat* splat) {
-                        out_ << splat->Type()->FriendlyName() << " ";
+                        out_ << splat->Type()->FriendlyName() << "(";
                         emit(splat->Index(0));
+                        out_ << ")";
                     },
                     [&](const constant::Composite* composite) {
-                        out_ << composite->Type()->FriendlyName() << " ";
+                        out_ << composite->Type()->FriendlyName() << "(";
                         for (const auto* elem : composite->elements) {
                             if (elem != composite->elements[0]) {
                                 out_ << ", ";
                             }
                             emit(elem);
                         }
+                        out_ << ")";
                     });
             };
             emit(constant->Value());
@@ -387,7 +389,9 @@
         },
         [&](const ir::Access* a) {
             EmitValueWithType(a);
-            out_ << " = access %" << IdOf(a->Object()) << " ";
+            out_ << " = access ";
+            EmitValue(a->Object());
+            out_ << " ";
             for (size_t i = 0; i < a->Indices().Length(); ++i) {
                 if (i > 0) {
                     out_ << ", ";
diff --git a/src/tint/ir/from_program_accessor_test.cc b/src/tint/ir/from_program_accessor_test.cc
index 0d65fa2..1130c13 100644
--- a/src/tint/ir/from_program_accessor_test.cc
+++ b/src/tint/ir/from_program_accessor_test.cc
@@ -273,8 +273,8 @@
 )");
 }
 
-TEST_F(IR_FromProgramAccessorTest, DISABLED_Accessor_Let_SingleIndex) {
-    // let a: vec3<u32> = vec3(1, 2, 3)
+TEST_F(IR_FromProgramAccessorTest, Accessor_Let_SingleIndex) {
+    // let a: vec3<u32> = vec3()
     // let b = a[2]
     auto* a = Let("a", ty.vec3<u32>(), vec(ty.u32(), 3));
     auto* expr = Decl(Let("b", IndexAccessor(a, 2_u)));
@@ -286,15 +286,14 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:vec3<u32> = construct vec3<u32>, 1, 2, 3
-    %b:u32 = access %1, 2u
+    %b:u32 = access vec3<u32>(0u) 2u
     ret
   }
 }
 )");
 }
 
-TEST_F(IR_FromProgramAccessorTest, DISABLED_Accessor_Let_MultiIndex) {
+TEST_F(IR_FromProgramAccessorTest, Accessor_Let_MultiIndex) {
     // let a: mat3x4<f32> = mat3x4<u32>()
     // let b = a[2][3]
 
@@ -308,15 +307,14 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:mat3x4<f32> = construct mat2x3<f32> 0
-    %b:f32 = access %1 2u, 3u
+    %b:f32 = access mat3x4<f32>(vec4<f32>(0.0f)) 2u, 3u
     ret
   }
 }
 )");
 }
 
-TEST_F(IR_FromProgramAccessorTest, DISABLED_Accessor_Let_SingleMember) {
+TEST_F(IR_FromProgramAccessorTest, Accessor_Let_SingleMember) {
     // struct MyStruct { foo: i32 }
     // let a: MyStruct = MyStruct();
     // let b = a.foo
@@ -334,15 +332,14 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:MyStruct = construct MyStruct
-    %b:i32 = access %1 0u
+    %b:i32 = access MyStruct(0i) 0u
     ret
   }
 }
 )");
 }
 
-TEST_F(IR_FromProgramAccessorTest, DISABLED_Accessor_Let_MultiMember) {
+TEST_F(IR_FromProgramAccessorTest, Accessor_Let_MultiMember) {
     // struct Inner { bar: f32 }
     // struct Outer { a: i32, foo: Inner }
     // let a: Outer = Outer();
@@ -365,15 +362,14 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:Outer = construt Outer
-    %b:f32 = access %1 1u, 0u
+    %b:f32 = access Outer(0i, Inner(0.0f)) 1u, 0u
     ret
   }
 }
 )");
 }
 
-TEST_F(IR_FromProgramAccessorTest, DISABLED_Accessor_Let_Mixed) {
+TEST_F(IR_FromProgramAccessorTest, Accessor_Let_Mixed) {
     // struct Outer { a: i32, foo: array<Inner, 4> }
     // struct Inner { b: i32, c: f32, bar: vec4<f32> }
     // let a: array<Outer, 4> = array();
@@ -400,15 +396,14 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:array<Outer, 4> = construct array<Outer, 4>
-    %b:vec4<f32 = access %1 0u, 1u, 1u, 2u
+    %b:vec4<f32> = access array<Outer, 4>(Outer(0i, array<Inner, 4>(Inner(0i, 0.0f, vec4<f32>(0.0f))))) 0u, 1u, 1u, 2u
     ret
   }
 }
 )");
 }
 
-TEST_F(IR_FromProgramAccessorTest, DISABLED_Accessor_Let_SingleElement) {
+TEST_F(IR_FromProgramAccessorTest, Accessor_Let_SingleElement) {
     // let a: vec2<f32> = vec2()
     // let b = a.y
 
@@ -422,8 +417,7 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:vec2<f32> = construct vec2<f32>
-    %b:f32 = access %1 1u
+    %b:f32 = access vec2<f32>(0.0f) 1u
     ret
   }
 }
@@ -445,7 +439,7 @@
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
     %1:vec3<f32> = construct vec3<f32>
-    %b:vec4<f32> = swizzle %1, zyxz
+    %b:vec4<f32> = swizzle vec3<f32>(0u), zyxz
     ret
   }
 }
@@ -466,8 +460,7 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:vec3<f32> = construct vec3<f32>
-    %2:vec3<f32> = swizzle %1, zyx
+    %2:vec3<f32> = swizzle vec3<f32>(0u) zyx
     %b:vec2<f32> = swizzle %2, yy
     ret
   }
@@ -496,8 +489,7 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test_function = @compute @workgroup_size(1, 1, 1) func():void -> %b1 {
   %b1 = block {
-    %1:MyStruct = construct MyStruct
-    %2:vec4<f32> = access %a, 1u
+    %2:vec4<f32> = access MyStruct(), 1u
     %2:vec3<f32> = swizzle %1, zxy
     %3:vec2<f32> = swizzle %2, yx
     %b:f32 = access %3, 0u
diff --git a/src/tint/ir/from_program_call_test.cc b/src/tint/ir/from_program_call_test.cc
index 1aa224c..4357770 100644
--- a/src/tint/ir/from_program_call_test.cc
+++ b/src/tint/ir/from_program_call_test.cc
@@ -123,7 +123,7 @@
 
     EXPECT_EQ(Disassemble(m.Get()), R"(# Root block
 %b1 = block {
-  %i:ptr<private, vec3<f32>, read_write> = var, vec3<f32> 0.0f
+  %i:ptr<private, vec3<f32>, read_write> = var, vec3<f32>(0.0f)
 }
 
 )");
diff --git a/src/tint/ir/from_program_function_test.cc b/src/tint/ir/from_program_function_test.cc
index a130281..c544853 100644
--- a/src/tint/ir/from_program_function_test.cc
+++ b/src/tint/ir/from_program_function_test.cc
@@ -36,7 +36,7 @@
 
     EXPECT_EQ(Disassemble(m.Get()), R"(%test = @vertex func():vec4<f32> [@position] -> %b1 {
   %b1 = block {
-    ret vec4<f32> 0.0f
+    ret vec4<f32>(0.0f)
   }
 }
 )");
@@ -82,7 +82,7 @@
 
     EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():vec3<f32> -> %b1 {
   %b1 = block {
-    ret vec3<f32> 0.0f
+    ret vec3<f32>(0.0f)
   }
 }
 )");
@@ -98,7 +98,7 @@
 
     EXPECT_EQ(Disassemble(m.Get()), R"(%test = @vertex func():vec4<f32> [@position] -> %b1 {
   %b1 = block {
-    ret vec4<f32> 1.0f, 2.0f, 3.0f, 4.0f
+    ret vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
   }
 }
 )");
@@ -115,7 +115,7 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test = @vertex func():vec4<f32> [@invariant, @position] -> %b1 {
   %b1 = block {
-    ret vec4<f32> 1.0f, 2.0f, 3.0f, 4.0f
+    ret vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
   }
 }
 )");
@@ -131,7 +131,7 @@
     EXPECT_EQ(Disassemble(m.Get()),
               R"(%test = @fragment func():vec4<f32> [@location(1)] -> %b1 {
   %b1 = block {
-    ret vec4<f32> 1.0f, 2.0f, 3.0f, 4.0f
+    ret vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
   }
 }
 )");
@@ -150,7 +150,7 @@
         Disassemble(m.Get()),
         R"(%test = @fragment func():vec4<f32> [@location(1), @interpolate(linear, centroid)] -> %b1 {
   %b1 = block {
-    ret vec4<f32> 1.0f, 2.0f, 3.0f, 4.0f
+    ret vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f)
   }
 }
 )");