Ver Fonte

Remove the type field from semantics nodes that don't produce values of that type. (#3049)

For `Assign` and `ReturnExpression`, this field wasn't used for
anything. For `StructTypeField`, we stored the type of the field here,
and now store it as an argument of the node instead.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
Richard Smith há 2 anos atrás
pai
commit
0c33dead70
71 ficheiros alterados com 170 adições e 162 exclusões
  1. 5 4
      toolchain/lowering/lowering_context.cpp
  2. 6 4
      toolchain/lowering/lowering_handle.cpp
  3. 3 2
      toolchain/semantics/semantics_context.cpp
  4. 3 2
      toolchain/semantics/semantics_handle_name.cpp
  5. 1 2
      toolchain/semantics/semantics_handle_statement.cpp
  6. 3 3
      toolchain/semantics/semantics_handle_struct.cpp
  7. 2 3
      toolchain/semantics/semantics_handle_variable.cpp
  8. 3 2
      toolchain/semantics/semantics_ir.cpp
  9. 12 8
      toolchain/semantics/semantics_node.h
  10. 4 4
      toolchain/semantics/testdata/basics/builtin_types.carbon
  11. 1 1
      toolchain/semantics/testdata/basics/fail_non_type_as_type.carbon
  12. 1 1
      toolchain/semantics/testdata/basics/fail_qualifier_unsupported.carbon
  13. 1 1
      toolchain/semantics/testdata/basics/parens.carbon
  14. 1 1
      toolchain/semantics/testdata/function/call/empty_struct.carbon
  15. 1 1
      toolchain/semantics/testdata/function/call/empty_tuple.carbon
  16. 2 2
      toolchain/semantics/testdata/function/call/fail_return_type_mismatch.carbon
  17. 2 2
      toolchain/semantics/testdata/function/call/i32.carbon
  18. 1 1
      toolchain/semantics/testdata/function/call/return_implicit.carbon
  19. 3 3
      toolchain/semantics/testdata/if/fail_reachable_fallthrough.carbon
  20. 3 3
      toolchain/semantics/testdata/if/fail_scope.carbon
  21. 2 2
      toolchain/semantics/testdata/if/unreachable_fallthrough.carbon
  22. 1 1
      toolchain/semantics/testdata/if_expression/basic.carbon
  23. 4 4
      toolchain/semantics/testdata/if_expression/constant_condition.carbon
  24. 3 3
      toolchain/semantics/testdata/if_expression/control_flow.carbon
  25. 1 1
      toolchain/semantics/testdata/if_expression/nested.carbon
  26. 3 3
      toolchain/semantics/testdata/operators/and.carbon
  27. 1 1
      toolchain/semantics/testdata/operators/binary_op.carbon
  28. 1 1
      toolchain/semantics/testdata/operators/fail_type_mismatch.carbon
  29. 1 1
      toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon
  30. 3 3
      toolchain/semantics/testdata/operators/or.carbon
  31. 1 1
      toolchain/semantics/testdata/operators/unary_op.carbon
  32. 1 1
      toolchain/semantics/testdata/return/code_after_return.carbon
  33. 2 2
      toolchain/semantics/testdata/return/code_after_return_value.carbon
  34. 1 1
      toolchain/semantics/testdata/return/fail_type_mismatch.carbon
  35. 1 1
      toolchain/semantics/testdata/return/fail_value_disallowed.carbon
  36. 3 3
      toolchain/semantics/testdata/return/struct.carbon
  37. 1 1
      toolchain/semantics/testdata/return/tuple.carbon
  38. 1 1
      toolchain/semantics/testdata/return/value.carbon
  39. 2 2
      toolchain/semantics/testdata/struct/empty.carbon
  40. 2 2
      toolchain/semantics/testdata/struct/fail_assign_empty.carbon
  41. 2 2
      toolchain/semantics/testdata/struct/fail_assign_to_empty.carbon
  42. 3 3
      toolchain/semantics/testdata/struct/fail_field_name_mismatch.carbon
  43. 3 3
      toolchain/semantics/testdata/struct/fail_field_type_mismatch.carbon
  44. 4 4
      toolchain/semantics/testdata/struct/fail_member_access_type.carbon
  45. 4 4
      toolchain/semantics/testdata/struct/fail_non_member_access.carbon
  46. 4 4
      toolchain/semantics/testdata/struct/fail_too_few_values.carbon
  47. 3 3
      toolchain/semantics/testdata/struct/fail_type_assign.carbon
  48. 1 1
      toolchain/semantics/testdata/struct/fail_value_as_type.carbon
  49. 7 7
      toolchain/semantics/testdata/struct/member_access.carbon
  50. 5 5
      toolchain/semantics/testdata/struct/one_entry.carbon
  51. 8 8
      toolchain/semantics/testdata/struct/tuple_as_element.carbon
  52. 8 8
      toolchain/semantics/testdata/struct/two_entries.carbon
  53. 2 2
      toolchain/semantics/testdata/tuples/empty.carbon
  54. 1 1
      toolchain/semantics/testdata/tuples/fail_assign_empty.carbon
  55. 1 1
      toolchain/semantics/testdata/tuples/fail_assign_to_empty.carbon
  56. 1 1
      toolchain/semantics/testdata/tuples/fail_element_type_mismatch.carbon
  57. 1 1
      toolchain/semantics/testdata/tuples/fail_too_few_element.carbon
  58. 1 1
      toolchain/semantics/testdata/tuples/fail_type_assign.carbon
  59. 1 1
      toolchain/semantics/testdata/tuples/nested_tuple.carbon
  60. 2 2
      toolchain/semantics/testdata/tuples/one_element.carbon
  61. 2 2
      toolchain/semantics/testdata/tuples/two_elements.carbon
  62. 1 1
      toolchain/semantics/testdata/var/decl_with_init.carbon
  63. 2 2
      toolchain/semantics/testdata/var/fail_duplicate_decl.carbon
  64. 1 1
      toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon
  65. 1 1
      toolchain/semantics/testdata/var/fail_init_with_self.carbon
  66. 1 1
      toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon
  67. 1 1
      toolchain/semantics/testdata/var/fail_storage_is_literal.carbon
  68. 1 1
      toolchain/semantics/testdata/var/global_decl_with_init.carbon
  69. 2 2
      toolchain/semantics/testdata/var/global_lookup.carbon
  70. 2 2
      toolchain/semantics/testdata/var/global_lookup_in_scope.carbon
  71. 1 1
      toolchain/semantics/testdata/var/lookup.carbon

+ 5 - 4
toolchain/lowering/lowering_context.cpp

@@ -149,12 +149,13 @@ auto LoweringContext::BuildType(SemanticsNodeId node_id) -> llvm::Type* {
       llvm::SmallVector<llvm::Type*> subtypes;
       llvm::SmallVector<llvm::Type*> subtypes;
       subtypes.reserve(refs.size());
       subtypes.reserve(refs.size());
       for (auto ref_id : refs) {
       for (auto ref_id : refs) {
-        auto type_id = semantics_ir_->GetNode(ref_id).type_id();
+        auto [field_name_id, field_type_id] =
+            semantics_ir_->GetNode(ref_id).GetAsStructTypeField();
         // TODO: Handle recursive types. The restriction for builtins prevents
         // TODO: Handle recursive types. The restriction for builtins prevents
         // recursion while still letting them cache.
         // recursion while still letting them cache.
-        CARBON_CHECK(type_id.index < SemanticsBuiltinKind::ValidCount)
-            << type_id;
-        subtypes.push_back(GetType(type_id));
+        CARBON_CHECK(field_type_id.index < SemanticsBuiltinKind::ValidCount)
+            << field_type_id;
+        subtypes.push_back(GetType(field_type_id));
       }
       }
       return llvm::StructType::create(*llvm_context_, subtypes,
       return llvm::StructType::create(*llvm_context_, subtypes,
                                       "StructLiteralType");
                                       "StructLiteralType");

+ 6 - 4
toolchain/lowering/lowering_handle.cpp

@@ -207,10 +207,11 @@ auto LoweringHandleStructMemberAccess(LoweringFunctionContext& context,
       context.semantics_ir()
       context.semantics_ir()
           .GetNode(context.semantics_ir().GetType(struct_type_id))
           .GetNode(context.semantics_ir().GetType(struct_type_id))
           .GetAsStructType());
           .GetAsStructType());
-  auto member_name = context.semantics_ir().GetString(
+  auto [field_name_id, field_type_id] =
       context.semantics_ir()
       context.semantics_ir()
           .GetNode(type_refs[member_index.index])
           .GetNode(type_refs[member_index.index])
-          .GetAsStructTypeField());
+          .GetAsStructTypeField();
+  auto member_name = context.semantics_ir().GetString(field_name_id);
 
 
   auto* gep = context.builder().CreateStructGEP(
   auto* gep = context.builder().CreateStructGEP(
       llvm_type, context.GetLocal(struct_id), member_index.index, member_name);
       llvm_type, context.GetLocal(struct_id), member_index.index, member_name);
@@ -258,8 +259,9 @@ auto LoweringHandleStructValue(LoweringFunctionContext& context,
           .GetNode(context.semantics_ir().GetType(node.type_id()))
           .GetNode(context.semantics_ir().GetType(node.type_id()))
           .GetAsStructType());
           .GetAsStructType());
   for (int i = 0; i < static_cast<int>(refs.size()); ++i) {
   for (int i = 0; i < static_cast<int>(refs.size()); ++i) {
-    auto member_name = context.semantics_ir().GetString(
-        context.semantics_ir().GetNode(type_refs[i]).GetAsStructTypeField());
+    auto [field_name_id, field_type_id] =
+        context.semantics_ir().GetNode(type_refs[i]).GetAsStructTypeField();
+    auto member_name = context.semantics_ir().GetString(field_name_id);
     auto* gep =
     auto* gep =
         context.builder().CreateStructGEP(llvm_type, alloca, i, member_name);
         context.builder().CreateStructGEP(llvm_type, alloca, i, member_name);
     context.builder().CreateStore(context.GetLocal(refs[i]), gep);
     context.builder().CreateStore(context.GetLocal(refs[i]), gep);

+ 3 - 2
toolchain/semantics/semantics_context.cpp

@@ -476,8 +476,9 @@ auto SemanticsContext::CanonicalizeStructType(ParseTree::Node parse_node,
   llvm::FoldingSetNodeID canonical_id;
   llvm::FoldingSetNodeID canonical_id;
   for (const auto& ref_id : refs) {
   for (const auto& ref_id : refs) {
     auto ref = semantics_ir_->GetNode(ref_id);
     auto ref = semantics_ir_->GetNode(ref_id);
-    canonical_id.AddInteger(ref.GetAsStructTypeField().index);
-    canonical_id.AddInteger(ref.type_id().index);
+    auto [name_id, type_id] = ref.GetAsStructTypeField();
+    canonical_id.AddInteger(name_id.index);
+    canonical_id.AddInteger(type_id.index);
   }
   }
 
 
   // If a struct with matching fields was already created, reuse it.
   // If a struct with matching fields was already created, reuse it.

+ 3 - 2
toolchain/semantics/semantics_handle_name.cpp

@@ -32,11 +32,12 @@ auto SemanticsHandleMemberAccessExpression(SemanticsContext& context,
       // TODO: Do we need to optimize this with a lookup table for O(1)?
       // TODO: Do we need to optimize this with a lookup table for O(1)?
       for (int i = 0; i < static_cast<int>(refs.size()); ++i) {
       for (int i = 0; i < static_cast<int>(refs.size()); ++i) {
         auto ref = context.semantics_ir().GetNode(refs[i]);
         auto ref = context.semantics_ir().GetNode(refs[i]);
-        if (name_id == ref.GetAsStructTypeField()) {
+        if (auto [field_name_id, field_type_id] = ref.GetAsStructTypeField();
+            name_id == field_name_id) {
           context.AddNodeAndPush(
           context.AddNodeAndPush(
               parse_node,
               parse_node,
               SemanticsNode::StructMemberAccess::Make(
               SemanticsNode::StructMemberAccess::Make(
-                  parse_node, ref.type_id(), base_id, SemanticsMemberIndex(i)));
+                  parse_node, field_type_id, base_id, SemanticsMemberIndex(i)));
           return true;
           return true;
         }
         }
       }
       }

+ 1 - 2
toolchain/semantics/semantics_handle_statement.cpp

@@ -61,8 +61,7 @@ auto SemanticsHandleReturnStatement(SemanticsContext& context,
           context.ImplicitAsRequired(parse_node, arg, callable.return_type_id);
           context.ImplicitAsRequired(parse_node, arg, callable.return_type_id);
     }
     }
 
 
-    context.AddNode(SemanticsNode::ReturnExpression::Make(
-        parse_node, context.semantics_ir().GetNode(arg).type_id(), arg));
+    context.AddNode(SemanticsNode::ReturnExpression::Make(parse_node, arg));
   }
   }
 
 
   // Switch to a new, unreachable, empty node block. This typically won't
   // Switch to a new, unreachable, empty node block. This typically won't

+ 3 - 3
toolchain/semantics/semantics_handle_struct.cpp

@@ -34,7 +34,7 @@ auto SemanticsHandleStructFieldType(SemanticsContext& context,
       context.node_stack().PopWithParseNode<ParseNodeKind::Name>();
       context.node_stack().PopWithParseNode<ParseNodeKind::Name>();
 
 
   context.AddNodeAndPush(parse_node, SemanticsNode::StructTypeField::Make(
   context.AddNodeAndPush(parse_node, SemanticsNode::StructTypeField::Make(
-                                         name_node, cast_type_id, name_id));
+                                         name_node, name_id, cast_type_id));
   return true;
   return true;
 }
 }
 
 
@@ -54,8 +54,8 @@ auto SemanticsHandleStructFieldValue(SemanticsContext& context,
   context.semantics_ir().AddNode(
   context.semantics_ir().AddNode(
       type_block_id,
       type_block_id,
       SemanticsNode::StructTypeField::Make(
       SemanticsNode::StructTypeField::Make(
-          parse_node, context.semantics_ir().GetNode(value_node_id).type_id(),
-          name_id));
+          parse_node, name_id,
+          context.semantics_ir().GetNode(value_node_id).type_id()));
 
 
   // Push the value back on the stack as an argument.
   // Push the value back on the stack as an argument.
   context.node_stack().Push(parse_node, value_node_id);
   context.node_stack().Push(parse_node, value_node_id);

+ 2 - 3
toolchain/semantics/semantics_handle_variable.cpp

@@ -31,9 +31,8 @@ auto SemanticsHandleVariableDeclaration(SemanticsContext& context,
     auto cast_value_id = context.ImplicitAsRequired(
     auto cast_value_id = context.ImplicitAsRequired(
         parse_node, expr_node_id,
         parse_node, expr_node_id,
         context.semantics_ir().GetNode(storage_id).type_id());
         context.semantics_ir().GetNode(storage_id).type_id());
-    context.AddNode(SemanticsNode::Assign::Make(
-        parse_node, context.semantics_ir().GetNode(cast_value_id).type_id(),
-        storage_id, cast_value_id));
+    context.AddNode(
+        SemanticsNode::Assign::Make(parse_node, storage_id, cast_value_id));
   }
   }
 
 
   context.node_stack()
   context.node_stack()

+ 3 - 2
toolchain/semantics/semantics_ir.cpp

@@ -246,8 +246,9 @@ auto SemanticsIR::StringifyType(SemanticsTypeId type_id) -> std::string {
         break;
         break;
       }
       }
       case SemanticsNodeKind::StructTypeField: {
       case SemanticsNodeKind::StructTypeField: {
-        out << "." << GetString(node.GetAsStructTypeField()) << ": ";
-        steps.push_back({.node_id = GetTypeAllowBuiltinTypes(node.type_id())});
+        auto [name_id, type_id] = node.GetAsStructTypeField();
+        out << "." << GetString(name_id) << ": ";
+        steps.push_back({.node_id = GetTypeAllowBuiltinTypes(type_id)});
         break;
         break;
       }
       }
       case SemanticsNodeKind::TupleType: {
       case SemanticsNodeKind::TupleType: {

+ 12 - 8
toolchain/semantics/semantics_node.h

@@ -286,7 +286,8 @@ class SemanticsNode {
     using FactoryBase<Kind, ArgTypes...>::Get;
     using FactoryBase<Kind, ArgTypes...>::Get;
   };
   };
 
 
-  // Provides Get along with a Make that assumes a non-changing type.
+  // Provides Get along with a Make that assumes the node doesn't produce a
+  // typed value.
   template <KindTemplateEnum Kind, typename... ArgTypes>
   template <KindTemplateEnum Kind, typename... ArgTypes>
   class FactoryNoType : public FactoryBase<Kind, ArgTypes...> {
   class FactoryNoType : public FactoryBase<Kind, ArgTypes...> {
    public:
    public:
@@ -306,9 +307,9 @@ class SemanticsNode {
     }
     }
   };
   };
 
 
-  using Assign = SemanticsNode::Factory<SemanticsNodeKind::Assign,
-                                        SemanticsNodeId /*lhs_id*/,
-                                        SemanticsNodeId /*rhs_id*/>;
+  using Assign = SemanticsNode::FactoryNoType<SemanticsNodeKind::Assign,
+                                              SemanticsNodeId /*lhs_id*/,
+                                              SemanticsNodeId /*rhs_id*/>;
 
 
   using BinaryOperatorAdd =
   using BinaryOperatorAdd =
       SemanticsNode::Factory<SemanticsNodeKind::BinaryOperatorAdd,
       SemanticsNode::Factory<SemanticsNodeKind::BinaryOperatorAdd,
@@ -387,8 +388,8 @@ class SemanticsNode {
 
 
   using Return = FactoryNoType<SemanticsNodeKind::Return>;
   using Return = FactoryNoType<SemanticsNodeKind::Return>;
 
 
-  using ReturnExpression =
-      Factory<SemanticsNodeKind::ReturnExpression, SemanticsNodeId /*expr_id*/>;
+  using ReturnExpression = FactoryNoType<SemanticsNodeKind::ReturnExpression,
+                                         SemanticsNodeId /*expr_id*/>;
 
 
   using StringLiteral = Factory<SemanticsNodeKind::StringLiteral,
   using StringLiteral = Factory<SemanticsNodeKind::StringLiteral,
                                 SemanticsStringId /*string_id*/>;
                                 SemanticsStringId /*string_id*/>;
@@ -400,8 +401,9 @@ class SemanticsNode {
   using StructType =
   using StructType =
       Factory<SemanticsNodeKind::StructType, SemanticsNodeBlockId /*refs_id*/>;
       Factory<SemanticsNodeKind::StructType, SemanticsNodeBlockId /*refs_id*/>;
 
 
-  using StructTypeField = Factory<SemanticsNodeKind::StructTypeField,
-                                  SemanticsStringId /*name_id*/>;
+  using StructTypeField =
+      FactoryNoType<SemanticsNodeKind::StructTypeField,
+                    SemanticsStringId /*name_id*/, SemanticsTypeId /*type_id*/>;
 
 
   using StructValue =
   using StructValue =
       Factory<SemanticsNodeKind::StructValue, SemanticsNodeBlockId /*refs_id*/>;
       Factory<SemanticsNodeKind::StructValue, SemanticsNodeBlockId /*refs_id*/>;
@@ -431,6 +433,8 @@ class SemanticsNode {
 
 
   auto parse_node() const -> ParseTree::Node { return parse_node_; }
   auto parse_node() const -> ParseTree::Node { return parse_node_; }
   auto kind() const -> SemanticsNodeKind { return kind_; }
   auto kind() const -> SemanticsNodeKind { return kind_; }
+
+  // Gets the type of the value produced by evaluating this node.
   auto type_id() const -> SemanticsTypeId { return type_id_; }
   auto type_id() const -> SemanticsTypeId { return type_id_; }
 
 
   auto Print(llvm::raw_ostream& out) const -> void;
   auto Print(llvm::raw_ostream& out) const -> void;

+ 4 - 4
toolchain/semantics/testdata/basics/builtin_types.carbon

@@ -30,18 +30,18 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+4, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+4, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: node+6, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: node+6},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+8, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+8, type: type2},
 // CHECK:STDOUT:   {kind: StringLiteral, arg0: str3, type: type2},
 // CHECK:STDOUT:   {kind: StringLiteral, arg0: str3, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+8, arg1: node+10, type: type2},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+8, arg1: node+10},
 // CHECK:STDOUT:   {kind: VarStorage, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: typeTypeType},
 // CHECK:STDOUT:   {kind: BindName, arg0: str4, arg1: node+12, type: typeTypeType},
 // CHECK:STDOUT:   {kind: BindName, arg0: str4, arg1: node+12, type: typeTypeType},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+12, arg1: nodeIntegerType, type: typeTypeType},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+12, arg1: nodeIntegerType},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/basics/fail_non_type_as_type.carbon

@@ -23,7 +23,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: typeTypeType},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: typeTypeType},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: typeTypeType},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/basics/fail_qualifier_unsupported.carbon

@@ -25,7 +25,7 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/basics/parens.carbon

@@ -26,7 +26,7 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+2, arg1: node+3, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+2, arg1: node+3, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+4, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+4},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/function/call/empty_struct.carbon

@@ -29,7 +29,7 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+2, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type0},

+ 1 - 1
toolchain/semantics/testdata/function/call/empty_tuple.carbon

@@ -31,7 +31,7 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+2, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type0},

+ 2 - 2
toolchain/semantics/testdata/function/call/fail_return_type_mismatch.carbon

@@ -27,12 +27,12 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+4, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+4, type: type1},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 2 - 2
toolchain/semantics/testdata/function/call/i32.carbon

@@ -28,14 +28,14 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+0, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+7, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+7, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block6, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block6, arg1: function0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+9, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+9},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 1 - 1
toolchain/semantics/testdata/function/call/return_implicit.carbon

@@ -33,7 +33,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+7, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+7},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 3 - 3
toolchain/semantics/testdata/if/fail_reachable_fallthrough.carbon

@@ -35,7 +35,7 @@
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block5, arg1: node+0},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block5, arg1: node+0},
 // CHECK:STDOUT:   {kind: Branch, arg0: block6},
 // CHECK:STDOUT:   {kind: Branch, arg0: block6},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5},
 // CHECK:STDOUT:   {kind: Branch, arg0: block7},
 // CHECK:STDOUT:   {kind: Branch, arg0: block7},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+8, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+8, type: type0},
@@ -43,7 +43,7 @@
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block11, arg1: node+8},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block11, arg1: node+8},
 // CHECK:STDOUT:   {kind: Branch, arg0: block12},
 // CHECK:STDOUT:   {kind: Branch, arg0: block12},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+13, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+13},
 // CHECK:STDOUT:   {kind: Branch, arg0: block13},
 // CHECK:STDOUT:   {kind: Branch, arg0: block13},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+16, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+16, type: type0},
@@ -51,7 +51,7 @@
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block17, arg1: node+16},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block17, arg1: node+16},
 // CHECK:STDOUT:   {kind: Branch, arg0: block18},
 // CHECK:STDOUT:   {kind: Branch, arg0: block18},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int2, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int2, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+21, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+21},
 // CHECK:STDOUT:   {kind: Branch, arg0: block18},
 // CHECK:STDOUT:   {kind: Branch, arg0: block18},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 3 - 3
toolchain/semantics/testdata/if/fail_scope.carbon

@@ -32,10 +32,10 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+7, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+7},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5},
 // CHECK:STDOUT:   {kind: Branch, arg0: block6},
 // CHECK:STDOUT:   {kind: Branch, arg0: block6},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/if/unreachable_fallthrough.carbon

@@ -30,9 +30,9 @@
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block5, arg1: node+0},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block5, arg1: node+0},
 // CHECK:STDOUT:   {kind: Branch, arg0: block6},
 // CHECK:STDOUT:   {kind: Branch, arg0: block6},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+7, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+7},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/if_expression/basic.carbon

@@ -38,7 +38,7 @@
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+9},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+9},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+10},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+10},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block7, type: type1},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block7, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+13, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+13},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 4 - 4
toolchain/semantics/testdata/if_expression/constant_condition.carbon

@@ -31,10 +31,10 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type1},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type1},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block5, arg1: node+7},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block5, arg1: node+7},
@@ -44,7 +44,7 @@
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+10},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+10},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+11},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block7, arg1: node+11},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block7, type: type0},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block7, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+14, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+14},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function3},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function3},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: false, type: type1},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: false, type: type1},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block9, arg1: node+17},
 // CHECK:STDOUT:   {kind: BranchIf, arg0: block9, arg1: node+17},
@@ -54,7 +54,7 @@
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block11, arg1: node+20},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block11, arg1: node+20},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block11, arg1: node+21},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block11, arg1: node+21},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block11, type: type0},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block11, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+24, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+24},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/if_expression/control_flow.carbon

@@ -30,10 +30,10 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+6, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+6, type: type1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
@@ -44,7 +44,7 @@
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block9, arg1: node+11},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block9, arg1: node+11},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block9, arg1: node+12},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block9, arg1: node+12},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block9, type: type0},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block9, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+15, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+15},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/if_expression/nested.carbon

@@ -54,7 +54,7 @@
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block13, arg1: node+15},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block13, arg1: node+15},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block13, arg1: node+22},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block13, arg1: node+22},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block13, type: type1},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block13, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+25, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+25},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/operators/and.carbon

@@ -26,10 +26,10 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: false, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: false, type: type0},
@@ -38,7 +38,7 @@
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function1, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function1, type: type0},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block6, arg1: node+11},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block6, arg1: node+11},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block6, type: type0},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block6, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+13, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+13},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/operators/binary_op.carbon

@@ -26,7 +26,7 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+1, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+1, arg1: node+2, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/operators/fail_type_mismatch.carbon

@@ -27,7 +27,7 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: nodeError, arg1: node+2, type: typeError},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: nodeError, arg1: node+2, type: typeError},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3, type: typeError},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon

@@ -30,7 +30,7 @@
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: nodeError, arg1: node+2, type: typeError},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: nodeError, arg1: node+2, type: typeError},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+3, arg1: node+4, type: typeError},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+3, arg1: node+4, type: typeError},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5, type: typeError},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+5},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/operators/or.carbon

@@ -26,10 +26,10 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function1},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+4},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function2},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function0, type: type0},
 // CHECK:STDOUT:   {kind: UnaryOperatorNot, arg0: node+7, type: type0},
 // CHECK:STDOUT:   {kind: UnaryOperatorNot, arg0: node+7, type: type0},
@@ -39,7 +39,7 @@
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function1, type: type0},
 // CHECK:STDOUT:   {kind: Call, arg0: block0, arg1: function1, type: type0},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block6, arg1: node+12},
 // CHECK:STDOUT:   {kind: BranchWithArg, arg0: block6, arg1: node+12},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block6, type: type0},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: block6, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+14, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+14},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/operators/unary_op.carbon

@@ -25,7 +25,7 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: UnaryOperatorNot, arg0: node+0, type: type0},
 // CHECK:STDOUT:   {kind: UnaryOperatorNot, arg0: node+0, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/return/code_after_return.carbon

@@ -30,7 +30,7 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+4, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: BinaryOperatorAdd, arg0: node+4, arg1: node+5, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+6, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+6},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/return/code_after_return_value.carbon

@@ -30,13 +30,13 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+3},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int2, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int2, type: type1},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: unreachable, type: type1},
 // CHECK:STDOUT:   {kind: BlockArg, arg0: unreachable, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+9, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+9},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: false, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: false, type: type0},
 // CHECK:STDOUT:   {kind: UnaryOperatorNot, arg0: node+0, type: type0},
 // CHECK:STDOUT:   {kind: UnaryOperatorNot, arg0: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},
 // CHECK:STDOUT:   {kind: BoolLiteral, arg0: true, type: type0},

+ 1 - 1
toolchain/semantics/testdata/return/fail_type_mismatch.carbon

@@ -24,7 +24,7 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/return/fail_value_disallowed.carbon

@@ -23,7 +23,7 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/return/struct.carbon

@@ -23,14 +23,14 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+3, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+3, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block5, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block5, type: type1},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+6, type: type1},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+6},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/return/tuple.carbon

@@ -43,7 +43,7 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type1},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block4, type: type2},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block4, type: type2},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+10, type: type2},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+10},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/return/value.carbon

@@ -23,7 +23,7 @@
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1, type: type0},
+// CHECK:STDOUT:   {kind: ReturnExpression, arg0: node+1},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/struct/empty.carbon

@@ -25,11 +25,11 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+4, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+4},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+7, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+7, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+7, arg1: node+2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+7, arg1: node+2},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/struct/fail_assign_empty.carbon

@@ -22,13 +22,13 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: StructType, arg0: block0, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block0, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type2},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block0, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/struct/fail_assign_to_empty.carbon

@@ -28,11 +28,11 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type1},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type1},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block3, type: type2},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block3, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/struct/fail_field_name_mismatch.carbon

@@ -24,16 +24,16 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block3, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block3, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type2},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/struct/fail_field_type_mismatch.carbon

@@ -25,16 +25,16 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type2},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type2},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type2},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type2},
 // CHECK:STDOUT:   {kind: StructType, arg0: block3, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block3, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type3},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type3},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 4 - 4
toolchain/semantics/testdata/struct/fail_member_access_type.carbon

@@ -25,18 +25,18 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+7, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+7},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+9, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+9, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+9, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+9, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 4 - 4
toolchain/semantics/testdata/struct/fail_non_member_access.carbon

@@ -24,18 +24,18 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+7, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+7},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+9, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+9, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+9, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+9, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 4 - 4
toolchain/semantics/testdata/struct/fail_too_few_values.carbon

@@ -24,17 +24,17 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+3, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+3, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+5, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+5, type: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block3, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block3, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type2},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+3, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+3, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 3 - 3
toolchain/semantics/testdata/struct/fail_type_assign.carbon

@@ -21,12 +21,12 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/struct/fail_value_as_type.carbon

@@ -23,7 +23,7 @@
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+0, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+0, type: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block3, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block3, type: type1},

+ 7 - 7
toolchain/semantics/testdata/struct/member_access.carbon

@@ -27,26 +27,26 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type1},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type1},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+3, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+3, type: type2},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+5, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+5, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type1},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type2},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+3, arg1: node+11, type: type2},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+3, arg1: node+11},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+13, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+13, type: type1},
 // CHECK:STDOUT:   {kind: StructMemberAccess, arg0: node+3, arg1: member1, type: type1},
 // CHECK:STDOUT:   {kind: StructMemberAccess, arg0: node+3, arg1: member1, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+13, arg1: node+15, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+13, arg1: node+15},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str4, arg1: node+17, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str4, arg1: node+17, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+17, arg1: node+13, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+17, arg1: node+13},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 5 - 5
toolchain/semantics/testdata/struct/one_entry.carbon

@@ -23,19 +23,19 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+4, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+7, type: type1},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+7},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+10, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+10, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+10, arg1: node+2, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+10, arg1: node+2},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 8 - 8
toolchain/semantics/testdata/struct/tuple_as_element.carbon

@@ -33,32 +33,32 @@
 // CHECK:STDOUT:   ],
 // CHECK:STDOUT:   ],
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type1},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type1},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type2},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type2},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type3},
 // CHECK:STDOUT:   {kind: VarStorage, type: type3},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+7, type: type3},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+7, type: type3},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+9, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+9, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+12, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+12, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block6, type: type2},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block6, type: type2},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type2},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+14, type: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+14, type: type2},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block5, type: type3},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block5, type: type3},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+7, arg1: node+17, type: type3},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+7, arg1: node+17},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block8, type: type1},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block8, type: type1},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type2},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type3},
 // CHECK:STDOUT:   {kind: VarStorage, type: type3},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+23, type: type3},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+23, type: type3},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+23, arg1: node+7, type: type3},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+23, arg1: node+7},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 8 - 8
toolchain/semantics/testdata/struct/two_entries.carbon

@@ -25,24 +25,24 @@
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: type_blocks: [
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: nodes: [
 // CHECK:STDOUT: nodes: [
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type0},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StructType, arg0: block2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+3, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+3, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+5, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+5, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type0},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+8, type: type0},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
 // CHECK:STDOUT:   {kind: StructValue, arg0: block4, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+3, arg1: node+11, type: type1},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, type: type0},
-// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+3, arg1: node+11},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str1, arg1: type0},
+// CHECK:STDOUT:   {kind: StructTypeField, arg0: str2, arg1: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: VarStorage, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+15, type: type1},
 // CHECK:STDOUT:   {kind: BindName, arg0: str3, arg1: node+15, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+15, arg1: node+3, type: type1},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+15, arg1: node+3},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/tuples/empty.carbon

@@ -27,11 +27,11 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+4, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: node+4},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+7, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+7, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+7, arg1: node+2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+7, arg1: node+2},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/tuples/fail_assign_empty.carbon

@@ -38,7 +38,7 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+4, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+4, type: type2},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type3},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block0, type: type3},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/tuples/fail_assign_to_empty.carbon

@@ -28,7 +28,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+2, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/tuples/fail_element_type_mismatch.carbon

@@ -50,7 +50,7 @@
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+9, type: type3},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+9, type: type3},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type4},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type4},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/tuples/fail_too_few_element.carbon

@@ -45,7 +45,7 @@
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+7, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+7, type: type1},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type3},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type3},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/tuples/fail_type_assign.carbon

@@ -35,7 +35,7 @@
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+4, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+4, type: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/tuples/nested_tuple.carbon

@@ -63,7 +63,7 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int2, type: type2},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int2, type: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+18, type: type2},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+18, type: type2},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block5, type: type4},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block5, type: type4},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+10, arg1: node+20, type: type4},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+10, arg1: node+20},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/tuples/one_element.carbon

@@ -38,12 +38,12 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+6, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+6, type: type1},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type2},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: node+8, type: type2},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: node+8},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block4, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block4, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+12, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+12, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+12, arg1: node+4, type: type2},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+12, arg1: node+4},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/tuples/two_elements.carbon

@@ -44,13 +44,13 @@
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+9, type: type1},
 // CHECK:STDOUT:   {kind: StubReference, arg0: node+9, type: type1},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type2},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block3, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+11, type: type2},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+11},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block4, type: type0},
 // CHECK:STDOUT:   {kind: TupleValue, arg0: block4, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+16, type: type2},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+16, type: type2},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+16, arg1: node+5, type: type2},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+16, arg1: node+5},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/var/decl_with_init.carbon

@@ -26,7 +26,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: node+3, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: node+3},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 2 - 2
toolchain/semantics/testdata/var/fail_duplicate_decl.carbon

@@ -27,11 +27,11 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: node+3, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: node+3},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+7, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+7},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 1 - 1
toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon

@@ -27,7 +27,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
 // CHECK:STDOUT:   {kind: RealLiteral, arg0: real0, type: type1},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: nodeError},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 1 - 1
toolchain/semantics/testdata/var/fail_init_with_self.carbon

@@ -24,7 +24,7 @@
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: nodeError},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 1 - 1
toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon

@@ -28,7 +28,7 @@
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+4, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+4, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: nodeError},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 1 - 1
toolchain/semantics/testdata/var/fail_storage_is_literal.carbon

@@ -28,7 +28,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: typeError},
 // CHECK:STDOUT:   {kind: VarStorage, type: typeError},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: typeError},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+2, type: typeError},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int1, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+2, arg1: nodeError},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 1 - 1
toolchain/semantics/testdata/var/global_decl_with_init.carbon

@@ -23,7 +23,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/var/global_lookup.carbon

@@ -24,10 +24,10 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+4, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+4, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: node+0, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+4, arg1: node+0},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT:   [
 // CHECK:STDOUT:   [

+ 2 - 2
toolchain/semantics/testdata/var/global_lookup_in_scope.carbon

@@ -26,11 +26,11 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str0, arg1: node+0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+0, arg1: node+2},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: FunctionDeclaration, arg0: function0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str2, arg1: node+5, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+0, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+5, arg1: node+0},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [

+ 1 - 1
toolchain/semantics/testdata/var/lookup.carbon

@@ -26,7 +26,7 @@
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: VarStorage, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: BindName, arg0: str1, arg1: node+1, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
 // CHECK:STDOUT:   {kind: IntegerLiteral, arg0: int0, type: type0},
-// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: node+3, type: type0},
+// CHECK:STDOUT:   {kind: Assign, arg0: node+1, arg1: node+3},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT:   {kind: Return},
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: ]
 // CHECK:STDOUT: node_blocks: [
 // CHECK:STDOUT: node_blocks: [