diff --git a/toolchain/check/convert.cpp b/toolchain/check/convert.cpp index d274e792c52a..b815e6ec92d5 100644 --- a/toolchain/check/convert.cpp +++ b/toolchain/check/convert.cpp @@ -402,6 +402,61 @@ static auto ConvertTupleToTuple(Context& context, SemIR::TupleType src_type, } } +// Converts a tuple of elements that are convertible to `type` into a `type` +// that is a tuple of types. +static auto ConvertTupleToType(Context& context, SemIR::LocId loc_id, + SemIR::InstId value_id, + SemIR::TypeId value_type_id, + ConversionTarget target) -> SemIR::TypeInstId { + auto value_const_id = context.constant_values().Get(value_id); + if (!value_const_id.is_constant()) { + // Types are constants. The input value must have a constant value to + // convert. + return SemIR::TypeInstId::None; + } + + llvm::SmallVector type_inst_ids; + + auto value_const_inst_id = + context.constant_values().GetInstId(value_const_id); + if (auto tuple_value = + context.insts().TryGetAs(value_const_inst_id)) { + for (auto tuple_inst_id : + context.inst_blocks().Get(tuple_value->elements_id)) { + // TODO: This call recurses back into conversion. Switch to an + // iterative approach. + type_inst_ids.push_back( + ExprAsType(context, loc_id, tuple_inst_id, target.diagnose).inst_id); + } + } else { + // A value of type TupleType that isn't a TupleValue must be a symbolic + // binding. + CARBON_CHECK( + context.insts().Is(value_const_inst_id)); + // Form a TupleAccess for each element in the symbolic value, which is then + // converted to a `type` or diagnosed as an error. + auto tuple_type = context.types().GetAs(value_type_id); + auto type_elements = context.types().GetBlockAsTypeIds( + context.inst_blocks().Get(tuple_type.type_elements_id)); + for (auto [i, type_id] : llvm::enumerate(type_elements)) { + auto access_inst_id = + GetOrAddInst(context, loc_id, + {.type_id = type_id, + .tuple_id = value_id, + .index = SemIR::ElementIndex(i)}); + // TODO: This call recurses back into conversion. Switch to an + // iterative approach. + type_inst_ids.push_back( + ExprAsType(context, loc_id, access_inst_id, target.diagnose).inst_id); + } + } + + // TODO: Should we add this as an instruction? It will contain + // references to local InstIds. + auto tuple_type_id = GetTupleType(context, type_inst_ids); + return context.types().GetInstId(tuple_type_id); +} + // Common implementation for ConvertStructToStruct and ConvertStructToClass. template static auto ConvertStructToStructOrClass( @@ -1165,35 +1220,21 @@ static auto PerformBuiltinConversion( } } - if (target.type_id == SemIR::TypeType::TypeId || - sem_ir.types().Is(target.type_id)) { - auto type_value_id = SemIR::InstId::None; + if (sem_ir.types().IsFacetType(target.type_id)) { + auto type_value_id = SemIR::TypeInstId::None; // A tuple of types converts to type `type`. - // TODO: This should apply even for non-literal tuples. - if (auto tuple_literal = value.TryAs()) { - llvm::SmallVector type_inst_ids; - for (auto tuple_inst_id : - sem_ir.inst_blocks().Get(tuple_literal->elements_id)) { - // TODO: This call recurses back into conversion. Switch to an - // iterative approach. - type_inst_ids.push_back( - ExprAsType(context, loc_id, tuple_inst_id, target.diagnose) - .inst_id); - } - // TODO: Should we add this as an instruction? It will contain references - // to local InstIds. - auto tuple_type_id = GetTupleType(context, type_inst_ids); - type_value_id = sem_ir.types().GetInstId(tuple_type_id); + if (sem_ir.types().Is(value_type_id)) { + type_value_id = + ConvertTupleToType(context, loc_id, value_id, value_type_id, target); } // `{}` converts to `{} as type`. - // TODO: This conversion should also be performed for a non-literal value - // of type `{}`. - if (auto struct_literal = value.TryAs(); - struct_literal && - struct_literal->elements_id == SemIR::InstBlockId::Empty) { - type_value_id = sem_ir.types().GetInstId(value_type_id); + if (auto struct_type = + sem_ir.types().TryGetAs(value_type_id)) { + if (struct_type->fields_id == SemIR::StructTypeFieldsId::Empty) { + type_value_id = sem_ir.types().GetInstId(value_type_id); + } } if (type_value_id != SemIR::InstId::None) { diff --git a/toolchain/check/eval_inst.cpp b/toolchain/check/eval_inst.cpp index e3276a0cbc42..6b780c779ab5 100644 --- a/toolchain/check/eval_inst.cpp +++ b/toolchain/check/eval_inst.cpp @@ -634,6 +634,12 @@ auto EvalConstantInst(Context& /*context*/, SemIR::StructInit inst) .type_id = inst.type_id, .elements_id = inst.elements_id}); } +auto EvalConstantInst(Context& /*context*/, SemIR::StructLiteral inst) + -> ConstantEvalResult { + return ConstantEvalResult::NewSamePhase(SemIR::StructValue{ + .type_id = inst.type_id, .elements_id = inst.elements_id}); +} + auto EvalConstantInst(Context& /*context*/, SemIR::Temporary /*inst*/) -> ConstantEvalResult { // TODO: Handle this. Can we just return the value of `init_id`? @@ -651,6 +657,12 @@ auto EvalConstantInst(Context& /*context*/, SemIR::TupleInit inst) .type_id = inst.type_id, .elements_id = inst.elements_id}); } +auto EvalConstantInst(Context& /*context*/, SemIR::TupleLiteral inst) + -> ConstantEvalResult { + return ConstantEvalResult::NewSamePhase(SemIR::TupleValue{ + .type_id = inst.type_id, .elements_id = inst.elements_id}); +} + auto EvalConstantInst(Context& context, SemIR::TypeOfInst inst) -> ConstantEvalResult { // Grab the type from the instruction produced as our operand. diff --git a/toolchain/check/testdata/alias/basics.carbon b/toolchain/check/testdata/alias/basics.carbon index 4a279d8b84af..10670e38bc9e 100644 --- a/toolchain/check/testdata/alias/basics.carbon +++ b/toolchain/check/testdata/alias/basics.carbon @@ -172,6 +172,7 @@ extern alias C = Class; // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -199,7 +200,7 @@ extern alias C = Class; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/export_name.carbon b/toolchain/check/testdata/alias/export_name.carbon index ccfcaaa6c2a5..4e5fd25793b5 100644 --- a/toolchain/check/testdata/alias/export_name.carbon +++ b/toolchain/check/testdata/alias/export_name.carbon @@ -188,6 +188,7 @@ var d: D* = &c; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -227,7 +228,7 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_13.2: init %C = class_init (), file.%d.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc6_1: init %C = converted %.loc6_13.1, %.loc6_13.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%d.var, %.loc6_1 @@ -238,6 +239,7 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -268,7 +270,7 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -280,6 +282,7 @@ var d: D* = &c; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -352,7 +355,7 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_13.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_13.1, %.loc7_13.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc7_1 diff --git a/toolchain/check/testdata/alias/import.carbon b/toolchain/check/testdata/alias/import.carbon index 060c5782ebad..75b2bedafdb6 100644 --- a/toolchain/check/testdata/alias/import.carbon +++ b/toolchain/check/testdata/alias/import.carbon @@ -199,8 +199,8 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -214,7 +214,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -224,7 +224,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_14.2: init %empty_tuple.type = tuple_init () to file.%a.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_1: init %empty_tuple.type = converted %.loc4_14.1, %.loc4_14.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%a.var, %.loc4_1 @@ -263,7 +263,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc8_9.1: type = splice_block %.loc8_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_9.3: type = converted %.loc8_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var [concrete = %b.var] @@ -282,8 +282,8 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -307,7 +307,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %empty_tuple.type = ref_binding c, %c.var [concrete = %c.var] diff --git a/toolchain/check/testdata/alias/import_access.carbon b/toolchain/check/testdata/alias/import_access.carbon index f1087b2b3492..61fbbd3165ef 100644 --- a/toolchain/check/testdata/alias/import_access.carbon +++ b/toolchain/check/testdata/alias/import_access.carbon @@ -89,6 +89,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -125,7 +126,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_16.2: init %C = class_init (), file.%inst.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc4_1: init %C = converted %.loc4_16.1, %.loc4_16.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%inst.var, %.loc4_1 @@ -136,6 +137,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -160,7 +162,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%inst.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -169,6 +171,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -198,7 +201,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%inst.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/alias/import_order.carbon b/toolchain/check/testdata/alias/import_order.carbon index bc246e9cd95f..dc537fe9a26b 100644 --- a/toolchain/check/testdata/alias/import_order.carbon +++ b/toolchain/check/testdata/alias/import_order.carbon @@ -38,6 +38,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.v [concrete] @@ -63,7 +64,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_19.2: type = converted %.loc4_19.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc4_16: %C.elem = field_decl v, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.v [concrete = constants.%complete_type] @@ -82,12 +83,16 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.v [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.70b: ref %empty_tuple.type = class_element_access file.%d_val.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.5f2: %struct_type.v = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.70b: ref %empty_tuple.type = class_element_access file.%d_val.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete] +// CHECK:STDOUT: %struct.3d6: %struct_type.v = struct_value (%.70b) [concrete] // CHECK:STDOUT: %.cbd: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete] +// CHECK:STDOUT: %struct.1aa: %struct_type.v = struct_value (%.cbd) [concrete] // CHECK:STDOUT: %.89b: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete] +// CHECK:STDOUT: %struct.408: %struct_type.v = struct_value (%.89b) [concrete] // CHECK:STDOUT: %.4f1: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -156,8 +161,8 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_23.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_24.1: %struct_type.v = struct_literal (%.loc7_23.1) +// CHECK:STDOUT: %.loc7_23.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_24.1: %struct_type.v = struct_literal (%.loc7_23.1) [concrete = constants.%struct.5f2] // CHECK:STDOUT: %.loc7_24.2: ref %empty_tuple.type = class_element_access file.%d_val.var, element0 [concrete = constants.%.70b] // CHECK:STDOUT: %.loc7_23.2: init %empty_tuple.type = tuple_init () to %.loc7_24.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_24.3: init %empty_tuple.type = converted %.loc7_23.1, %.loc7_23.2 [concrete = constants.%empty_tuple] @@ -167,7 +172,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %d_val.ref: ref %C = name_ref d_val, file.%d_val [concrete = file.%d_val.var] // CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.f99 [concrete = imports.%.2fc] // CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 [concrete = constants.%.70b] -// CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) +// CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) [concrete = constants.%struct.3d6] // CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete = constants.%.cbd] // CHECK:STDOUT: %.loc8_27.2: init %empty_tuple.type = tuple_init () to %.loc8_29.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_29.3: init %empty_tuple.type = converted %.loc8_27.1, %.loc8_27.2 [concrete = constants.%empty_tuple] @@ -177,7 +182,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val [concrete = file.%c_val.var] // CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.f99 [concrete = imports.%.2fc] // CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 [concrete = constants.%.cbd] -// CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) +// CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) [concrete = constants.%struct.1aa] // CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete = constants.%.89b] // CHECK:STDOUT: %.loc9_27.2: init %empty_tuple.type = tuple_init () to %.loc9_29.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_29.3: init %empty_tuple.type = converted %.loc9_27.1, %.loc9_27.2 [concrete = constants.%empty_tuple] @@ -187,7 +192,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val [concrete = file.%b_val.var] // CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.f99 [concrete = imports.%.2fc] // CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 [concrete = constants.%.89b] -// CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) +// CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) [concrete = constants.%struct.408] // CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete = constants.%.4f1] // CHECK:STDOUT: %.loc10_27.2: init %empty_tuple.type = tuple_init () to %.loc10_29.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_29.3: init %empty_tuple.type = converted %.loc10_27.1, %.loc10_27.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/array/basics.carbon b/toolchain/check/testdata/array/basics.carbon index 8917d1feb14d..864aed4efcc7 100644 --- a/toolchain/check/testdata/array/basics.carbon +++ b/toolchain/check/testdata/array/basics.carbon @@ -109,13 +109,13 @@ var a: array(1, 1); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3, %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.035: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%a.var, element0 [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%a.var, element1 [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access file.%a.var, element2 [concrete] @@ -133,7 +133,7 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %array_type = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc6_19: type = splice_block %array_type [concrete = constants.%array_type] { -// CHECK:STDOUT: %.loc6_15.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_15.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %.loc6_15.2: type = converted %.loc6_15.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %array_type: type = array_type %int_3, %.loc6_15.2 [concrete = constants.%array_type] @@ -170,6 +170,7 @@ var a: array(1, 1); // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.ff9 = tuple_value (%C, %C, %C) [concrete] // CHECK:STDOUT: %tuple.type.734: type = tuple_type (%C, %C, %C) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -217,7 +218,7 @@ var a: array(1, 1); // CHECK:STDOUT: %C.ref.loc10_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc10_20: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc10_23: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc10_24.1: %tuple.type.ff9 = tuple_literal (%C.ref.loc10_17, %C.ref.loc10_20, %C.ref.loc10_23) +// CHECK:STDOUT: %.loc10_24.1: %tuple.type.ff9 = tuple_literal (%C.ref.loc10_17, %C.ref.loc10_20, %C.ref.loc10_23) [concrete = constants.%tuple] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %.loc10_24.2: type = converted %.loc10_24.1, constants.%tuple.type.734 [concrete = constants.%tuple.type.734] // CHECK:STDOUT: %array_type: type = array_type %int_2, %.loc10_24.2 [concrete = constants.%array_type] @@ -235,11 +236,13 @@ var a: array(1, 1); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3, %empty_tuple.type [concrete] // CHECK:STDOUT: %ptr.20b: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %pattern_type.035: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %ptr.7fe: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -262,7 +265,7 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type = var %a.var_patt // CHECK:STDOUT: %.loc7_21: type = splice_block %array_type [concrete = constants.%array_type] { -// CHECK:STDOUT: %.loc7_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %.loc7_17.2: type = converted %.loc7_17.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %array_type: type = array_type %int_3, %.loc7_17.2 [concrete = constants.%array_type] @@ -274,13 +277,13 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %tuple.type = var %b.var_patt // CHECK:STDOUT: %.loc8_21.1: type = splice_block %.loc8_21.6 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc8_12: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_16: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_20: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_21.2: %tuple.type = tuple_literal (%.loc8_12, %.loc8_16, %.loc8_20) -// CHECK:STDOUT: %.loc8_21.3: type = converted %.loc8_12, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc8_21.4: type = converted %.loc8_16, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc8_21.5: type = converted %.loc8_20, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_12: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_16: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_20: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_21.2: %tuple.type = tuple_literal (%.loc8_12, %.loc8_16, %.loc8_20) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc8_21.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_21.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_21.5: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc8_21.6: type = converted %.loc8_21.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type = ref_binding b, %b.var @@ -301,10 +304,10 @@ var a: array(1, 1); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_1, %empty_tuple.type [concrete] // CHECK:STDOUT: %ptr.b99: type = ptr_type %array_type [concrete] @@ -344,7 +347,7 @@ var a: array(1, 1); // CHECK:STDOUT: %.loc8_3: init %array_type = converted %F.call, %.loc8_27.6 [concrete = constants.%array] // CHECK:STDOUT: assign %t.var, %.loc8_3 // CHECK:STDOUT: %.loc8_21: type = splice_block %array_type [concrete = constants.%array_type] { -// CHECK:STDOUT: %.loc8_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %.loc8_17.2: type = converted %.loc8_17.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %array_type: type = array_type %int_1, %.loc8_17.2 [concrete = constants.%array_type] @@ -367,9 +370,9 @@ var a: array(1, 1); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%a.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%a.var, element1 [concrete] // CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access file.%a.var, element2 [concrete] // CHECK:STDOUT: %tuple.elem3: ref %empty_tuple.type = tuple_access file.%a.var, element3 [concrete] @@ -403,7 +406,7 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %array_type = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc9_19: type = splice_block %array_type [concrete = constants.%array_type] { -// CHECK:STDOUT: %.loc9_15.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_15.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete = constants.%int_9] // CHECK:STDOUT: %.loc9_15.2: type = converted %.loc9_15.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %array_type: type = array_type %int_9, %.loc9_15.2 [concrete = constants.%array_type] diff --git a/toolchain/check/testdata/array/index_not_literal.carbon b/toolchain/check/testdata/array/index_not_literal.carbon index 5b7908a5b185..e3c3f3f0dfa6 100644 --- a/toolchain/check/testdata/array/index_not_literal.carbon +++ b/toolchain/check/testdata/array/index_not_literal.carbon @@ -71,6 +71,7 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.2d5: %tuple.type.37f = tuple_value (%int_1.5b8, %int_2.ecc, %int_3.1ba) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] @@ -129,7 +130,7 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %int_1.loc10_13: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc10_16: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc10_20.1: %tuple.type.37f = tuple_literal (%int_1.loc10_13, %int_2.loc10_16, %int_3) +// CHECK:STDOUT: %.loc10_20.1: %tuple.type.37f = tuple_literal (%int_1.loc10_13, %int_2.loc10_16, %int_3) [concrete = constants.%tuple.2d5] // CHECK:STDOUT: %int_1.loc10_23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0.loc10_20.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc10_20.1: = bound_method %int_1.loc10_13, %impl.elem0.loc10_20.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] @@ -183,6 +184,7 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3, %empty_struct_type [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] @@ -204,7 +206,6 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -216,7 +217,7 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %array_type = name_ref a, %a // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc6_23.1: %struct_type.index = struct_literal (%int_2) +// CHECK:STDOUT: %.loc6_23.1: %struct_type.index = struct_literal (%int_2) [concrete = constants.%struct] // CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_23.2: %struct_type.index = converted %.loc6_23.1, %struct [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_24.1: Core.IntLiteral = struct_access %.loc6_23.2, element0 [concrete = constants.%int_2.ecc] diff --git a/toolchain/check/testdata/array/init_dependent_bound.carbon b/toolchain/check/testdata/array/init_dependent_bound.carbon index 67a6c43990dd..6e078f4c4e6d 100644 --- a/toolchain/check/testdata/array/init_dependent_bound.carbon +++ b/toolchain/check/testdata/array/init_dependent_bound.carbon @@ -66,6 +66,7 @@ fn H() { G(3); } // CHECK:STDOUT: %ptr.a86: type = ptr_type %array_type.512 [symbolic] // CHECK:STDOUT: %require_complete.cec: = require_complete_type %array_type.512 [symbolic] // CHECK:STDOUT: %pattern_type.b5c: type = pattern_type %array_type.512 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %array.8ba: %array_type.512 = tuple_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] @@ -127,7 +128,7 @@ fn H() { G(3); } // CHECK:STDOUT: %arr.var_patt: @G.%pattern_type (%pattern_type.b5c) = var_pattern %arr.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %arr.var: ref @G.%array_type.loc7_22.2 (%array_type.512) = var %arr.var_patt -// CHECK:STDOUT: %.loc7_27.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_27.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_27.2: init @G.%array_type.loc7_22.2 (%array_type.512) = array_init () to %arr.var [symbolic = %array (constants.%array.8ba)] // CHECK:STDOUT: %.loc7_3.1: init @G.%array_type.loc7_22.2 (%array_type.512) = converted %.loc7_27.1, %.loc7_27.2 [symbolic = %array (constants.%array.8ba)] // CHECK:STDOUT: assign %arr.var, %.loc7_3.1 @@ -180,6 +181,7 @@ fn H() { G(3); } // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_1, %int_2, %int_3.1ba) [concrete] // CHECK:STDOUT: %ImplicitAs.type.7a9: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.2c2: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] @@ -228,7 +230,7 @@ fn H() { G(3); } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc11_36: %tuple.type = tuple_literal (%int_1, %int_2, %int_3) +// CHECK:STDOUT: %.loc11_36: %tuple.type = tuple_literal (%int_1, %int_2, %int_3) [concrete = constants.%tuple] // CHECK:STDOUT: assign %arr.var, // CHECK:STDOUT: // CHECK:STDOUT: %arr: ref = ref_binding arr, [concrete = ] diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 4d8f22037d83..951a7a75ac06 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -319,9 +319,9 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %D [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %D.val: %D = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -338,7 +338,7 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10_13: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_13: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_15.1: %D = as_compatible %empty_struct [concrete = constants.%D.val] @@ -357,6 +357,7 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.x.y.4cf: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.x.y.4cf = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] @@ -395,7 +396,7 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc14_34.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc14_34.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %impl.elem0.loc14_34.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %int_1, %impl.elem0.loc14_34.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] @@ -429,7 +430,9 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %Noncopyable: type = class_type @Noncopyable [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.c8c: type = tuple_type (%empty_struct_type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.c8c = tuple_value (%empty_struct, %Noncopyable) [concrete] // CHECK:STDOUT: %tuple.type.a10: type = tuple_type (%empty_struct_type, %Noncopyable) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %A [concrete] // CHECK:STDOUT: } @@ -443,10 +446,10 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %a_value.patt: %pattern_type = value_binding_pattern a_value [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %.loc14_28: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_28: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [concrete = constants.%Noncopyable] -// CHECK:STDOUT: %.loc14_42.1: %tuple.type.c8c = tuple_literal (%.loc14_28, %Noncopyable.ref) -// CHECK:STDOUT: %.loc14_42.2: type = converted %.loc14_28, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc14_42.1: %tuple.type.c8c = tuple_literal (%.loc14_28, %Noncopyable.ref) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc14_42.2: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc14_42.3: type = converted %.loc14_42.1, constants.%tuple.type.a10 [concrete = constants.%tuple.type.a10] // CHECK:STDOUT: %.loc14_23.1: %tuple.type.a10 = as_compatible %a.ref // CHECK:STDOUT: %.loc14_23.2: %tuple.type.a10 = converted %a.ref, %.loc14_23.1 diff --git a/toolchain/check/testdata/as/basics.carbon b/toolchain/check/testdata/as/basics.carbon index 0f2773bc9450..293b546324ce 100644 --- a/toolchain/check/testdata/as/basics.carbon +++ b/toolchain/check/testdata/as/basics.carbon @@ -132,10 +132,11 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %empty_tuple.type, .y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %struct_type.y.x: type = struct_type {.y: %empty_tuple.type, .x: %empty_tuple.type} [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %struct: %struct_type.x.y = struct_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %struct.f76: %struct_type.y.x = struct_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %struct.005: %struct_type.x.y = struct_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -143,20 +144,20 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() -> %return.param: %struct_type.x.y { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_17: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_26: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_27.1: %struct_type.y.x = struct_literal (%.loc6_17, %.loc6_26) -// CHECK:STDOUT: %.loc6_38.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_17: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_26: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_27.1: %struct_type.y.x = struct_literal (%.loc6_17, %.loc6_26) [concrete = constants.%struct.f76] +// CHECK:STDOUT: %.loc6_38.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_38.2: type = converted %.loc6_38.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc6_46.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_46.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_46.2: type = converted %.loc6_46.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.y.loc6: type = struct_type {.x: %empty_tuple.type, .y: %empty_tuple.type} [concrete = constants.%struct_type.x.y] // CHECK:STDOUT: %empty_tuple.loc6_26: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_27.2: %empty_tuple.type = converted %.loc6_26, %empty_tuple.loc6_26 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc6_17: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_27.3: %empty_tuple.type = converted %.loc6_17, %empty_tuple.loc6_17 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %struct: %struct_type.x.y = struct_value (%.loc6_27.2, %.loc6_27.3) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc6_29.1: %struct_type.x.y = converted %.loc6_27.1, %struct [concrete = constants.%struct] +// CHECK:STDOUT: %struct: %struct_type.x.y = struct_value (%.loc6_27.2, %.loc6_27.3) [concrete = constants.%struct.005] +// CHECK:STDOUT: %.loc6_29.1: %struct_type.x.y = converted %.loc6_27.1, %struct [concrete = constants.%struct.005] // CHECK:STDOUT: %.loc6_29.2: %empty_tuple.type = struct_access %.loc6_29.1, element0 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_29.3: ref %empty_tuple.type = struct_access %return, element0 // CHECK:STDOUT: %.loc6_29.4: init %empty_tuple.type = tuple_init () to %.loc6_29.3 [concrete = constants.%empty_tuple] @@ -165,8 +166,8 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc6_29.7: ref %empty_tuple.type = struct_access %return, element1 // CHECK:STDOUT: %.loc6_29.8: init %empty_tuple.type = tuple_init () to %.loc6_29.7 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_29.9: init %empty_tuple.type = converted %.loc6_29.6, %.loc6_29.8 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc6_29.10: init %struct_type.x.y = struct_init (%.loc6_29.5, %.loc6_29.9) to %return [concrete = constants.%struct] -// CHECK:STDOUT: %.loc6_48: init %struct_type.x.y = converted %.loc6_29.1, %.loc6_29.10 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc6_29.10: init %struct_type.x.y = struct_init (%.loc6_29.5, %.loc6_29.9) to %return [concrete = constants.%struct.005] +// CHECK:STDOUT: %.loc6_48: init %struct_type.x.y = converted %.loc6_29.1, %.loc6_29.10 [concrete = constants.%struct.005] // CHECK:STDOUT: return %.loc6_48 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -175,7 +176,9 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -190,11 +193,11 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc5_17: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_21: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_22: %tuple.type.b6b = tuple_literal (%.loc5_17, %.loc5_21) -// CHECK:STDOUT: %.loc5_24.1: type = converted %.loc5_17, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc5_24.2: type = converted %.loc5_21, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc5_17: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc5_21: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc5_22: %tuple.type.b6b = tuple_literal (%.loc5_17, %.loc5_21) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc5_24.1: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc5_24.2: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc5_24.3: type = converted %.loc5_22, constants.%tuple.type.b6b [concrete = constants.%tuple.type.b6b] // CHECK:STDOUT: // CHECK:STDOUT: } @@ -207,6 +210,7 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%X, %X) [concrete] // CHECK:STDOUT: %tuple.type.b67: type = tuple_type (%X, %X) [concrete] // CHECK:STDOUT: %pattern_type.bb7: type = pattern_type %tuple.type.b67 [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -237,12 +241,12 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc13_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc13_25, %Make.call.loc13_33) // CHECK:STDOUT: %X.ref.loc13_40: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %X.ref.loc13_43: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc13_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc13_40, %X.ref.loc13_43) +// CHECK:STDOUT: %.loc13_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc13_40, %X.ref.loc13_43) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc13_44.2: type = converted %.loc13_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: %.loc13_15.1: type = splice_block %.loc13_15.3 [concrete = constants.%tuple.type.b67] { // CHECK:STDOUT: %X.ref.loc13_11: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %X.ref.loc13_14: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc13_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc13_11, %X.ref.loc13_14) +// CHECK:STDOUT: %.loc13_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc13_11, %X.ref.loc13_14) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc13_15.3: type = converted %.loc13_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13_25.2: ref %X = temporary %.loc13_25.1, %Make.call.loc13_25 @@ -281,7 +285,7 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc20_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc20_25, %Make.call.loc20_33) // CHECK:STDOUT: %X.ref.loc20_40: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %X.ref.loc20_43: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc20_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc20_40, %X.ref.loc20_43) +// CHECK:STDOUT: %.loc20_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc20_40, %X.ref.loc20_43) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc20_44.2: type = converted %.loc20_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: %.loc20_34.2: init %tuple.type.b67 = tuple_init (%Make.call.loc20_25, %Make.call.loc20_33) to %b.var // CHECK:STDOUT: %.loc20_3: init %tuple.type.b67 = converted %.loc20_34.1, %.loc20_34.2 @@ -289,7 +293,7 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc20_15.1: type = splice_block %.loc20_15.3 [concrete = constants.%tuple.type.b67] { // CHECK:STDOUT: %X.ref.loc20_11: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %X.ref.loc20_14: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc20_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc20_11, %X.ref.loc20_14) +// CHECK:STDOUT: %.loc20_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc20_11, %X.ref.loc20_14) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc20_15.3: type = converted %.loc20_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.b67 = ref_binding b, %b.var @@ -376,10 +380,11 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %Y: type = class_type @Y [concrete] // CHECK:STDOUT: %pattern_type.c27: type = pattern_type %Y [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %X.val: %X = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %As.type.d60: type = facet_type <@As, @As(%Y)> [concrete] // CHECK:STDOUT: %As.Convert.type.d2d: type = fn_type @As.Convert, @As(%Y) [concrete] @@ -405,8 +410,8 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_20.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc19_21.1: %struct_type.x = struct_literal (%.loc19_20.1) +// CHECK:STDOUT: %.loc19_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc19_21.1: %struct_type.x = struct_literal (%.loc19_20.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc19_21.2: ref %X = temporary_storage // CHECK:STDOUT: %.loc19_21.3: ref %empty_tuple.type = class_element_access %.loc19_21.2, element0 diff --git a/toolchain/check/testdata/as/var_init.carbon b/toolchain/check/testdata/as/var_init.carbon index 9d1972e172f0..11e997be753b 100644 --- a/toolchain/check/testdata/as/var_init.carbon +++ b/toolchain/check/testdata/as/var_init.carbon @@ -32,6 +32,7 @@ fn Convert(t: ()) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.179: type = facet_type <@ImplicitAs, @ImplicitAs(%X)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.665: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%X) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness @X.%ImplicitAs.impl_witness_table [concrete] @@ -40,7 +41,7 @@ fn Convert(t: ()) { // CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert: %empty_tuple.type.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.179 = facet_value %empty_tuple.type, (%ImplicitAs.impl_witness) [concrete] // CHECK:STDOUT: %.f5e: type = fn_type_with_self_type %ImplicitAs.Convert.type.665, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.bound: = bound_method %empty_tuple, %empty_tuple.type.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %X, () [concrete] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.bd5: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [concrete] @@ -58,9 +59,9 @@ fn Convert(t: ()) { // CHECK:STDOUT: %x.var_patt: %pattern_type.019 = var_pattern %x.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %X = var %x.var_patt -// CHECK:STDOUT: %.loc12_15.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_15.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %impl.elem0: %.f5e = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.ImplicitAs.impl.Convert] -// CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %.loc12_15.1, %impl.elem0 +// CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %.loc12_15.1, %impl.elem0 [concrete = constants.%empty_tuple.type.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %.loc12_3.1: ref %X = splice_block %x.var {} // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_15.2: %empty_tuple.type = converted %.loc12_15.1, %empty_tuple [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon index 11d5de0e1120..c0f56f96cbd4 100644 --- a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon +++ b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon @@ -103,6 +103,7 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -111,7 +112,6 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -124,7 +124,7 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc17_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc17_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc17_12.2: type = converted %.loc17_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -149,7 +149,7 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt // CHECK:STDOUT: %.loc18_11.1: type = splice_block %.loc18_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc18_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_11.3: type = converted %.loc18_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %empty_tuple.type = ref_binding c, %c.var @@ -217,11 +217,11 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.bb8: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [concrete] diff --git a/toolchain/check/testdata/basics/duplicate_name_same_line.carbon b/toolchain/check/testdata/basics/duplicate_name_same_line.carbon index c8bf0637490b..da9fc4ae9257 100644 --- a/toolchain/check/testdata/basics/duplicate_name_same_line.carbon +++ b/toolchain/check/testdata/basics/duplicate_name_same_line.carbon @@ -24,6 +24,7 @@ fn A() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -46,7 +47,7 @@ fn A() { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var.loc18_5: ref %empty_tuple.type = var %n.var_patt.loc18_5 // CHECK:STDOUT: %.loc18_13.1: type = splice_block %.loc18_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc18_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_13.3: type = converted %.loc18_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %n.loc18_9: ref %empty_tuple.type = ref_binding n, %n.var.loc18_5 @@ -59,7 +60,7 @@ fn A() { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var.loc18_25: ref %empty_tuple.type = var %n.var_patt.loc18_25 // CHECK:STDOUT: %.loc18_33.1: type = splice_block %.loc18_33.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc18_33.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_33.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_33.3: type = converted %.loc18_33.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %n.loc18_29: ref %empty_tuple.type = ref_binding n, %n.var.loc18_25 diff --git a/toolchain/check/testdata/basics/raw_identifier.carbon b/toolchain/check/testdata/basics/raw_identifier.carbon index 9db65b5c385a..360e7def41ea 100644 --- a/toolchain/check/testdata/basics/raw_identifier.carbon +++ b/toolchain/check/testdata/basics/raw_identifier.carbon @@ -27,10 +27,10 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] @@ -49,11 +49,11 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc14_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_17.2: type = converted %.loc14_17.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %n.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc14_10.1: type = splice_block %.loc14_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc14_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_10.3: type = converted %.loc14_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %empty_tuple.type = value_binding n, %n.param @@ -66,11 +66,11 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc18_19.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_19.2: type = converted %.loc18_19.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %n.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc18_12.1: type = splice_block %.loc18_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc18_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_12.3: type = converted %.loc18_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %empty_tuple.type = value_binding n, %n.param @@ -83,11 +83,11 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc22_20.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc22_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_20.2: type = converted %.loc22_20.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %if.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc22_13.1: type = splice_block %.loc22_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc22_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc22_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_13.3: type = converted %.loc22_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %if: %empty_tuple.type = value_binding r#if, %if.param diff --git a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon index 4da853db6804..baaefb7aa3a6 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon @@ -116,121 +116,123 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst4800012C} // CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir60000004, inst_id: inst(TypeType)} // CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst4800012B} -// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst48000143} -// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000141} -// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst4800013F} -// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000140} -// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000173} -// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000171} -// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst4800015E} -// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst48000158} -// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst48000156} -// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst4800015B} -// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst4800016C} -// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst4800016E} -// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst4800018B} -// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst48000172} -// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst48000157} -// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst4800015D} +// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst48000144} +// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000142} +// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst48000140} +// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000141} +// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000176} +// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000174} +// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst4800015F} +// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst48000159} +// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst48000157} +// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst4800015C} +// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst4800016F} +// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst48000171} +// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst4800018E} +// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst48000175} +// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst48000158} +// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst4800015E} // CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst48000165} -// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst48000169} -// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst4800016D} -// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst48000175} -// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst4800018B} -// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst48000186} -// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst48000187} -// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst48000182} -// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst48000184} -// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst48000156} -// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst4800015B} -// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst4800018E} -// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst4800018F} -// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst4800017B} -// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst4800017C} -// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst4800017D} -// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst4800017E} -// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst4800017F} -// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst48000183} -// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst48000194} -// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst4800019C} -// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst480001A0} -// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst480001A2} -// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst480001A3} +// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst48000168} +// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst4800016C} +// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst48000170} +// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst48000178} +// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst4800018E} +// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst48000189} +// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst4800018A} +// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst48000185} +// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst48000187} +// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst48000157} +// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst4800015C} +// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst48000191} +// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst48000192} +// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst4800017E} +// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst4800017F} +// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst48000180} +// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst48000181} +// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst48000182} +// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst48000186} +// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst48000197} +// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst4800019F} +// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst480001A3} +// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst480001A5} // CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst480001A6} -// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst480001B2} -// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst480001B7} -// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst480001BB} -// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst480001BC} -// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst480001C1} -// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst480001FA} -// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst480001F8} -// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst480001E0} -// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst480001DA} -// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst480001D5} -// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst480001D3} -// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst480001D8} -// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst480001DD} -// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001F2} -// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst480001F4} -// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst48000216} -// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst480001F9} -// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst480001D4} -// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst480001D9} -// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst480001DF} -// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst480001E8} -// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst480001EB} -// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst480001EF} -// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst480001F3} -// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst480001FC} -// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst48000216} -// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst48000211} -// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst48000212} -// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst4800020D} -// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst4800020F} -// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst480001D3} -// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst480001D8} -// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst480001DD} -// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst48000219} -// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst4800021A} -// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst48000204} -// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst48000205} -// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst48000206} -// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst48000207} -// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst48000208} -// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst48000209} -// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst4800020A} +// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst480001A9} +// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst480001B5} +// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst480001BA} +// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst480001BE} +// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst480001BF} +// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst480001C4} +// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst480001FF} +// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst480001FD} +// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst480001E3} +// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst480001DD} +// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst480001D8} +// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst480001D6} +// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst480001DB} +// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001E0} +// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst480001F7} +// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst480001F9} +// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst4800021B} +// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst480001FE} +// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst480001D7} +// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst480001DC} +// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst480001E2} +// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst480001EA} +// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst480001ED} +// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst480001F0} +// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst480001F4} +// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst480001F8} +// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst48000201} +// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst4800021B} +// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst48000216} +// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst48000217} +// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst48000212} +// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst48000214} +// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst480001D6} +// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst480001DB} +// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst480001E0} +// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst4800021E} +// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst4800021F} +// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst48000209} +// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst4800020A} +// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst4800020B} +// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst4800020C} +// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst4800020D} // CHECK:STDOUT: import_ir_instAB: {ir_id: import_ir60000004, inst_id: inst4800020E} -// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst4800021F} -// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst48000226} -// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst4800022A} -// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst4800022C} -// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst4800022D} -// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst48000230} -// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst4800023A} -// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst4800023E} -// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst48000240} -// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst48000241} -// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst48000244} -// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst48000250} -// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst48000255} -// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst48000259} +// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst4800020F} +// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst48000213} +// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst48000224} +// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst4800022B} +// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst4800022F} +// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst48000231} +// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst48000232} +// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst48000235} +// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst4800023F} +// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst48000243} +// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst48000245} +// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst48000246} +// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst48000249} +// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst48000255} // CHECK:STDOUT: import_ir_instBA: {ir_id: import_ir60000004, inst_id: inst4800025A} -// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst4800025F} +// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst4800025E} +// CHECK:STDOUT: import_ir_instBC: {ir_id: import_ir60000004, inst_id: inst4800025F} +// CHECK:STDOUT: import_ir_instBD: {ir_id: import_ir60000004, inst_id: inst48000264} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Core): inst60000010, name0: inst60000035}} -// CHECK:STDOUT: name_scope60000001: {inst: inst60000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst60000045}} -// CHECK:STDOUT: name_scope60000002: {inst: inst60000046, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst60000049, name4: inst6000004A}} -// CHECK:STDOUT: name_scope60000003: {inst: inst6000005E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000004: {inst: inst6000008B, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000005: {inst: inst6000008F, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000006: {inst: inst60000093, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000007: {inst: inst60000097, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000008: {inst: inst6000009B, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000009: {inst: inst600000B5, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope6000000A: {inst: inst600000B9, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope6000000B: {inst: inst600000BD, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope6000000C: {inst: inst600000F5, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Core): inst60000010, name0: inst60000038}} +// CHECK:STDOUT: name_scope60000001: {inst: inst60000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst60000048}} +// CHECK:STDOUT: name_scope60000002: {inst: inst60000049, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst6000004C, name4: inst6000004D}} +// CHECK:STDOUT: name_scope60000003: {inst: inst60000061, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000004: {inst: inst6000008E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000005: {inst: inst60000092, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000006: {inst: inst60000096, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000007: {inst: inst6000009A, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000008: {inst: inst6000009E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000009: {inst: inst600000B8, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope6000000A: {inst: inst600000BC, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope6000000B: {inst: inst600000C0, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope6000000C: {inst: inst600000FB, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name60000000: {name: name(PeriodSelf), parent_scope: name_scope, index: -1, is_template: 0} // CHECK:STDOUT: entity_name60000001: {name: name1, parent_scope: name_scope, index: 0, is_template: 0} @@ -296,50 +298,50 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: entity_name6000003D: {name: name6, parent_scope: name_scope, index: 2, is_template: 0} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000D, return_slot_pattern: inst60000030, body: [inst_block60000014]} -// CHECK:STDOUT: function60000001: {name: name4, parent_scope: name_scope60000002, return_slot_pattern: inst60000055} -// CHECK:STDOUT: function60000002: {name: name4, parent_scope: name_scope60000003, return_slot_pattern: inst60000073} -// CHECK:STDOUT: function60000003: {name: name4, parent_scope: name_scope60000008, return_slot_pattern: inst600000AA} -// CHECK:STDOUT: function60000004: {name: name4, parent_scope: name_scope6000000B, return_slot_pattern: inst600000D5} -// CHECK:STDOUT: function60000005: {name: name4, parent_scope: name_scope6000000C, return_slot_pattern: inst60000111} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000F, return_slot_pattern: inst60000033, body: [inst_block60000016]} +// CHECK:STDOUT: function60000001: {name: name4, parent_scope: name_scope60000002, return_slot_pattern: inst60000058} +// CHECK:STDOUT: function60000002: {name: name4, parent_scope: name_scope60000003, return_slot_pattern: inst60000076} +// CHECK:STDOUT: function60000003: {name: name4, parent_scope: name_scope60000008, return_slot_pattern: inst600000AD} +// CHECK:STDOUT: function60000004: {name: name4, parent_scope: name_scope6000000B, return_slot_pattern: inst600000DB} +// CHECK:STDOUT: function60000005: {name: name4, parent_scope: name_scope6000000C, return_slot_pattern: inst6000011A} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: -// CHECK:STDOUT: generic60000000: {decl: inst60000035, bindings: inst_block60000010} -// CHECK:STDOUT: generic60000001: {decl: inst6000004F, bindings: inst_block60000018} -// CHECK:STDOUT: generic60000002: {decl: inst6000005E, bindings: inst_block6000001D} -// CHECK:STDOUT: generic60000003: {decl: inst6000006E, bindings: inst_block60000024} -// CHECK:STDOUT: generic60000004: {decl: inst6000009B, bindings: inst_block6000002E} -// CHECK:STDOUT: generic60000005: {decl: inst600000A6, bindings: inst_block60000034} -// CHECK:STDOUT: generic60000006: {decl: inst600000BD, bindings: inst_block6000003B} -// CHECK:STDOUT: generic60000007: {decl: inst600000D0, bindings: inst_block60000043} -// CHECK:STDOUT: generic60000008: {decl: inst600000F5, bindings: inst_block60000051} -// CHECK:STDOUT: generic60000009: {decl: inst6000010C, bindings: inst_block60000059} +// CHECK:STDOUT: generic60000000: {decl: inst60000038, bindings: inst_block60000012} +// CHECK:STDOUT: generic60000001: {decl: inst60000052, bindings: inst_block6000001A} +// CHECK:STDOUT: generic60000002: {decl: inst60000061, bindings: inst_block6000001F} +// CHECK:STDOUT: generic60000003: {decl: inst60000071, bindings: inst_block60000026} +// CHECK:STDOUT: generic60000004: {decl: inst6000009E, bindings: inst_block60000030} +// CHECK:STDOUT: generic60000005: {decl: inst600000A9, bindings: inst_block60000036} +// CHECK:STDOUT: generic60000006: {decl: inst600000C0, bindings: inst_block6000003D} +// CHECK:STDOUT: generic60000007: {decl: inst600000D6, bindings: inst_block60000047} +// CHECK:STDOUT: generic60000008: {decl: inst600000FB, bindings: inst_block60000055} +// CHECK:STDOUT: generic60000009: {decl: inst60000115, bindings: inst_block6000005F} // CHECK:STDOUT: specifics: -// CHECK:STDOUT: specific60000000: {generic: generic60000000, args: inst_block60000011} -// CHECK:STDOUT: specific60000001: {generic: generic60000001, args: inst_block6000001A} -// CHECK:STDOUT: specific60000002: {generic: generic60000002, args: inst_block6000001F} -// CHECK:STDOUT: specific60000003: {generic: generic60000002, args: inst_block60000020} -// CHECK:STDOUT: specific60000004: {generic: generic60000003, args: inst_block6000001F} -// CHECK:STDOUT: specific60000005: {generic: generic60000001, args: inst_block6000001F} -// CHECK:STDOUT: specific60000006: {generic: generic60000001, args: inst_block60000029} -// CHECK:STDOUT: specific60000007: {generic: generic60000004, args: inst_block60000011} -// CHECK:STDOUT: specific60000008: {generic: generic60000004, args: inst_block60000030} -// CHECK:STDOUT: specific60000009: {generic: generic60000005, args: inst_block60000011} -// CHECK:STDOUT: specific6000000A: {generic: generic60000006, args: inst_block6000003D} -// CHECK:STDOUT: specific6000000B: {generic: generic60000006, args: inst_block6000003F} -// CHECK:STDOUT: specific6000000C: {generic: generic60000007, args: inst_block6000003D} -// CHECK:STDOUT: specific6000000D: {generic: generic60000001, args: inst_block60000049} -// CHECK:STDOUT: specific6000000E: {generic: generic60000001, args: inst_block6000004A} -// CHECK:STDOUT: specific6000000F: {generic: generic60000001, args: inst_block6000004B} -// CHECK:STDOUT: specific60000010: {generic: generic60000008, args: inst_block60000053} -// CHECK:STDOUT: specific60000011: {generic: generic60000008, args: inst_block60000055} -// CHECK:STDOUT: specific60000012: {generic: generic60000009, args: inst_block60000053} -// CHECK:STDOUT: specific60000013: {generic: generic60000001, args: inst_block6000005F} -// CHECK:STDOUT: specific60000014: {generic: generic60000001, args: inst_block60000060} -// CHECK:STDOUT: specific60000015: {generic: generic60000001, args: inst_block60000061} -// CHECK:STDOUT: specific60000016: {generic: generic60000001, args: inst_block60000062} -// CHECK:STDOUT: specific60000017: {generic: generic60000001, args: inst_block60000069} -// CHECK:STDOUT: specific60000018: {generic: generic60000001, args: inst_block6000006B} +// CHECK:STDOUT: specific60000000: {generic: generic60000000, args: inst_block60000013} +// CHECK:STDOUT: specific60000001: {generic: generic60000001, args: inst_block6000001C} +// CHECK:STDOUT: specific60000002: {generic: generic60000002, args: inst_block60000021} +// CHECK:STDOUT: specific60000003: {generic: generic60000002, args: inst_block60000022} +// CHECK:STDOUT: specific60000004: {generic: generic60000003, args: inst_block60000021} +// CHECK:STDOUT: specific60000005: {generic: generic60000001, args: inst_block60000021} +// CHECK:STDOUT: specific60000006: {generic: generic60000001, args: inst_block6000002B} +// CHECK:STDOUT: specific60000007: {generic: generic60000004, args: inst_block60000013} +// CHECK:STDOUT: specific60000008: {generic: generic60000004, args: inst_block60000032} +// CHECK:STDOUT: specific60000009: {generic: generic60000005, args: inst_block60000013} +// CHECK:STDOUT: specific6000000A: {generic: generic60000006, args: inst_block6000003F} +// CHECK:STDOUT: specific6000000B: {generic: generic60000006, args: inst_block60000041} +// CHECK:STDOUT: specific6000000C: {generic: generic60000007, args: inst_block6000003F} +// CHECK:STDOUT: specific6000000D: {generic: generic60000001, args: inst_block6000004D} +// CHECK:STDOUT: specific6000000E: {generic: generic60000001, args: inst_block6000004E} +// CHECK:STDOUT: specific6000000F: {generic: generic60000001, args: inst_block6000004F} +// CHECK:STDOUT: specific60000010: {generic: generic60000008, args: inst_block60000057} +// CHECK:STDOUT: specific60000011: {generic: generic60000008, args: inst_block60000059} +// CHECK:STDOUT: specific60000012: {generic: generic60000009, args: inst_block60000057} +// CHECK:STDOUT: specific60000013: {generic: generic60000001, args: inst_block60000065} +// CHECK:STDOUT: specific60000014: {generic: generic60000001, args: inst_block60000066} +// CHECK:STDOUT: specific60000015: {generic: generic60000001, args: inst_block60000067} +// CHECK:STDOUT: specific60000016: {generic: generic60000001, args: inst_block60000068} +// CHECK:STDOUT: specific60000017: {generic: generic60000001, args: inst_block6000006F} +// CHECK:STDOUT: specific60000018: {generic: generic60000001, args: inst_block60000071} // CHECK:STDOUT: struct_type_fields: // CHECK:STDOUT: struct_type_fields0: {} // CHECK:STDOUT: types: @@ -351,33 +353,33 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} // CHECK:STDOUT: 'type(inst60000024)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} -// CHECK:STDOUT: 'type(inst60000028)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst60000028)} -// CHECK:STDOUT: 'type(inst60000026)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst60000028)} -// CHECK:STDOUT: 'type(inst60000036)': +// CHECK:STDOUT: 'type(inst6000002B)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000002B)} +// CHECK:STDOUT: 'type(inst60000027)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000002B)} +// CHECK:STDOUT: 'type(inst60000039)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} // CHECK:STDOUT: 'type(symbolic_constant3)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constant3)} -// CHECK:STDOUT: 'type(symbolic_constantB)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constantB)} -// CHECK:STDOUT: 'type(symbolic_constant7)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantB)} +// CHECK:STDOUT: 'type(symbolic_constantD)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constantD)} +// CHECK:STDOUT: 'type(symbolic_constant9)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantD)} // CHECK:STDOUT: 'type(inst(WitnessType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(WitnessType))} // CHECK:STDOUT: 'type(symbolic_constant4)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constant4)} -// CHECK:STDOUT: 'type(symbolic_constant8)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantB)} +// CHECK:STDOUT: 'type(symbolic_constantA)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantD)} // CHECK:STDOUT: 'type(inst(InstType))': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} -// CHECK:STDOUT: 'type(inst60000047)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst60000047)} +// CHECK:STDOUT: 'type(inst6000004A)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000004A)} // CHECK:STDOUT: 'type(inst(SpecificFunctionType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: 'type(symbolic_constant60000101)': +// CHECK:STDOUT: 'type(symbolic_constant60000109)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} -// CHECK:STDOUT: 'type(symbolic_constant60000104)': +// CHECK:STDOUT: 'type(symbolic_constant6000010C)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} // CHECK:STDOUT: 'type(inst(BoundMethodType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(BoundMethodType))} @@ -397,7 +399,7 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst6000001A: {kind: PointerType, arg0: inst60000019, type: type(TypeType)} // CHECK:STDOUT: inst6000001B: {kind: PointerType, arg0: inst60000015, type: type(TypeType)} // CHECK:STDOUT: inst6000001C: {kind: PointerType, arg0: inst60000016, type: type(TypeType)} -// CHECK:STDOUT: inst6000001D: {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000031, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst6000001D: {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000034, type: type(symbolic_constant4)} // CHECK:STDOUT: inst6000001E: {kind: PatternType, arg0: inst6000001B, type: type(TypeType)} // CHECK:STDOUT: inst6000001F: {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(symbolic_constant6)} // CHECK:STDOUT: inst60000020: {kind: PatternType, arg0: inst6000001C, type: type(TypeType)} @@ -406,304 +408,312 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000023: {kind: PointerType, arg0: inst60000022, type: type(TypeType)} // CHECK:STDOUT: inst60000024: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} // CHECK:STDOUT: inst60000025: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)} -// CHECK:STDOUT: inst60000026: {kind: TupleType, arg0: inst_block60000009, type: type(TypeType)} -// CHECK:STDOUT: inst60000027: {kind: TupleLiteral, arg0: inst_block60000008, type: type(inst60000026)} -// CHECK:STDOUT: inst60000028: {kind: PointerType, arg0: inst60000026, type: type(TypeType)} -// CHECK:STDOUT: inst60000029: {kind: Converted, arg0: inst60000025, arg1: inst60000024, type: type(TypeType)} -// CHECK:STDOUT: inst6000002A: {kind: TupleType, arg0: inst_block6000000B, type: type(TypeType)} -// CHECK:STDOUT: inst6000002B: {kind: Converted, arg0: inst60000027, arg1: inst6000002A, type: type(TypeType)} -// CHECK:STDOUT: inst6000002C: {kind: TupleType, arg0: inst_block6000000C, type: type(TypeType)} -// CHECK:STDOUT: inst6000002D: {kind: PatternType, arg0: inst6000002A, type: type(TypeType)} -// CHECK:STDOUT: inst6000002E: {kind: ReturnSlotPattern, arg0: inst6000002B, type: type(symbolic_constantA)} -// CHECK:STDOUT: inst6000002F: {kind: PatternType, arg0: inst6000002C, type: type(TypeType)} -// CHECK:STDOUT: inst60000030: {kind: OutParamPattern, arg0: inst6000002E, arg1: call_param1, type: type(symbolic_constantA)} -// CHECK:STDOUT: inst60000031: {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000032: {kind: SpliceBlock, arg0: inst_block60000006, arg1: inst6000001A, type: type(TypeType)} -// CHECK:STDOUT: inst60000033: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constant8)} -// CHECK:STDOUT: inst60000034: {kind: ReturnSlot, arg0: inst6000002A, arg1: inst60000033, type: type(symbolic_constant8)} -// CHECK:STDOUT: inst60000035: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000F, type: type(inst60000036)} -// CHECK:STDOUT: inst60000036: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000037: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000036)} -// CHECK:STDOUT: inst60000038: {kind: PointerType, arg0: inst6000002A, type: type(TypeType)} -// CHECK:STDOUT: inst60000039: {kind: RequireCompleteType, arg0: inst6000002A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003A: {kind: RequireCompleteType, arg0: inst6000002A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003B: {kind: RequireCompleteType, arg0: inst6000002C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003C: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003D: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003E: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003F: {kind: NameRef, arg0: name2, arg1: inst6000001D, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000040: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)} -// CHECK:STDOUT: inst60000041: {kind: TupleLiteral, arg0: inst_block60000015, type: type(symbolic_constant8)} -// CHECK:STDOUT: inst60000042: {kind: RequireCompleteType, arg0: inst6000002A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000043: {kind: TupleAccess, arg0: inst60000034, arg1: element0, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000044: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000045: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name60000003, type: type(TypeType)} -// CHECK:STDOUT: inst60000046: {kind: InterfaceDecl, arg0: interface60000000, arg1: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst60000047: {kind: FacetType, arg0: facet_type60000001, type: type(TypeType)} -// CHECK:STDOUT: inst60000048: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst60000049: {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name} -// CHECK:STDOUT: inst6000004A: {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name, type: type(inst6000004C)} -// CHECK:STDOUT: inst6000004B: {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name60000005} -// CHECK:STDOUT: inst6000004C: {kind: AssociatedEntityType, arg0: interface60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst6000004D: {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name, type: type(inst60000050)} -// CHECK:STDOUT: inst6000004E: {kind: AssociatedEntity, arg0: element0, arg1: inst6000004D, type: type(inst6000004C)} -// CHECK:STDOUT: inst6000004F: {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst60000050)} -// CHECK:STDOUT: inst60000050: {kind: FunctionType, arg0: function60000001, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000051: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000050)} -// CHECK:STDOUT: inst60000052: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst60000048, type: type(TypeType)} -// CHECK:STDOUT: inst60000053: {kind: PatternType, arg0: inst60000052, type: type(TypeType)} -// CHECK:STDOUT: inst60000054: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000013)} -// CHECK:STDOUT: inst60000055: {kind: OutParamPattern, arg0: inst60000054, arg1: call_param1, type: type(symbolic_constant60000013)} -// CHECK:STDOUT: inst60000056: {kind: ValueBindingPattern, arg0: entity_name60000008, type: type(symbolic_constant60000013)} -// CHECK:STDOUT: inst60000057: {kind: ValueParamPattern, arg0: inst60000056, arg1: call_param0, type: type(symbolic_constant60000013)} -// CHECK:STDOUT: inst60000058: {kind: ImportRefLoaded, arg0: import_ir_instB, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst60000059: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst6000005A: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst60000059, type: type(TypeType)} -// CHECK:STDOUT: inst6000005B: {kind: PatternType, arg0: inst6000005A, type: type(TypeType)} -// CHECK:STDOUT: inst6000005C: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000005D: {kind: ImportRefUnloaded, arg0: import_ir_instF, arg1: entity_name} -// CHECK:STDOUT: inst6000005E: {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000005F: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst60000060: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000005F, type: type(TypeType)} -// CHECK:STDOUT: inst60000061: {kind: ConstType, arg0: inst60000060, type: type(TypeType)} -// CHECK:STDOUT: inst60000062: {kind: PatternType, arg0: inst60000047, type: type(TypeType)} -// CHECK:STDOUT: inst60000063: {kind: SymbolicBindingPattern, arg0: entity_name6000000D, type: type(inst60000062)} -// CHECK:STDOUT: inst60000064: {kind: ImportRefLoaded, arg0: import_ir_inst12, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst60000065: {kind: ImportRefLoaded, arg0: import_ir_inst13, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000066: {kind: ImportRefLoaded, arg0: import_ir_inst14, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000067: {kind: ImportRefUnloaded, arg0: import_ir_inst15, arg1: entity_name} -// CHECK:STDOUT: inst60000068: {kind: ImplWitnessTable, arg0: inst_block6000001E, arg1: impl60000000} -// CHECK:STDOUT: inst60000069: {kind: ImplWitness, arg0: inst60000068, arg1: specific60000002, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000006A: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst6000006B: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006A, type: type(TypeType)} -// CHECK:STDOUT: inst6000006C: {kind: ConstType, arg0: inst6000006B, type: type(TypeType)} -// CHECK:STDOUT: inst6000006D: {kind: ImplWitness, arg0: inst60000068, arg1: specific60000003, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000006E: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000027)} -// CHECK:STDOUT: inst6000006F: {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)} -// CHECK:STDOUT: inst60000070: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000027)} -// CHECK:STDOUT: inst60000071: {kind: PatternType, arg0: inst60000061, type: type(TypeType)} -// CHECK:STDOUT: inst60000072: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000002C)} -// CHECK:STDOUT: inst60000073: {kind: OutParamPattern, arg0: inst60000072, arg1: call_param1, type: type(symbolic_constant6000002C)} -// CHECK:STDOUT: inst60000074: {kind: ValueBindingPattern, arg0: entity_name60000011, type: type(symbolic_constant6000002C)} -// CHECK:STDOUT: inst60000075: {kind: ValueParamPattern, arg0: inst60000074, arg1: call_param0, type: type(symbolic_constant6000002C)} -// CHECK:STDOUT: inst60000076: {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst60000077: {kind: FunctionType, arg0: function60000002, arg1: specific60000003, type: type(TypeType)} -// CHECK:STDOUT: inst60000078: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000002E)} -// CHECK:STDOUT: inst60000079: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst6000007A: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000079, type: type(TypeType)} -// CHECK:STDOUT: inst6000007B: {kind: ConstType, arg0: inst6000007A, type: type(TypeType)} -// CHECK:STDOUT: inst6000007C: {kind: PatternType, arg0: inst6000007B, type: type(TypeType)} -// CHECK:STDOUT: inst6000007D: {kind: RequireCompleteType, arg0: inst60000061, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000007E: {kind: RequireCompleteType, arg0: inst60000060, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000007F: {kind: LookupImplWitness, arg0: inst6000005F, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000080: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst6000005F, type: type(TypeType)} -// CHECK:STDOUT: inst60000081: {kind: ImplWitnessAccess, arg0: inst6000007F, arg1: element0, type: type(symbolic_constant6000003D)} -// CHECK:STDOUT: inst60000082: {kind: SpecificImplFunction, arg0: inst60000081, arg1: specific60000005, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000083: {kind: RequireCompleteType, arg0: inst6000007B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000084: {kind: RequireCompleteType, arg0: inst6000007A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000085: {kind: LookupImplWitness, arg0: inst60000079, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000086: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst60000079, type: type(TypeType)} -// CHECK:STDOUT: inst60000087: {kind: ImplWitnessAccess, arg0: inst60000085, arg1: element0, type: type(symbolic_constant60000046)} -// CHECK:STDOUT: inst60000088: {kind: SpecificImplFunction, arg0: inst60000087, arg1: specific60000006, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000089: {kind: PatternType, arg0: inst60000060, type: type(TypeType)} -// CHECK:STDOUT: inst6000008A: {kind: ImportRefUnloaded, arg0: import_ir_inst2D, arg1: entity_name} -// CHECK:STDOUT: inst6000008B: {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000008C: {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000008D: {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000008E: {kind: ImportRefUnloaded, arg0: import_ir_inst31, arg1: entity_name} -// CHECK:STDOUT: inst6000008F: {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000090: {kind: ImportRefLoaded, arg0: import_ir_inst33, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000091: {kind: ImportRefLoaded, arg0: import_ir_inst34, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000092: {kind: ImportRefUnloaded, arg0: import_ir_inst35, arg1: entity_name} -// CHECK:STDOUT: inst60000093: {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000094: {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000095: {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000096: {kind: ImportRefUnloaded, arg0: import_ir_inst39, arg1: entity_name} -// CHECK:STDOUT: inst60000097: {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000098: {kind: ImportRefLoaded, arg0: import_ir_inst3B, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000099: {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009A: {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000009B: {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000009C: {kind: SymbolicBindingPattern, arg0: entity_name60000015, type: type(inst60000017)} -// CHECK:STDOUT: inst6000009D: {kind: ImportRefLoaded, arg0: import_ir_inst40, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009E: {kind: ImportRefLoaded, arg0: import_ir_inst41, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009F: {kind: ImportRefLoaded, arg0: import_ir_inst42, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A0: {kind: ImportRefUnloaded, arg0: import_ir_inst43, arg1: entity_name} -// CHECK:STDOUT: inst600000A1: {kind: ImplWitnessTable, arg0: inst_block6000002F, arg1: impl60000005} -// CHECK:STDOUT: inst600000A2: {kind: ImplWitness, arg0: inst600000A1, arg1: specific60000007, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000A3: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst600000A4: {kind: PointerType, arg0: inst600000A3, type: type(TypeType)} -// CHECK:STDOUT: inst600000A5: {kind: ImplWitness, arg0: inst600000A1, arg1: specific60000008, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000A6: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000053)} -// CHECK:STDOUT: inst600000A7: {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)} -// CHECK:STDOUT: inst600000A8: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000053)} -// CHECK:STDOUT: inst600000A9: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000057)} -// CHECK:STDOUT: inst600000AA: {kind: OutParamPattern, arg0: inst600000A9, arg1: call_param1, type: type(symbolic_constant60000057)} -// CHECK:STDOUT: inst600000AB: {kind: ValueBindingPattern, arg0: entity_name60000018, type: type(symbolic_constant60000057)} -// CHECK:STDOUT: inst600000AC: {kind: ValueParamPattern, arg0: inst600000AB, arg1: call_param0, type: type(symbolic_constant60000057)} -// CHECK:STDOUT: inst600000AD: {kind: ImportRefLoaded, arg0: import_ir_inst4D, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000AE: {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)} -// CHECK:STDOUT: inst600000AF: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000005A)} -// CHECK:STDOUT: inst600000B0: {kind: RequireCompleteType, arg0: inst600000A4, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000B1: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst600000B2: {kind: PointerType, arg0: inst600000B1, type: type(TypeType)} -// CHECK:STDOUT: inst600000B3: {kind: PatternType, arg0: inst600000B2, type: type(TypeType)} -// CHECK:STDOUT: inst600000B4: {kind: ImportRefUnloaded, arg0: import_ir_inst54, arg1: entity_name} -// CHECK:STDOUT: inst600000B5: {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000B6: {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000B7: {kind: ImportRefLoaded, arg0: import_ir_inst57, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000B8: {kind: ImportRefUnloaded, arg0: import_ir_inst58, arg1: entity_name} -// CHECK:STDOUT: inst600000B9: {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000BA: {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BB: {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BC: {kind: ImportRefUnloaded, arg0: import_ir_inst5C, arg1: entity_name} -// CHECK:STDOUT: inst600000BD: {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000BE: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst600000BF: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000BE, type: type(TypeType)} -// CHECK:STDOUT: inst600000C0: {kind: TupleType, arg0: inst_block60000039, type: type(TypeType)} -// CHECK:STDOUT: inst600000C1: {kind: SymbolicBindingPattern, arg0: entity_name6000001C, type: type(inst60000062)} -// CHECK:STDOUT: inst600000C2: {kind: SymbolicBindingPattern, arg0: entity_name6000001D, type: type(inst60000062)} -// CHECK:STDOUT: inst600000C3: {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000C4: {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000C5: {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000C6: {kind: ImportRefLoaded, arg0: import_ir_inst63, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000C7: {kind: ImportRefUnloaded, arg0: import_ir_inst64, arg1: entity_name} -// CHECK:STDOUT: inst600000C8: {kind: ImplWitnessTable, arg0: inst_block6000003C, arg1: impl60000008} -// CHECK:STDOUT: inst600000C9: {kind: ImplWitness, arg0: inst600000C8, arg1: specific6000000A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000CA: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst600000CB: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst600000CC: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000CA, type: type(TypeType)} -// CHECK:STDOUT: inst600000CD: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000CB, type: type(TypeType)} -// CHECK:STDOUT: inst600000CE: {kind: TupleType, arg0: inst_block6000003E, type: type(TypeType)} -// CHECK:STDOUT: inst600000CF: {kind: ImplWitness, arg0: inst600000C8, arg1: specific6000000B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000D0: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant60000075)} -// CHECK:STDOUT: inst600000D1: {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)} -// CHECK:STDOUT: inst600000D2: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000075)} -// CHECK:STDOUT: inst600000D3: {kind: PatternType, arg0: inst600000C0, type: type(TypeType)} -// CHECK:STDOUT: inst600000D4: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000007A)} -// CHECK:STDOUT: inst600000D5: {kind: OutParamPattern, arg0: inst600000D4, arg1: call_param1, type: type(symbolic_constant6000007A)} -// CHECK:STDOUT: inst600000D6: {kind: ValueBindingPattern, arg0: entity_name60000024, type: type(symbolic_constant6000007A)} -// CHECK:STDOUT: inst600000D7: {kind: ValueParamPattern, arg0: inst600000D6, arg1: call_param0, type: type(symbolic_constant6000007A)} -// CHECK:STDOUT: inst600000D8: {kind: ImportRefLoaded, arg0: import_ir_inst71, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000D9: {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000DA: {kind: FunctionType, arg0: function60000004, arg1: specific6000000B, type: type(TypeType)} -// CHECK:STDOUT: inst600000DB: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000007C)} -// CHECK:STDOUT: inst600000DC: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst600000DD: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000DC, type: type(TypeType)} -// CHECK:STDOUT: inst600000DE: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst600000DF: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000DE, type: type(TypeType)} -// CHECK:STDOUT: inst600000E0: {kind: TupleType, arg0: inst_block60000046, type: type(TypeType)} -// CHECK:STDOUT: inst600000E1: {kind: PatternType, arg0: inst600000E0, type: type(TypeType)} -// CHECK:STDOUT: inst600000E2: {kind: RequireCompleteType, arg0: inst600000C0, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E3: {kind: RequireCompleteType, arg0: inst600000BF, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E4: {kind: LookupImplWitness, arg0: inst600000BE, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E5: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst600000BE, type: type(TypeType)} -// CHECK:STDOUT: inst600000E6: {kind: ImplWitnessAccess, arg0: inst600000E4, arg1: element0, type: type(symbolic_constant60000094)} -// CHECK:STDOUT: inst600000E7: {kind: SpecificImplFunction, arg0: inst600000E6, arg1: specific6000000D, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000E8: {kind: RequireCompleteType, arg0: inst600000E0, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E9: {kind: RequireCompleteType, arg0: inst600000DD, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EA: {kind: LookupImplWitness, arg0: inst600000DC, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EB: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst600000DC, type: type(TypeType)} -// CHECK:STDOUT: inst600000EC: {kind: ImplWitnessAccess, arg0: inst600000EA, arg1: element0, type: type(symbolic_constant6000009D)} -// CHECK:STDOUT: inst600000ED: {kind: SpecificImplFunction, arg0: inst600000EC, arg1: specific6000000E, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000EE: {kind: RequireCompleteType, arg0: inst600000DF, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EF: {kind: LookupImplWitness, arg0: inst600000DE, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000F0: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst600000DE, type: type(TypeType)} -// CHECK:STDOUT: inst600000F1: {kind: ImplWitnessAccess, arg0: inst600000EF, arg1: element0, type: type(symbolic_constant600000A2)} -// CHECK:STDOUT: inst600000F2: {kind: SpecificImplFunction, arg0: inst600000F1, arg1: specific6000000F, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000F3: {kind: PatternType, arg0: inst600000BF, type: type(TypeType)} -// CHECK:STDOUT: inst600000F4: {kind: ImportRefUnloaded, arg0: import_ir_inst86, arg1: entity_name} -// CHECK:STDOUT: inst600000F5: {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000F6: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst600000F7: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst600000F6, type: type(TypeType)} -// CHECK:STDOUT: inst600000F8: {kind: TupleType, arg0: inst_block6000004F, type: type(TypeType)} -// CHECK:STDOUT: inst600000F9: {kind: SymbolicBindingPattern, arg0: entity_name6000002B, type: type(inst60000062)} -// CHECK:STDOUT: inst600000FA: {kind: SymbolicBindingPattern, arg0: entity_name6000002C, type: type(inst60000062)} -// CHECK:STDOUT: inst600000FB: {kind: SymbolicBindingPattern, arg0: entity_name6000002D, type: type(inst60000062)} -// CHECK:STDOUT: inst600000FC: {kind: ImportRefLoaded, arg0: import_ir_inst8B, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000FD: {kind: ImportRefLoaded, arg0: import_ir_inst8C, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000FE: {kind: ImportRefLoaded, arg0: import_ir_inst8D, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst600000FF: {kind: ImportRefLoaded, arg0: import_ir_inst8E, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000100: {kind: ImportRefLoaded, arg0: import_ir_inst8F, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000101: {kind: ImportRefUnloaded, arg0: import_ir_inst90, arg1: entity_name} -// CHECK:STDOUT: inst60000102: {kind: ImplWitnessTable, arg0: inst_block60000052, arg1: impl60000009} -// CHECK:STDOUT: inst60000103: {kind: ImplWitness, arg0: inst60000102, arg1: specific60000010, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000104: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst60000105: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst60000106: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst60000107: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000104, type: type(TypeType)} -// CHECK:STDOUT: inst60000108: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst60000105, type: type(TypeType)} -// CHECK:STDOUT: inst60000109: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst60000106, type: type(TypeType)} -// CHECK:STDOUT: inst6000010A: {kind: TupleType, arg0: inst_block60000054, type: type(TypeType)} -// CHECK:STDOUT: inst6000010B: {kind: ImplWitness, arg0: inst60000102, arg1: specific60000011, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000010C: {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000BE)} -// CHECK:STDOUT: inst6000010D: {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)} -// CHECK:STDOUT: inst6000010E: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000BE)} -// CHECK:STDOUT: inst6000010F: {kind: PatternType, arg0: inst600000F8, type: type(TypeType)} -// CHECK:STDOUT: inst60000110: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant600000C3)} -// CHECK:STDOUT: inst60000111: {kind: OutParamPattern, arg0: inst60000110, arg1: call_param1, type: type(symbolic_constant600000C3)} -// CHECK:STDOUT: inst60000112: {kind: ValueBindingPattern, arg0: entity_name60000037, type: type(symbolic_constant600000C3)} -// CHECK:STDOUT: inst60000113: {kind: ValueParamPattern, arg0: inst60000112, arg1: call_param0, type: type(symbolic_constant600000C3)} -// CHECK:STDOUT: inst60000114: {kind: ImportRefLoaded, arg0: import_ir_inst9F, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst60000115: {kind: ImportRefLoaded, arg0: import_ir_instA0, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst60000116: {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name, type: type(inst60000047)} -// CHECK:STDOUT: inst60000117: {kind: FunctionType, arg0: function60000005, arg1: specific60000011, type: type(TypeType)} -// CHECK:STDOUT: inst60000118: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000C5)} -// CHECK:STDOUT: inst60000119: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst6000011A: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000119, type: type(TypeType)} -// CHECK:STDOUT: inst6000011B: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst6000011C: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst6000011B, type: type(TypeType)} -// CHECK:STDOUT: inst6000011D: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000047)} -// CHECK:STDOUT: inst6000011E: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst6000011D, type: type(TypeType)} -// CHECK:STDOUT: inst6000011F: {kind: TupleType, arg0: inst_block6000005C, type: type(TypeType)} -// CHECK:STDOUT: inst60000120: {kind: PatternType, arg0: inst6000011F, type: type(TypeType)} -// CHECK:STDOUT: inst60000121: {kind: RequireCompleteType, arg0: inst600000F8, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000122: {kind: RequireCompleteType, arg0: inst600000F7, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000123: {kind: LookupImplWitness, arg0: inst600000F6, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000124: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst600000F6, type: type(TypeType)} -// CHECK:STDOUT: inst60000125: {kind: ImplWitnessAccess, arg0: inst60000123, arg1: element0, type: type(symbolic_constant600000E6)} -// CHECK:STDOUT: inst60000126: {kind: SpecificImplFunction, arg0: inst60000125, arg1: specific60000013, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000127: {kind: RequireCompleteType, arg0: inst6000011F, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000128: {kind: RequireCompleteType, arg0: inst6000011A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000129: {kind: LookupImplWitness, arg0: inst60000119, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012A: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst60000119, type: type(TypeType)} -// CHECK:STDOUT: inst6000012B: {kind: ImplWitnessAccess, arg0: inst60000129, arg1: element0, type: type(symbolic_constant600000EF)} -// CHECK:STDOUT: inst6000012C: {kind: SpecificImplFunction, arg0: inst6000012B, arg1: specific60000014, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst6000012D: {kind: RequireCompleteType, arg0: inst6000011C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012E: {kind: LookupImplWitness, arg0: inst6000011B, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012F: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst6000011B, type: type(TypeType)} -// CHECK:STDOUT: inst60000130: {kind: ImplWitnessAccess, arg0: inst6000012E, arg1: element0, type: type(symbolic_constant600000F4)} -// CHECK:STDOUT: inst60000131: {kind: SpecificImplFunction, arg0: inst60000130, arg1: specific60000015, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000132: {kind: RequireCompleteType, arg0: inst6000011E, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000133: {kind: LookupImplWitness, arg0: inst6000011D, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000134: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst6000011D, type: type(TypeType)} -// CHECK:STDOUT: inst60000135: {kind: ImplWitnessAccess, arg0: inst60000133, arg1: element0, type: type(symbolic_constant600000F9)} -// CHECK:STDOUT: inst60000136: {kind: SpecificImplFunction, arg0: inst60000135, arg1: specific60000016, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000137: {kind: PatternType, arg0: inst600000F7, type: type(TypeType)} -// CHECK:STDOUT: inst60000138: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000139: {kind: LookupImplWitness, arg0: inst6000001C, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000013A: {kind: FacetValue, arg0: inst6000001B, arg1: inst_block60000067, type: type(inst60000047)} -// CHECK:STDOUT: inst6000013B: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst6000013A, type: type(TypeType)} -// CHECK:STDOUT: inst6000013C: {kind: ImplWitnessAccess, arg0: inst60000138, arg1: element0, type: type(symbolic_constant60000104)} -// CHECK:STDOUT: inst6000013D: {kind: ImplWitnessAccess, arg0: inst60000138, arg1: element0, type: type(symbolic_constant60000101)} -// CHECK:STDOUT: inst6000013E: {kind: FacetValue, arg0: inst6000001C, arg1: inst_block60000068, type: type(inst60000047)} -// CHECK:STDOUT: inst6000013F: {kind: FunctionTypeWithSelfType, arg0: inst60000050, arg1: inst6000013E, type: type(TypeType)} -// CHECK:STDOUT: inst60000140: {kind: ImplWitnessAccess, arg0: inst60000139, arg1: element0, type: type(symbolic_constant60000104)} -// CHECK:STDOUT: inst60000141: {kind: BoundMethod, arg0: inst6000003F, arg1: inst6000013C, type: type(inst(BoundMethodType))} -// CHECK:STDOUT: inst60000142: {kind: SpecificImplFunction, arg0: inst6000013C, arg1: specific60000017, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000143: {kind: SpecificImplFunction, arg0: inst6000013D, arg1: specific60000017, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000144: {kind: SpecificImplFunction, arg0: inst60000140, arg1: specific60000018, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000145: {kind: BoundMethod, arg0: inst6000003F, arg1: inst60000142, type: type(inst(BoundMethodType))} -// CHECK:STDOUT: inst60000146: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000147: {kind: Call, arg0: inst60000145, arg1: inst_block6000006C, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000148: {kind: InitializeFrom, arg0: inst60000147, arg1: inst60000043, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000149: {kind: TupleAccess, arg0: inst60000034, arg1: element1, type: type(inst60000024)} -// CHECK:STDOUT: inst6000014A: {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000149, type: type(inst60000024)} -// CHECK:STDOUT: inst6000014B: {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000024)} -// CHECK:STDOUT: inst6000014C: {kind: Converted, arg0: inst60000040, arg1: inst6000014A, type: type(inst60000024)} -// CHECK:STDOUT: inst6000014D: {kind: TupleInit, arg0: inst_block6000006D, arg1: inst60000034, type: type(symbolic_constant8)} -// CHECK:STDOUT: inst6000014E: {kind: Converted, arg0: inst60000041, arg1: inst6000014D, type: type(symbolic_constant8)} -// CHECK:STDOUT: inst6000014F: {kind: ReturnExpr, arg0: inst6000014E, arg1: inst60000034} +// CHECK:STDOUT: inst60000026: {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000024)} +// CHECK:STDOUT: inst60000027: {kind: TupleType, arg0: inst_block60000009, type: type(TypeType)} +// CHECK:STDOUT: inst60000028: {kind: TupleLiteral, arg0: inst_block60000008, type: type(inst60000027)} +// CHECK:STDOUT: inst60000029: {kind: TupleValue, arg0: inst_block6000000A, type: type(inst60000027)} +// CHECK:STDOUT: inst6000002A: {kind: TupleValue, arg0: inst_block6000000B, type: type(inst60000027)} +// CHECK:STDOUT: inst6000002B: {kind: PointerType, arg0: inst60000027, type: type(TypeType)} +// CHECK:STDOUT: inst6000002C: {kind: Converted, arg0: inst60000026, arg1: inst60000024, type: type(TypeType)} +// CHECK:STDOUT: inst6000002D: {kind: TupleType, arg0: inst_block6000000D, type: type(TypeType)} +// CHECK:STDOUT: inst6000002E: {kind: Converted, arg0: inst60000028, arg1: inst6000002D, type: type(TypeType)} +// CHECK:STDOUT: inst6000002F: {kind: TupleType, arg0: inst_block6000000E, type: type(TypeType)} +// CHECK:STDOUT: inst60000030: {kind: PatternType, arg0: inst6000002D, type: type(TypeType)} +// CHECK:STDOUT: inst60000031: {kind: ReturnSlotPattern, arg0: inst6000002E, type: type(symbolic_constantC)} +// CHECK:STDOUT: inst60000032: {kind: PatternType, arg0: inst6000002F, type: type(TypeType)} +// CHECK:STDOUT: inst60000033: {kind: OutParamPattern, arg0: inst60000031, arg1: call_param1, type: type(symbolic_constantC)} +// CHECK:STDOUT: inst60000034: {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000035: {kind: SpliceBlock, arg0: inst_block60000006, arg1: inst6000001A, type: type(TypeType)} +// CHECK:STDOUT: inst60000036: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000037: {kind: ReturnSlot, arg0: inst6000002D, arg1: inst60000036, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000038: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000011, type: type(inst60000039)} +// CHECK:STDOUT: inst60000039: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000003A: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000039)} +// CHECK:STDOUT: inst6000003B: {kind: PointerType, arg0: inst6000002D, type: type(TypeType)} +// CHECK:STDOUT: inst6000003C: {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000003D: {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000003E: {kind: RequireCompleteType, arg0: inst6000002F, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000003F: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000040: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000041: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000042: {kind: NameRef, arg0: name2, arg1: inst6000001D, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000043: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)} +// CHECK:STDOUT: inst60000044: {kind: TupleLiteral, arg0: inst_block60000017, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000045: {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000046: {kind: TupleAccess, arg0: inst60000037, arg1: element0, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000047: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000048: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name60000003, type: type(TypeType)} +// CHECK:STDOUT: inst60000049: {kind: InterfaceDecl, arg0: interface60000000, arg1: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst6000004A: {kind: FacetType, arg0: facet_type60000001, type: type(TypeType)} +// CHECK:STDOUT: inst6000004B: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000004C: {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name} +// CHECK:STDOUT: inst6000004D: {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000004E: {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name60000005} +// CHECK:STDOUT: inst6000004F: {kind: AssociatedEntityType, arg0: interface60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000050: {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name, type: type(inst60000053)} +// CHECK:STDOUT: inst60000051: {kind: AssociatedEntity, arg0: element0, arg1: inst60000050, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000052: {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst60000053)} +// CHECK:STDOUT: inst60000053: {kind: FunctionType, arg0: function60000001, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000054: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000053)} +// CHECK:STDOUT: inst60000055: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000004B, type: type(TypeType)} +// CHECK:STDOUT: inst60000056: {kind: PatternType, arg0: inst60000055, type: type(TypeType)} +// CHECK:STDOUT: inst60000057: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000015)} +// CHECK:STDOUT: inst60000058: {kind: OutParamPattern, arg0: inst60000057, arg1: call_param1, type: type(symbolic_constant60000015)} +// CHECK:STDOUT: inst60000059: {kind: ValueBindingPattern, arg0: entity_name60000008, type: type(symbolic_constant60000015)} +// CHECK:STDOUT: inst6000005A: {kind: ValueParamPattern, arg0: inst60000059, arg1: call_param0, type: type(symbolic_constant60000015)} +// CHECK:STDOUT: inst6000005B: {kind: ImportRefLoaded, arg0: import_ir_instB, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000005C: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000005D: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000005C, type: type(TypeType)} +// CHECK:STDOUT: inst6000005E: {kind: PatternType, arg0: inst6000005D, type: type(TypeType)} +// CHECK:STDOUT: inst6000005F: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000060: {kind: ImportRefUnloaded, arg0: import_ir_instF, arg1: entity_name} +// CHECK:STDOUT: inst60000061: {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty} +// CHECK:STDOUT: inst60000062: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000063: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000062, type: type(TypeType)} +// CHECK:STDOUT: inst60000064: {kind: ConstType, arg0: inst60000063, type: type(TypeType)} +// CHECK:STDOUT: inst60000065: {kind: PatternType, arg0: inst6000004A, type: type(TypeType)} +// CHECK:STDOUT: inst60000066: {kind: SymbolicBindingPattern, arg0: entity_name6000000D, type: type(inst60000065)} +// CHECK:STDOUT: inst60000067: {kind: ImportRefLoaded, arg0: import_ir_inst12, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000068: {kind: ImportRefLoaded, arg0: import_ir_inst13, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000069: {kind: ImportRefLoaded, arg0: import_ir_inst14, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000006A: {kind: ImportRefUnloaded, arg0: import_ir_inst15, arg1: entity_name} +// CHECK:STDOUT: inst6000006B: {kind: ImplWitnessTable, arg0: inst_block60000020, arg1: impl60000000} +// CHECK:STDOUT: inst6000006C: {kind: ImplWitness, arg0: inst6000006B, arg1: specific60000002, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000006D: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000006E: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006D, type: type(TypeType)} +// CHECK:STDOUT: inst6000006F: {kind: ConstType, arg0: inst6000006E, type: type(TypeType)} +// CHECK:STDOUT: inst60000070: {kind: ImplWitness, arg0: inst6000006B, arg1: specific60000003, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000071: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000029)} +// CHECK:STDOUT: inst60000072: {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)} +// CHECK:STDOUT: inst60000073: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000029)} +// CHECK:STDOUT: inst60000074: {kind: PatternType, arg0: inst60000064, type: type(TypeType)} +// CHECK:STDOUT: inst60000075: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000002E)} +// CHECK:STDOUT: inst60000076: {kind: OutParamPattern, arg0: inst60000075, arg1: call_param1, type: type(symbolic_constant6000002E)} +// CHECK:STDOUT: inst60000077: {kind: ValueBindingPattern, arg0: entity_name60000011, type: type(symbolic_constant6000002E)} +// CHECK:STDOUT: inst60000078: {kind: ValueParamPattern, arg0: inst60000077, arg1: call_param0, type: type(symbolic_constant6000002E)} +// CHECK:STDOUT: inst60000079: {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000007A: {kind: FunctionType, arg0: function60000002, arg1: specific60000003, type: type(TypeType)} +// CHECK:STDOUT: inst6000007B: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000030)} +// CHECK:STDOUT: inst6000007C: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000007D: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000007C, type: type(TypeType)} +// CHECK:STDOUT: inst6000007E: {kind: ConstType, arg0: inst6000007D, type: type(TypeType)} +// CHECK:STDOUT: inst6000007F: {kind: PatternType, arg0: inst6000007E, type: type(TypeType)} +// CHECK:STDOUT: inst60000080: {kind: RequireCompleteType, arg0: inst60000064, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000081: {kind: RequireCompleteType, arg0: inst60000063, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000082: {kind: LookupImplWitness, arg0: inst60000062, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000083: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000062, type: type(TypeType)} +// CHECK:STDOUT: inst60000084: {kind: ImplWitnessAccess, arg0: inst60000082, arg1: element0, type: type(symbolic_constant6000003F)} +// CHECK:STDOUT: inst60000085: {kind: SpecificImplFunction, arg0: inst60000084, arg1: specific60000005, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000086: {kind: RequireCompleteType, arg0: inst6000007E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000087: {kind: RequireCompleteType, arg0: inst6000007D, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000088: {kind: LookupImplWitness, arg0: inst6000007C, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000089: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst6000007C, type: type(TypeType)} +// CHECK:STDOUT: inst6000008A: {kind: ImplWitnessAccess, arg0: inst60000088, arg1: element0, type: type(symbolic_constant60000048)} +// CHECK:STDOUT: inst6000008B: {kind: SpecificImplFunction, arg0: inst6000008A, arg1: specific60000006, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000008C: {kind: PatternType, arg0: inst60000063, type: type(TypeType)} +// CHECK:STDOUT: inst6000008D: {kind: ImportRefUnloaded, arg0: import_ir_inst2D, arg1: entity_name} +// CHECK:STDOUT: inst6000008E: {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000008F: {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000090: {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000091: {kind: ImportRefUnloaded, arg0: import_ir_inst31, arg1: entity_name} +// CHECK:STDOUT: inst60000092: {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty} +// CHECK:STDOUT: inst60000093: {kind: ImportRefLoaded, arg0: import_ir_inst33, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000094: {kind: ImportRefLoaded, arg0: import_ir_inst34, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000095: {kind: ImportRefUnloaded, arg0: import_ir_inst35, arg1: entity_name} +// CHECK:STDOUT: inst60000096: {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty} +// CHECK:STDOUT: inst60000097: {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000098: {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000099: {kind: ImportRefUnloaded, arg0: import_ir_inst39, arg1: entity_name} +// CHECK:STDOUT: inst6000009A: {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000009B: {kind: ImportRefLoaded, arg0: import_ir_inst3B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000009C: {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000009D: {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000009E: {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000009F: {kind: SymbolicBindingPattern, arg0: entity_name60000015, type: type(inst60000017)} +// CHECK:STDOUT: inst600000A0: {kind: ImportRefLoaded, arg0: import_ir_inst40, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A1: {kind: ImportRefLoaded, arg0: import_ir_inst41, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A2: {kind: ImportRefLoaded, arg0: import_ir_inst42, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A3: {kind: ImportRefUnloaded, arg0: import_ir_inst43, arg1: entity_name} +// CHECK:STDOUT: inst600000A4: {kind: ImplWitnessTable, arg0: inst_block60000031, arg1: impl60000005} +// CHECK:STDOUT: inst600000A5: {kind: ImplWitness, arg0: inst600000A4, arg1: specific60000007, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000A6: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst600000A7: {kind: PointerType, arg0: inst600000A6, type: type(TypeType)} +// CHECK:STDOUT: inst600000A8: {kind: ImplWitness, arg0: inst600000A4, arg1: specific60000008, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000A9: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000055)} +// CHECK:STDOUT: inst600000AA: {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)} +// CHECK:STDOUT: inst600000AB: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000055)} +// CHECK:STDOUT: inst600000AC: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000059)} +// CHECK:STDOUT: inst600000AD: {kind: OutParamPattern, arg0: inst600000AC, arg1: call_param1, type: type(symbolic_constant60000059)} +// CHECK:STDOUT: inst600000AE: {kind: ValueBindingPattern, arg0: entity_name60000018, type: type(symbolic_constant60000059)} +// CHECK:STDOUT: inst600000AF: {kind: ValueParamPattern, arg0: inst600000AE, arg1: call_param0, type: type(symbolic_constant60000059)} +// CHECK:STDOUT: inst600000B0: {kind: ImportRefLoaded, arg0: import_ir_inst4D, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000B1: {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)} +// CHECK:STDOUT: inst600000B2: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000005C)} +// CHECK:STDOUT: inst600000B3: {kind: RequireCompleteType, arg0: inst600000A7, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000B4: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst600000B5: {kind: PointerType, arg0: inst600000B4, type: type(TypeType)} +// CHECK:STDOUT: inst600000B6: {kind: PatternType, arg0: inst600000B5, type: type(TypeType)} +// CHECK:STDOUT: inst600000B7: {kind: ImportRefUnloaded, arg0: import_ir_inst54, arg1: entity_name} +// CHECK:STDOUT: inst600000B8: {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000B9: {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BA: {kind: ImportRefLoaded, arg0: import_ir_inst57, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BB: {kind: ImportRefUnloaded, arg0: import_ir_inst58, arg1: entity_name} +// CHECK:STDOUT: inst600000BC: {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000BD: {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BE: {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BF: {kind: ImportRefUnloaded, arg0: import_ir_inst5C, arg1: entity_name} +// CHECK:STDOUT: inst600000C0: {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000C1: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000C2: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000C1, type: type(TypeType)} +// CHECK:STDOUT: inst600000C3: {kind: TupleType, arg0: inst_block6000003B, type: type(TypeType)} +// CHECK:STDOUT: inst600000C4: {kind: SymbolicBindingPattern, arg0: entity_name6000001C, type: type(inst60000065)} +// CHECK:STDOUT: inst600000C5: {kind: SymbolicBindingPattern, arg0: entity_name6000001D, type: type(inst60000065)} +// CHECK:STDOUT: inst600000C6: {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000C7: {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000C8: {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000C9: {kind: ImportRefLoaded, arg0: import_ir_inst63, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CA: {kind: TupleType, arg0: inst_block6000003E, type: type(TypeType)} +// CHECK:STDOUT: inst600000CB: {kind: TupleValue, arg0: inst_block6000003F, type: type(inst600000CA)} +// CHECK:STDOUT: inst600000CC: {kind: ImportRefUnloaded, arg0: import_ir_inst64, arg1: entity_name} +// CHECK:STDOUT: inst600000CD: {kind: ImplWitnessTable, arg0: inst_block60000040, arg1: impl60000008} +// CHECK:STDOUT: inst600000CE: {kind: ImplWitness, arg0: inst600000CD, arg1: specific6000000A, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000CF: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000D0: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000D1: {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000CA)} +// CHECK:STDOUT: inst600000D2: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000CF, type: type(TypeType)} +// CHECK:STDOUT: inst600000D3: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000D0, type: type(TypeType)} +// CHECK:STDOUT: inst600000D4: {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)} +// CHECK:STDOUT: inst600000D5: {kind: ImplWitness, arg0: inst600000CD, arg1: specific6000000B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000D6: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant6000007A)} +// CHECK:STDOUT: inst600000D7: {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)} +// CHECK:STDOUT: inst600000D8: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000007A)} +// CHECK:STDOUT: inst600000D9: {kind: PatternType, arg0: inst600000C3, type: type(TypeType)} +// CHECK:STDOUT: inst600000DA: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DB: {kind: OutParamPattern, arg0: inst600000DA, arg1: call_param1, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DC: {kind: ValueBindingPattern, arg0: entity_name60000024, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DD: {kind: ValueParamPattern, arg0: inst600000DC, arg1: call_param0, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DE: {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000DF: {kind: ImportRefLoaded, arg0: import_ir_inst73, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000E0: {kind: FunctionType, arg0: function60000004, arg1: specific6000000B, type: type(TypeType)} +// CHECK:STDOUT: inst600000E1: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000081)} +// CHECK:STDOUT: inst600000E2: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000E3: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000E2, type: type(TypeType)} +// CHECK:STDOUT: inst600000E4: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000E5: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000E4, type: type(TypeType)} +// CHECK:STDOUT: inst600000E6: {kind: TupleType, arg0: inst_block6000004A, type: type(TypeType)} +// CHECK:STDOUT: inst600000E7: {kind: PatternType, arg0: inst600000E6, type: type(TypeType)} +// CHECK:STDOUT: inst600000E8: {kind: RequireCompleteType, arg0: inst600000C3, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000E9: {kind: RequireCompleteType, arg0: inst600000C2, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EA: {kind: LookupImplWitness, arg0: inst600000C1, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EB: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000C1, type: type(TypeType)} +// CHECK:STDOUT: inst600000EC: {kind: ImplWitnessAccess, arg0: inst600000EA, arg1: element0, type: type(symbolic_constant60000099)} +// CHECK:STDOUT: inst600000ED: {kind: SpecificImplFunction, arg0: inst600000EC, arg1: specific6000000D, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000EE: {kind: RequireCompleteType, arg0: inst600000E6, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EF: {kind: RequireCompleteType, arg0: inst600000E3, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F0: {kind: LookupImplWitness, arg0: inst600000E2, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F1: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000E2, type: type(TypeType)} +// CHECK:STDOUT: inst600000F2: {kind: ImplWitnessAccess, arg0: inst600000F0, arg1: element0, type: type(symbolic_constant600000A2)} +// CHECK:STDOUT: inst600000F3: {kind: SpecificImplFunction, arg0: inst600000F2, arg1: specific6000000E, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000F4: {kind: RequireCompleteType, arg0: inst600000E5, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F5: {kind: LookupImplWitness, arg0: inst600000E4, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F6: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000E4, type: type(TypeType)} +// CHECK:STDOUT: inst600000F7: {kind: ImplWitnessAccess, arg0: inst600000F5, arg1: element0, type: type(symbolic_constant600000A7)} +// CHECK:STDOUT: inst600000F8: {kind: SpecificImplFunction, arg0: inst600000F7, arg1: specific6000000F, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000F9: {kind: PatternType, arg0: inst600000C2, type: type(TypeType)} +// CHECK:STDOUT: inst600000FA: {kind: ImportRefUnloaded, arg0: import_ir_inst87, arg1: entity_name} +// CHECK:STDOUT: inst600000FB: {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000FC: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst600000FD: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst600000FC, type: type(TypeType)} +// CHECK:STDOUT: inst600000FE: {kind: TupleType, arg0: inst_block60000053, type: type(TypeType)} +// CHECK:STDOUT: inst600000FF: {kind: SymbolicBindingPattern, arg0: entity_name6000002B, type: type(inst60000065)} +// CHECK:STDOUT: inst60000100: {kind: SymbolicBindingPattern, arg0: entity_name6000002C, type: type(inst60000065)} +// CHECK:STDOUT: inst60000101: {kind: SymbolicBindingPattern, arg0: entity_name6000002D, type: type(inst60000065)} +// CHECK:STDOUT: inst60000102: {kind: ImportRefLoaded, arg0: import_ir_inst8C, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000103: {kind: ImportRefLoaded, arg0: import_ir_inst8D, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000104: {kind: ImportRefLoaded, arg0: import_ir_inst8E, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000105: {kind: ImportRefLoaded, arg0: import_ir_inst8F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000106: {kind: ImportRefLoaded, arg0: import_ir_inst90, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000107: {kind: TupleType, arg0: inst_block60000056, type: type(TypeType)} +// CHECK:STDOUT: inst60000108: {kind: TupleValue, arg0: inst_block60000057, type: type(inst60000107)} +// CHECK:STDOUT: inst60000109: {kind: ImportRefUnloaded, arg0: import_ir_inst91, arg1: entity_name} +// CHECK:STDOUT: inst6000010A: {kind: ImplWitnessTable, arg0: inst_block60000058, arg1: impl60000009} +// CHECK:STDOUT: inst6000010B: {kind: ImplWitness, arg0: inst6000010A, arg1: specific60000010, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000010C: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000010D: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000010E: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000010F: {kind: TupleValue, arg0: inst_block60000059, type: type(inst60000107)} +// CHECK:STDOUT: inst60000110: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000010C, type: type(TypeType)} +// CHECK:STDOUT: inst60000111: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst6000010D, type: type(TypeType)} +// CHECK:STDOUT: inst60000112: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst6000010E, type: type(TypeType)} +// CHECK:STDOUT: inst60000113: {kind: TupleType, arg0: inst_block6000005A, type: type(TypeType)} +// CHECK:STDOUT: inst60000114: {kind: ImplWitness, arg0: inst6000010A, arg1: specific60000011, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000115: {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000C6)} +// CHECK:STDOUT: inst60000116: {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)} +// CHECK:STDOUT: inst60000117: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000C6)} +// CHECK:STDOUT: inst60000118: {kind: PatternType, arg0: inst600000FE, type: type(TypeType)} +// CHECK:STDOUT: inst60000119: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011A: {kind: OutParamPattern, arg0: inst60000119, arg1: call_param1, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011B: {kind: ValueBindingPattern, arg0: entity_name60000037, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011C: {kind: ValueParamPattern, arg0: inst6000011B, arg1: call_param0, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011D: {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000011E: {kind: ImportRefLoaded, arg0: import_ir_instA2, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst6000011F: {kind: ImportRefLoaded, arg0: import_ir_instA3, arg1: entity_name, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000120: {kind: FunctionType, arg0: function60000005, arg1: specific60000011, type: type(TypeType)} +// CHECK:STDOUT: inst60000121: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000CD)} +// CHECK:STDOUT: inst60000122: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000123: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000122, type: type(TypeType)} +// CHECK:STDOUT: inst60000124: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000125: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst60000124, type: type(TypeType)} +// CHECK:STDOUT: inst60000126: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000127: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst60000126, type: type(TypeType)} +// CHECK:STDOUT: inst60000128: {kind: TupleType, arg0: inst_block60000062, type: type(TypeType)} +// CHECK:STDOUT: inst60000129: {kind: PatternType, arg0: inst60000128, type: type(TypeType)} +// CHECK:STDOUT: inst6000012A: {kind: RequireCompleteType, arg0: inst600000FE, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012B: {kind: RequireCompleteType, arg0: inst600000FD, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012C: {kind: LookupImplWitness, arg0: inst600000FC, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012D: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000FC, type: type(TypeType)} +// CHECK:STDOUT: inst6000012E: {kind: ImplWitnessAccess, arg0: inst6000012C, arg1: element0, type: type(symbolic_constant600000EE)} +// CHECK:STDOUT: inst6000012F: {kind: SpecificImplFunction, arg0: inst6000012E, arg1: specific60000013, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000130: {kind: RequireCompleteType, arg0: inst60000128, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000131: {kind: RequireCompleteType, arg0: inst60000123, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000132: {kind: LookupImplWitness, arg0: inst60000122, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000133: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000122, type: type(TypeType)} +// CHECK:STDOUT: inst60000134: {kind: ImplWitnessAccess, arg0: inst60000132, arg1: element0, type: type(symbolic_constant600000F7)} +// CHECK:STDOUT: inst60000135: {kind: SpecificImplFunction, arg0: inst60000134, arg1: specific60000014, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000136: {kind: RequireCompleteType, arg0: inst60000125, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000137: {kind: LookupImplWitness, arg0: inst60000124, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000138: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000124, type: type(TypeType)} +// CHECK:STDOUT: inst60000139: {kind: ImplWitnessAccess, arg0: inst60000137, arg1: element0, type: type(symbolic_constant600000FC)} +// CHECK:STDOUT: inst6000013A: {kind: SpecificImplFunction, arg0: inst60000139, arg1: specific60000015, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000013B: {kind: RequireCompleteType, arg0: inst60000127, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000013C: {kind: LookupImplWitness, arg0: inst60000126, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000013D: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000126, type: type(TypeType)} +// CHECK:STDOUT: inst6000013E: {kind: ImplWitnessAccess, arg0: inst6000013C, arg1: element0, type: type(symbolic_constant60000101)} +// CHECK:STDOUT: inst6000013F: {kind: SpecificImplFunction, arg0: inst6000013E, arg1: specific60000016, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000140: {kind: PatternType, arg0: inst600000FD, type: type(TypeType)} +// CHECK:STDOUT: inst60000141: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000142: {kind: LookupImplWitness, arg0: inst6000001C, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000143: {kind: FacetValue, arg0: inst6000001B, arg1: inst_block6000006D, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000144: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000143, type: type(TypeType)} +// CHECK:STDOUT: inst60000145: {kind: ImplWitnessAccess, arg0: inst60000141, arg1: element0, type: type(symbolic_constant6000010C)} +// CHECK:STDOUT: inst60000146: {kind: ImplWitnessAccess, arg0: inst60000141, arg1: element0, type: type(symbolic_constant60000109)} +// CHECK:STDOUT: inst60000147: {kind: FacetValue, arg0: inst6000001C, arg1: inst_block6000006E, type: type(inst6000004A)} +// CHECK:STDOUT: inst60000148: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000147, type: type(TypeType)} +// CHECK:STDOUT: inst60000149: {kind: ImplWitnessAccess, arg0: inst60000142, arg1: element0, type: type(symbolic_constant6000010C)} +// CHECK:STDOUT: inst6000014A: {kind: BoundMethod, arg0: inst60000042, arg1: inst60000145, type: type(inst(BoundMethodType))} +// CHECK:STDOUT: inst6000014B: {kind: SpecificImplFunction, arg0: inst60000145, arg1: specific60000017, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000014C: {kind: SpecificImplFunction, arg0: inst60000146, arg1: specific60000017, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000014D: {kind: SpecificImplFunction, arg0: inst60000149, arg1: specific60000018, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000014E: {kind: BoundMethod, arg0: inst60000042, arg1: inst6000014B, type: type(inst(BoundMethodType))} +// CHECK:STDOUT: inst6000014F: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000150: {kind: Call, arg0: inst6000014E, arg1: inst_block60000072, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000151: {kind: InitializeFrom, arg0: inst60000150, arg1: inst60000046, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000152: {kind: TupleAccess, arg0: inst60000037, arg1: element1, type: type(inst60000024)} +// CHECK:STDOUT: inst60000153: {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000152, type: type(inst60000024)} +// CHECK:STDOUT: inst60000154: {kind: Converted, arg0: inst60000043, arg1: inst60000153, type: type(inst60000024)} +// CHECK:STDOUT: inst60000155: {kind: TupleInit, arg0: inst_block60000073, arg1: inst60000037, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000156: {kind: Converted, arg0: inst60000044, arg1: inst60000155, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000157: {kind: ReturnExpr, arg0: inst60000156, arg1: inst60000037} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: // CHECK:STDOUT: instE: concrete_constant(instE) @@ -727,288 +737,299 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000022: symbolic_constant2 // CHECK:STDOUT: inst60000023: symbolic_constant4 // CHECK:STDOUT: inst60000024: concrete_constant(inst60000024) +// CHECK:STDOUT: inst60000025: concrete_constant(inst60000026) // CHECK:STDOUT: inst60000026: concrete_constant(inst60000026) -// CHECK:STDOUT: inst60000028: concrete_constant(inst60000028) -// CHECK:STDOUT: inst60000029: concrete_constant(inst60000024) -// CHECK:STDOUT: inst6000002A: symbolic_constant7 -// CHECK:STDOUT: inst6000002B: symbolic_constant8 -// CHECK:STDOUT: inst6000002C: symbolic_constant8 +// CHECK:STDOUT: inst60000027: concrete_constant(inst60000027) +// CHECK:STDOUT: inst60000028: symbolic_constant8 +// CHECK:STDOUT: inst60000029: symbolic_constant7 +// CHECK:STDOUT: inst6000002A: symbolic_constant8 +// CHECK:STDOUT: inst6000002B: concrete_constant(inst6000002B) +// CHECK:STDOUT: inst6000002C: concrete_constant(inst60000024) // CHECK:STDOUT: inst6000002D: symbolic_constant9 -// CHECK:STDOUT: inst6000002E: concrete_constant(inst6000002E) +// CHECK:STDOUT: inst6000002E: symbolic_constantA // CHECK:STDOUT: inst6000002F: symbolic_constantA -// CHECK:STDOUT: inst60000030: concrete_constant(inst60000030) -// CHECK:STDOUT: inst60000032: symbolic_constant4 -// CHECK:STDOUT: inst60000035: concrete_constant(inst60000037) -// CHECK:STDOUT: inst60000036: concrete_constant(inst60000036) -// CHECK:STDOUT: inst60000037: concrete_constant(inst60000037) -// CHECK:STDOUT: inst60000038: symbolic_constantB -// CHECK:STDOUT: inst60000039: symbolic_constantD -// CHECK:STDOUT: inst6000003A: symbolic_constantC +// CHECK:STDOUT: inst60000030: symbolic_constantB +// CHECK:STDOUT: inst60000031: concrete_constant(inst60000031) +// CHECK:STDOUT: inst60000032: symbolic_constantC +// CHECK:STDOUT: inst60000033: concrete_constant(inst60000033) +// CHECK:STDOUT: inst60000035: symbolic_constant4 +// CHECK:STDOUT: inst60000038: concrete_constant(inst6000003A) +// CHECK:STDOUT: inst60000039: concrete_constant(inst60000039) +// CHECK:STDOUT: inst6000003A: concrete_constant(inst6000003A) // CHECK:STDOUT: inst6000003B: symbolic_constantD // CHECK:STDOUT: inst6000003C: symbolic_constant6000000F // CHECK:STDOUT: inst6000003D: symbolic_constantE // CHECK:STDOUT: inst6000003E: symbolic_constant6000000F -// CHECK:STDOUT: inst60000042: symbolic_constantD -// CHECK:STDOUT: inst60000044: symbolic_constant6000000F -// CHECK:STDOUT: inst60000045: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000046: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000047: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000048: symbolic_constant60000010 -// CHECK:STDOUT: inst60000049: constant -// CHECK:STDOUT: inst6000004A: concrete_constant(inst6000004E) -// CHECK:STDOUT: inst6000004B: constant -// CHECK:STDOUT: inst6000004C: concrete_constant(inst6000004C) +// CHECK:STDOUT: inst6000003F: symbolic_constant60000011 +// CHECK:STDOUT: inst60000040: symbolic_constant60000010 +// CHECK:STDOUT: inst60000041: symbolic_constant60000011 +// CHECK:STDOUT: inst60000043: concrete_constant(inst60000026) +// CHECK:STDOUT: inst60000045: symbolic_constant6000000F +// CHECK:STDOUT: inst60000047: symbolic_constant60000011 +// CHECK:STDOUT: inst60000048: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst60000049: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst6000004A: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst6000004B: symbolic_constant60000012 +// CHECK:STDOUT: inst6000004C: constant // CHECK:STDOUT: inst6000004D: concrete_constant(inst60000051) -// CHECK:STDOUT: inst6000004E: concrete_constant(inst6000004E) -// CHECK:STDOUT: inst6000004F: concrete_constant(inst60000051) -// CHECK:STDOUT: inst60000050: concrete_constant(inst60000050) +// CHECK:STDOUT: inst6000004E: constant +// CHECK:STDOUT: inst6000004F: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst60000050: concrete_constant(inst60000054) // CHECK:STDOUT: inst60000051: concrete_constant(inst60000051) -// CHECK:STDOUT: inst60000052: symbolic_constant60000011 -// CHECK:STDOUT: inst60000053: symbolic_constant60000012 +// CHECK:STDOUT: inst60000052: concrete_constant(inst60000054) +// CHECK:STDOUT: inst60000053: concrete_constant(inst60000053) // CHECK:STDOUT: inst60000054: concrete_constant(inst60000054) -// CHECK:STDOUT: inst60000055: concrete_constant(inst60000055) -// CHECK:STDOUT: inst60000056: concrete_constant(inst60000056) +// CHECK:STDOUT: inst60000055: symbolic_constant60000013 +// CHECK:STDOUT: inst60000056: symbolic_constant60000014 // CHECK:STDOUT: inst60000057: concrete_constant(inst60000057) -// CHECK:STDOUT: inst60000058: symbolic_constant60000010 -// CHECK:STDOUT: inst60000059: symbolic_constant60000016 -// CHECK:STDOUT: inst6000005A: symbolic_constant60000017 -// CHECK:STDOUT: inst6000005B: symbolic_constant60000018 -// CHECK:STDOUT: inst6000005C: symbolic_constant600000FF -// CHECK:STDOUT: inst6000005D: constant -// CHECK:STDOUT: inst6000005E: concrete_constant(inst6000005E) -// CHECK:STDOUT: inst6000005F: symbolic_constant60000019 -// CHECK:STDOUT: inst60000060: symbolic_constant6000001A -// CHECK:STDOUT: inst60000061: symbolic_constant6000001B -// CHECK:STDOUT: inst60000062: concrete_constant(inst60000062) -// CHECK:STDOUT: inst60000063: concrete_constant(inst60000063) +// CHECK:STDOUT: inst60000058: concrete_constant(inst60000058) +// CHECK:STDOUT: inst60000059: concrete_constant(inst60000059) +// CHECK:STDOUT: inst6000005A: concrete_constant(inst6000005A) +// CHECK:STDOUT: inst6000005B: symbolic_constant60000012 +// CHECK:STDOUT: inst6000005C: symbolic_constant60000018 +// CHECK:STDOUT: inst6000005D: symbolic_constant60000019 +// CHECK:STDOUT: inst6000005E: symbolic_constant6000001A +// CHECK:STDOUT: inst6000005F: symbolic_constant60000107 +// CHECK:STDOUT: inst60000060: constant +// CHECK:STDOUT: inst60000061: concrete_constant(inst60000061) +// CHECK:STDOUT: inst60000062: symbolic_constant6000001B +// CHECK:STDOUT: inst60000063: symbolic_constant6000001C // CHECK:STDOUT: inst60000064: symbolic_constant6000001D -// CHECK:STDOUT: inst60000065: symbolic_constant6000001C -// CHECK:STDOUT: inst60000066: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000067: constant -// CHECK:STDOUT: inst60000068: concrete_constant(inst60000068) -// CHECK:STDOUT: inst60000069: symbolic_constant60000021 -// CHECK:STDOUT: inst6000006A: symbolic_constant60000023 -// CHECK:STDOUT: inst6000006B: symbolic_constant60000024 -// CHECK:STDOUT: inst6000006C: symbolic_constant60000025 -// CHECK:STDOUT: inst6000006D: symbolic_constant60000026 -// CHECK:STDOUT: inst6000006E: symbolic_constant60000029 +// CHECK:STDOUT: inst60000065: concrete_constant(inst60000065) +// CHECK:STDOUT: inst60000066: concrete_constant(inst60000066) +// CHECK:STDOUT: inst60000067: symbolic_constant6000001F +// CHECK:STDOUT: inst60000068: symbolic_constant6000001E +// CHECK:STDOUT: inst60000069: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst6000006A: constant +// CHECK:STDOUT: inst6000006B: concrete_constant(inst6000006B) +// CHECK:STDOUT: inst6000006C: symbolic_constant60000023 +// CHECK:STDOUT: inst6000006D: symbolic_constant60000025 +// CHECK:STDOUT: inst6000006E: symbolic_constant60000026 // CHECK:STDOUT: inst6000006F: symbolic_constant60000027 // CHECK:STDOUT: inst60000070: symbolic_constant60000028 // CHECK:STDOUT: inst60000071: symbolic_constant6000002B -// CHECK:STDOUT: inst60000072: concrete_constant(inst60000072) -// CHECK:STDOUT: inst60000073: concrete_constant(inst60000073) -// CHECK:STDOUT: inst60000074: concrete_constant(inst60000074) +// CHECK:STDOUT: inst60000072: symbolic_constant60000029 +// CHECK:STDOUT: inst60000073: symbolic_constant6000002A +// CHECK:STDOUT: inst60000074: symbolic_constant6000002D // CHECK:STDOUT: inst60000075: concrete_constant(inst60000075) -// CHECK:STDOUT: inst60000076: symbolic_constant6000001D -// CHECK:STDOUT: inst60000077: symbolic_constant6000002E -// CHECK:STDOUT: inst60000078: symbolic_constant6000002F -// CHECK:STDOUT: inst60000079: symbolic_constant60000033 -// CHECK:STDOUT: inst6000007A: symbolic_constant60000034 -// CHECK:STDOUT: inst6000007B: symbolic_constant60000035 -// CHECK:STDOUT: inst6000007C: symbolic_constant60000036 -// CHECK:STDOUT: inst6000007D: symbolic_constant60000037 -// CHECK:STDOUT: inst6000007E: symbolic_constant60000039 -// CHECK:STDOUT: inst6000007F: symbolic_constant6000003B -// CHECK:STDOUT: inst60000080: symbolic_constant6000003D -// CHECK:STDOUT: inst60000081: symbolic_constant6000003F -// CHECK:STDOUT: inst60000082: symbolic_constant60000041 -// CHECK:STDOUT: inst60000083: symbolic_constant60000043 -// CHECK:STDOUT: inst60000084: symbolic_constant60000044 -// CHECK:STDOUT: inst60000085: symbolic_constant60000045 -// CHECK:STDOUT: inst60000086: symbolic_constant60000046 -// CHECK:STDOUT: inst60000087: symbolic_constant60000047 -// CHECK:STDOUT: inst60000088: symbolic_constant60000048 -// CHECK:STDOUT: inst60000089: symbolic_constant60000049 -// CHECK:STDOUT: inst6000008A: constant -// CHECK:STDOUT: inst6000008B: concrete_constant(inst6000008B) -// CHECK:STDOUT: inst6000008C: concrete_constant(inst(BoolType)) -// CHECK:STDOUT: inst6000008D: concrete_constant(inst60000047) -// CHECK:STDOUT: inst6000008E: constant -// CHECK:STDOUT: inst6000008F: concrete_constant(inst6000008F) -// CHECK:STDOUT: inst60000090: concrete_constant(inst(CharLiteralType)) -// CHECK:STDOUT: inst60000091: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000092: constant -// CHECK:STDOUT: inst60000093: concrete_constant(inst60000093) -// CHECK:STDOUT: inst60000094: concrete_constant(inst(FloatLiteralType)) -// CHECK:STDOUT: inst60000095: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000096: constant -// CHECK:STDOUT: inst60000097: concrete_constant(inst60000097) -// CHECK:STDOUT: inst60000098: concrete_constant(inst(IntLiteralType)) -// CHECK:STDOUT: inst60000099: concrete_constant(inst60000047) -// CHECK:STDOUT: inst6000009A: symbolic_constant600000FD -// CHECK:STDOUT: inst6000009B: concrete_constant(inst6000009B) -// CHECK:STDOUT: inst6000009C: concrete_constant(inst6000009C) -// CHECK:STDOUT: inst6000009D: symbolic_constant6000004B -// CHECK:STDOUT: inst6000009E: symbolic_constant6000004A -// CHECK:STDOUT: inst6000009F: concrete_constant(inst60000047) -// CHECK:STDOUT: inst600000A0: constant -// CHECK:STDOUT: inst600000A1: concrete_constant(inst600000A1) -// CHECK:STDOUT: inst600000A2: symbolic_constant6000004E -// CHECK:STDOUT: inst600000A3: symbolic_constant60000050 -// CHECK:STDOUT: inst600000A4: symbolic_constant60000051 -// CHECK:STDOUT: inst600000A5: symbolic_constant60000052 -// CHECK:STDOUT: inst600000A6: symbolic_constant60000055 +// CHECK:STDOUT: inst60000076: concrete_constant(inst60000076) +// CHECK:STDOUT: inst60000077: concrete_constant(inst60000077) +// CHECK:STDOUT: inst60000078: concrete_constant(inst60000078) +// CHECK:STDOUT: inst60000079: symbolic_constant6000001F +// CHECK:STDOUT: inst6000007A: symbolic_constant60000030 +// CHECK:STDOUT: inst6000007B: symbolic_constant60000031 +// CHECK:STDOUT: inst6000007C: symbolic_constant60000035 +// CHECK:STDOUT: inst6000007D: symbolic_constant60000036 +// CHECK:STDOUT: inst6000007E: symbolic_constant60000037 +// CHECK:STDOUT: inst6000007F: symbolic_constant60000038 +// CHECK:STDOUT: inst60000080: symbolic_constant60000039 +// CHECK:STDOUT: inst60000081: symbolic_constant6000003B +// CHECK:STDOUT: inst60000082: symbolic_constant6000003D +// CHECK:STDOUT: inst60000083: symbolic_constant6000003F +// CHECK:STDOUT: inst60000084: symbolic_constant60000041 +// CHECK:STDOUT: inst60000085: symbolic_constant60000043 +// CHECK:STDOUT: inst60000086: symbolic_constant60000045 +// CHECK:STDOUT: inst60000087: symbolic_constant60000046 +// CHECK:STDOUT: inst60000088: symbolic_constant60000047 +// CHECK:STDOUT: inst60000089: symbolic_constant60000048 +// CHECK:STDOUT: inst6000008A: symbolic_constant60000049 +// CHECK:STDOUT: inst6000008B: symbolic_constant6000004A +// CHECK:STDOUT: inst6000008C: symbolic_constant6000004B +// CHECK:STDOUT: inst6000008D: constant +// CHECK:STDOUT: inst6000008E: concrete_constant(inst6000008E) +// CHECK:STDOUT: inst6000008F: concrete_constant(inst(BoolType)) +// CHECK:STDOUT: inst60000090: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst60000091: constant +// CHECK:STDOUT: inst60000092: concrete_constant(inst60000092) +// CHECK:STDOUT: inst60000093: concrete_constant(inst(CharLiteralType)) +// CHECK:STDOUT: inst60000094: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst60000095: constant +// CHECK:STDOUT: inst60000096: concrete_constant(inst60000096) +// CHECK:STDOUT: inst60000097: concrete_constant(inst(FloatLiteralType)) +// CHECK:STDOUT: inst60000098: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst60000099: constant +// CHECK:STDOUT: inst6000009A: concrete_constant(inst6000009A) +// CHECK:STDOUT: inst6000009B: concrete_constant(inst(IntLiteralType)) +// CHECK:STDOUT: inst6000009C: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst6000009D: symbolic_constant60000105 +// CHECK:STDOUT: inst6000009E: concrete_constant(inst6000009E) +// CHECK:STDOUT: inst6000009F: concrete_constant(inst6000009F) +// CHECK:STDOUT: inst600000A0: symbolic_constant6000004D +// CHECK:STDOUT: inst600000A1: symbolic_constant6000004C +// CHECK:STDOUT: inst600000A2: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst600000A3: constant +// CHECK:STDOUT: inst600000A4: concrete_constant(inst600000A4) +// CHECK:STDOUT: inst600000A5: symbolic_constant60000050 +// CHECK:STDOUT: inst600000A6: symbolic_constant60000052 // CHECK:STDOUT: inst600000A7: symbolic_constant60000053 // CHECK:STDOUT: inst600000A8: symbolic_constant60000054 -// CHECK:STDOUT: inst600000A9: concrete_constant(inst600000A9) -// CHECK:STDOUT: inst600000AA: concrete_constant(inst600000AA) -// CHECK:STDOUT: inst600000AB: concrete_constant(inst600000AB) +// CHECK:STDOUT: inst600000A9: symbolic_constant60000057 +// CHECK:STDOUT: inst600000AA: symbolic_constant60000055 +// CHECK:STDOUT: inst600000AB: symbolic_constant60000056 // CHECK:STDOUT: inst600000AC: concrete_constant(inst600000AC) -// CHECK:STDOUT: inst600000AD: symbolic_constant6000004B -// CHECK:STDOUT: inst600000AE: symbolic_constant6000005A -// CHECK:STDOUT: inst600000AF: symbolic_constant6000005B -// CHECK:STDOUT: inst600000B0: symbolic_constant6000005C -// CHECK:STDOUT: inst600000B1: symbolic_constant6000005F -// CHECK:STDOUT: inst600000B2: symbolic_constant60000060 -// CHECK:STDOUT: inst600000B3: symbolic_constant60000061 -// CHECK:STDOUT: inst600000B4: constant -// CHECK:STDOUT: inst600000B5: concrete_constant(inst600000B5) -// CHECK:STDOUT: inst600000B6: concrete_constant(inst(TypeType)) -// CHECK:STDOUT: inst600000B7: concrete_constant(inst60000047) -// CHECK:STDOUT: inst600000B8: constant -// CHECK:STDOUT: inst600000B9: concrete_constant(inst600000B9) -// CHECK:STDOUT: inst600000BA: concrete_constant(inst60000024) -// CHECK:STDOUT: inst600000BB: concrete_constant(inst60000047) -// CHECK:STDOUT: inst600000BC: constant -// CHECK:STDOUT: inst600000BD: concrete_constant(inst600000BD) -// CHECK:STDOUT: inst600000BE: symbolic_constant60000062 -// CHECK:STDOUT: inst600000BF: symbolic_constant60000063 -// CHECK:STDOUT: inst600000C0: symbolic_constant60000064 -// CHECK:STDOUT: inst600000C1: concrete_constant(inst600000C1) -// CHECK:STDOUT: inst600000C2: concrete_constant(inst600000C2) +// CHECK:STDOUT: inst600000AD: concrete_constant(inst600000AD) +// CHECK:STDOUT: inst600000AE: concrete_constant(inst600000AE) +// CHECK:STDOUT: inst600000AF: concrete_constant(inst600000AF) +// CHECK:STDOUT: inst600000B0: symbolic_constant6000004D +// CHECK:STDOUT: inst600000B1: symbolic_constant6000005C +// CHECK:STDOUT: inst600000B2: symbolic_constant6000005D +// CHECK:STDOUT: inst600000B3: symbolic_constant6000005E +// CHECK:STDOUT: inst600000B4: symbolic_constant60000061 +// CHECK:STDOUT: inst600000B5: symbolic_constant60000062 +// CHECK:STDOUT: inst600000B6: symbolic_constant60000063 +// CHECK:STDOUT: inst600000B7: constant +// CHECK:STDOUT: inst600000B8: concrete_constant(inst600000B8) +// CHECK:STDOUT: inst600000B9: concrete_constant(inst(TypeType)) +// CHECK:STDOUT: inst600000BA: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst600000BB: constant +// CHECK:STDOUT: inst600000BC: concrete_constant(inst600000BC) +// CHECK:STDOUT: inst600000BD: concrete_constant(inst60000024) +// CHECK:STDOUT: inst600000BE: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst600000BF: constant +// CHECK:STDOUT: inst600000C0: concrete_constant(inst600000C0) +// CHECK:STDOUT: inst600000C1: symbolic_constant60000064 +// CHECK:STDOUT: inst600000C2: symbolic_constant60000065 // CHECK:STDOUT: inst600000C3: symbolic_constant60000066 -// CHECK:STDOUT: inst600000C4: symbolic_constant60000067 -// CHECK:STDOUT: inst600000C5: symbolic_constant60000065 -// CHECK:STDOUT: inst600000C6: concrete_constant(inst60000047) -// CHECK:STDOUT: inst600000C7: constant -// CHECK:STDOUT: inst600000C8: concrete_constant(inst600000C8) -// CHECK:STDOUT: inst600000C9: symbolic_constant6000006D -// CHECK:STDOUT: inst600000CA: symbolic_constant6000006F -// CHECK:STDOUT: inst600000CB: symbolic_constant60000070 -// CHECK:STDOUT: inst600000CC: symbolic_constant60000071 -// CHECK:STDOUT: inst600000CD: symbolic_constant60000072 -// CHECK:STDOUT: inst600000CE: symbolic_constant60000073 -// CHECK:STDOUT: inst600000CF: symbolic_constant60000074 -// CHECK:STDOUT: inst600000D0: symbolic_constant60000077 +// CHECK:STDOUT: inst600000C4: concrete_constant(inst600000C4) +// CHECK:STDOUT: inst600000C5: concrete_constant(inst600000C5) +// CHECK:STDOUT: inst600000C6: symbolic_constant60000068 +// CHECK:STDOUT: inst600000C7: symbolic_constant60000069 +// CHECK:STDOUT: inst600000C8: symbolic_constant60000067 +// CHECK:STDOUT: inst600000C9: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst600000CA: concrete_constant(inst600000CA) +// CHECK:STDOUT: inst600000CB: symbolic_constant6000006C +// CHECK:STDOUT: inst600000CC: constant +// CHECK:STDOUT: inst600000CD: concrete_constant(inst600000CD) +// CHECK:STDOUT: inst600000CE: symbolic_constant60000071 +// CHECK:STDOUT: inst600000CF: symbolic_constant60000073 +// CHECK:STDOUT: inst600000D0: symbolic_constant60000074 // CHECK:STDOUT: inst600000D1: symbolic_constant60000075 // CHECK:STDOUT: inst600000D2: symbolic_constant60000076 -// CHECK:STDOUT: inst600000D3: symbolic_constant60000079 -// CHECK:STDOUT: inst600000D4: concrete_constant(inst600000D4) -// CHECK:STDOUT: inst600000D5: concrete_constant(inst600000D5) -// CHECK:STDOUT: inst600000D6: concrete_constant(inst600000D6) -// CHECK:STDOUT: inst600000D7: concrete_constant(inst600000D7) -// CHECK:STDOUT: inst600000D8: symbolic_constant60000066 -// CHECK:STDOUT: inst600000D9: symbolic_constant60000067 -// CHECK:STDOUT: inst600000DA: symbolic_constant6000007C -// CHECK:STDOUT: inst600000DB: symbolic_constant6000007D -// CHECK:STDOUT: inst600000DC: symbolic_constant60000083 -// CHECK:STDOUT: inst600000DD: symbolic_constant60000084 -// CHECK:STDOUT: inst600000DE: symbolic_constant60000085 -// CHECK:STDOUT: inst600000DF: symbolic_constant60000086 -// CHECK:STDOUT: inst600000E0: symbolic_constant60000087 -// CHECK:STDOUT: inst600000E1: symbolic_constant60000088 -// CHECK:STDOUT: inst600000E2: symbolic_constant60000089 -// CHECK:STDOUT: inst600000E3: symbolic_constant60000090 -// CHECK:STDOUT: inst600000E4: symbolic_constant60000092 -// CHECK:STDOUT: inst600000E5: symbolic_constant60000094 -// CHECK:STDOUT: inst600000E6: symbolic_constant60000096 -// CHECK:STDOUT: inst600000E7: symbolic_constant60000098 -// CHECK:STDOUT: inst600000E8: symbolic_constant6000009A -// CHECK:STDOUT: inst600000E9: symbolic_constant6000009B -// CHECK:STDOUT: inst600000EA: symbolic_constant6000009C -// CHECK:STDOUT: inst600000EB: symbolic_constant6000009D -// CHECK:STDOUT: inst600000EC: symbolic_constant6000009E -// CHECK:STDOUT: inst600000ED: symbolic_constant6000009F -// CHECK:STDOUT: inst600000EE: symbolic_constant600000A0 -// CHECK:STDOUT: inst600000EF: symbolic_constant600000A1 -// CHECK:STDOUT: inst600000F0: symbolic_constant600000A2 -// CHECK:STDOUT: inst600000F1: symbolic_constant600000A3 -// CHECK:STDOUT: inst600000F2: symbolic_constant600000A4 -// CHECK:STDOUT: inst600000F3: symbolic_constant600000A5 -// CHECK:STDOUT: inst600000F4: constant -// CHECK:STDOUT: inst600000F5: concrete_constant(inst600000F5) -// CHECK:STDOUT: inst600000F6: symbolic_constant600000A6 -// CHECK:STDOUT: inst600000F7: symbolic_constant600000A7 -// CHECK:STDOUT: inst600000F8: symbolic_constant600000A8 -// CHECK:STDOUT: inst600000F9: concrete_constant(inst600000F9) -// CHECK:STDOUT: inst600000FA: concrete_constant(inst600000FA) +// CHECK:STDOUT: inst600000D3: symbolic_constant60000077 +// CHECK:STDOUT: inst600000D4: symbolic_constant60000078 +// CHECK:STDOUT: inst600000D5: symbolic_constant60000079 +// CHECK:STDOUT: inst600000D6: symbolic_constant6000007C +// CHECK:STDOUT: inst600000D7: symbolic_constant6000007A +// CHECK:STDOUT: inst600000D8: symbolic_constant6000007B +// CHECK:STDOUT: inst600000D9: symbolic_constant6000007E +// CHECK:STDOUT: inst600000DA: concrete_constant(inst600000DA) +// CHECK:STDOUT: inst600000DB: concrete_constant(inst600000DB) +// CHECK:STDOUT: inst600000DC: concrete_constant(inst600000DC) +// CHECK:STDOUT: inst600000DD: concrete_constant(inst600000DD) +// CHECK:STDOUT: inst600000DE: symbolic_constant60000068 +// CHECK:STDOUT: inst600000DF: symbolic_constant60000069 +// CHECK:STDOUT: inst600000E0: symbolic_constant60000081 +// CHECK:STDOUT: inst600000E1: symbolic_constant60000082 +// CHECK:STDOUT: inst600000E2: symbolic_constant60000088 +// CHECK:STDOUT: inst600000E3: symbolic_constant60000089 +// CHECK:STDOUT: inst600000E4: symbolic_constant6000008A +// CHECK:STDOUT: inst600000E5: symbolic_constant6000008B +// CHECK:STDOUT: inst600000E6: symbolic_constant6000008C +// CHECK:STDOUT: inst600000E7: symbolic_constant6000008D +// CHECK:STDOUT: inst600000E8: symbolic_constant6000008E +// CHECK:STDOUT: inst600000E9: symbolic_constant60000095 +// CHECK:STDOUT: inst600000EA: symbolic_constant60000097 +// CHECK:STDOUT: inst600000EB: symbolic_constant60000099 +// CHECK:STDOUT: inst600000EC: symbolic_constant6000009B +// CHECK:STDOUT: inst600000ED: symbolic_constant6000009D +// CHECK:STDOUT: inst600000EE: symbolic_constant6000009F +// CHECK:STDOUT: inst600000EF: symbolic_constant600000A0 +// CHECK:STDOUT: inst600000F0: symbolic_constant600000A1 +// CHECK:STDOUT: inst600000F1: symbolic_constant600000A2 +// CHECK:STDOUT: inst600000F2: symbolic_constant600000A3 +// CHECK:STDOUT: inst600000F3: symbolic_constant600000A4 +// CHECK:STDOUT: inst600000F4: symbolic_constant600000A5 +// CHECK:STDOUT: inst600000F5: symbolic_constant600000A6 +// CHECK:STDOUT: inst600000F6: symbolic_constant600000A7 +// CHECK:STDOUT: inst600000F7: symbolic_constant600000A8 +// CHECK:STDOUT: inst600000F8: symbolic_constant600000A9 +// CHECK:STDOUT: inst600000F9: symbolic_constant600000AA +// CHECK:STDOUT: inst600000FA: constant // CHECK:STDOUT: inst600000FB: concrete_constant(inst600000FB) -// CHECK:STDOUT: inst600000FC: symbolic_constant600000AA -// CHECK:STDOUT: inst600000FD: symbolic_constant600000AB -// CHECK:STDOUT: inst600000FE: symbolic_constant600000AC -// CHECK:STDOUT: inst600000FF: symbolic_constant600000A9 -// CHECK:STDOUT: inst60000100: concrete_constant(inst60000047) -// CHECK:STDOUT: inst60000101: constant -// CHECK:STDOUT: inst60000102: concrete_constant(inst60000102) -// CHECK:STDOUT: inst60000103: symbolic_constant600000B4 -// CHECK:STDOUT: inst60000104: symbolic_constant600000B6 -// CHECK:STDOUT: inst60000105: symbolic_constant600000B7 -// CHECK:STDOUT: inst60000106: symbolic_constant600000B8 -// CHECK:STDOUT: inst60000107: symbolic_constant600000B9 -// CHECK:STDOUT: inst60000108: symbolic_constant600000BA -// CHECK:STDOUT: inst60000109: symbolic_constant600000BB -// CHECK:STDOUT: inst6000010A: symbolic_constant600000BC -// CHECK:STDOUT: inst6000010B: symbolic_constant600000BD -// CHECK:STDOUT: inst6000010C: symbolic_constant600000C0 +// CHECK:STDOUT: inst600000FC: symbolic_constant600000AB +// CHECK:STDOUT: inst600000FD: symbolic_constant600000AC +// CHECK:STDOUT: inst600000FE: symbolic_constant600000AD +// CHECK:STDOUT: inst600000FF: concrete_constant(inst600000FF) +// CHECK:STDOUT: inst60000100: concrete_constant(inst60000100) +// CHECK:STDOUT: inst60000101: concrete_constant(inst60000101) +// CHECK:STDOUT: inst60000102: symbolic_constant600000AF +// CHECK:STDOUT: inst60000103: symbolic_constant600000B0 +// CHECK:STDOUT: inst60000104: symbolic_constant600000B1 +// CHECK:STDOUT: inst60000105: symbolic_constant600000AE +// CHECK:STDOUT: inst60000106: concrete_constant(inst6000004A) +// CHECK:STDOUT: inst60000107: concrete_constant(inst60000107) +// CHECK:STDOUT: inst60000108: symbolic_constant600000B5 +// CHECK:STDOUT: inst60000109: constant +// CHECK:STDOUT: inst6000010A: concrete_constant(inst6000010A) +// CHECK:STDOUT: inst6000010B: symbolic_constant600000BB +// CHECK:STDOUT: inst6000010C: symbolic_constant600000BD // CHECK:STDOUT: inst6000010D: symbolic_constant600000BE // CHECK:STDOUT: inst6000010E: symbolic_constant600000BF -// CHECK:STDOUT: inst6000010F: symbolic_constant600000C2 -// CHECK:STDOUT: inst60000110: concrete_constant(inst60000110) -// CHECK:STDOUT: inst60000111: concrete_constant(inst60000111) -// CHECK:STDOUT: inst60000112: concrete_constant(inst60000112) -// CHECK:STDOUT: inst60000113: concrete_constant(inst60000113) -// CHECK:STDOUT: inst60000114: symbolic_constant600000AA -// CHECK:STDOUT: inst60000115: symbolic_constant600000AB -// CHECK:STDOUT: inst60000116: symbolic_constant600000AC -// CHECK:STDOUT: inst60000117: symbolic_constant600000C5 -// CHECK:STDOUT: inst60000118: symbolic_constant600000C6 -// CHECK:STDOUT: inst60000119: symbolic_constant600000CE -// CHECK:STDOUT: inst6000011A: symbolic_constant600000CF -// CHECK:STDOUT: inst6000011B: symbolic_constant600000D0 -// CHECK:STDOUT: inst6000011C: symbolic_constant600000D1 -// CHECK:STDOUT: inst6000011D: symbolic_constant600000D2 -// CHECK:STDOUT: inst6000011E: symbolic_constant600000D3 -// CHECK:STDOUT: inst6000011F: symbolic_constant600000D4 -// CHECK:STDOUT: inst60000120: symbolic_constant600000D5 -// CHECK:STDOUT: inst60000121: symbolic_constant600000D6 -// CHECK:STDOUT: inst60000122: symbolic_constant600000E2 -// CHECK:STDOUT: inst60000123: symbolic_constant600000E4 -// CHECK:STDOUT: inst60000124: symbolic_constant600000E6 -// CHECK:STDOUT: inst60000125: symbolic_constant600000E8 -// CHECK:STDOUT: inst60000126: symbolic_constant600000EA -// CHECK:STDOUT: inst60000127: symbolic_constant600000EC -// CHECK:STDOUT: inst60000128: symbolic_constant600000ED -// CHECK:STDOUT: inst60000129: symbolic_constant600000EE -// CHECK:STDOUT: inst6000012A: symbolic_constant600000EF -// CHECK:STDOUT: inst6000012B: symbolic_constant600000F0 -// CHECK:STDOUT: inst6000012C: symbolic_constant600000F1 -// CHECK:STDOUT: inst6000012D: symbolic_constant600000F2 -// CHECK:STDOUT: inst6000012E: symbolic_constant600000F3 -// CHECK:STDOUT: inst6000012F: symbolic_constant600000F4 -// CHECK:STDOUT: inst60000130: symbolic_constant600000F5 -// CHECK:STDOUT: inst60000131: symbolic_constant600000F6 -// CHECK:STDOUT: inst60000132: symbolic_constant600000F7 -// CHECK:STDOUT: inst60000133: symbolic_constant600000F8 -// CHECK:STDOUT: inst60000134: symbolic_constant600000F9 -// CHECK:STDOUT: inst60000135: symbolic_constant600000FA -// CHECK:STDOUT: inst60000136: symbolic_constant600000FB -// CHECK:STDOUT: inst60000137: symbolic_constant600000FC -// CHECK:STDOUT: inst60000138: symbolic_constant600000FE -// CHECK:STDOUT: inst60000139: symbolic_constant600000FF -// CHECK:STDOUT: inst6000013A: symbolic_constant60000100 -// CHECK:STDOUT: inst6000013B: symbolic_constant60000101 -// CHECK:STDOUT: inst6000013C: symbolic_constant60000105 -// CHECK:STDOUT: inst6000013D: symbolic_constant60000102 -// CHECK:STDOUT: inst6000013E: symbolic_constant60000103 -// CHECK:STDOUT: inst6000013F: symbolic_constant60000104 -// CHECK:STDOUT: inst60000140: symbolic_constant60000105 +// CHECK:STDOUT: inst6000010F: symbolic_constant600000C0 +// CHECK:STDOUT: inst60000110: symbolic_constant600000C1 +// CHECK:STDOUT: inst60000111: symbolic_constant600000C2 +// CHECK:STDOUT: inst60000112: symbolic_constant600000C3 +// CHECK:STDOUT: inst60000113: symbolic_constant600000C4 +// CHECK:STDOUT: inst60000114: symbolic_constant600000C5 +// CHECK:STDOUT: inst60000115: symbolic_constant600000C8 +// CHECK:STDOUT: inst60000116: symbolic_constant600000C6 +// CHECK:STDOUT: inst60000117: symbolic_constant600000C7 +// CHECK:STDOUT: inst60000118: symbolic_constant600000CA +// CHECK:STDOUT: inst60000119: concrete_constant(inst60000119) +// CHECK:STDOUT: inst6000011A: concrete_constant(inst6000011A) +// CHECK:STDOUT: inst6000011B: concrete_constant(inst6000011B) +// CHECK:STDOUT: inst6000011C: concrete_constant(inst6000011C) +// CHECK:STDOUT: inst6000011D: symbolic_constant600000AF +// CHECK:STDOUT: inst6000011E: symbolic_constant600000B0 +// CHECK:STDOUT: inst6000011F: symbolic_constant600000B1 +// CHECK:STDOUT: inst60000120: symbolic_constant600000CD +// CHECK:STDOUT: inst60000121: symbolic_constant600000CE +// CHECK:STDOUT: inst60000122: symbolic_constant600000D6 +// CHECK:STDOUT: inst60000123: symbolic_constant600000D7 +// CHECK:STDOUT: inst60000124: symbolic_constant600000D8 +// CHECK:STDOUT: inst60000125: symbolic_constant600000D9 +// CHECK:STDOUT: inst60000126: symbolic_constant600000DA +// CHECK:STDOUT: inst60000127: symbolic_constant600000DB +// CHECK:STDOUT: inst60000128: symbolic_constant600000DC +// CHECK:STDOUT: inst60000129: symbolic_constant600000DD +// CHECK:STDOUT: inst6000012A: symbolic_constant600000DE +// CHECK:STDOUT: inst6000012B: symbolic_constant600000EA +// CHECK:STDOUT: inst6000012C: symbolic_constant600000EC +// CHECK:STDOUT: inst6000012D: symbolic_constant600000EE +// CHECK:STDOUT: inst6000012E: symbolic_constant600000F0 +// CHECK:STDOUT: inst6000012F: symbolic_constant600000F2 +// CHECK:STDOUT: inst60000130: symbolic_constant600000F4 +// CHECK:STDOUT: inst60000131: symbolic_constant600000F5 +// CHECK:STDOUT: inst60000132: symbolic_constant600000F6 +// CHECK:STDOUT: inst60000133: symbolic_constant600000F7 +// CHECK:STDOUT: inst60000134: symbolic_constant600000F8 +// CHECK:STDOUT: inst60000135: symbolic_constant600000F9 +// CHECK:STDOUT: inst60000136: symbolic_constant600000FA +// CHECK:STDOUT: inst60000137: symbolic_constant600000FB +// CHECK:STDOUT: inst60000138: symbolic_constant600000FC +// CHECK:STDOUT: inst60000139: symbolic_constant600000FD +// CHECK:STDOUT: inst6000013A: symbolic_constant600000FE +// CHECK:STDOUT: inst6000013B: symbolic_constant600000FF +// CHECK:STDOUT: inst6000013C: symbolic_constant60000100 +// CHECK:STDOUT: inst6000013D: symbolic_constant60000101 +// CHECK:STDOUT: inst6000013E: symbolic_constant60000102 +// CHECK:STDOUT: inst6000013F: symbolic_constant60000103 +// CHECK:STDOUT: inst60000140: symbolic_constant60000104 +// CHECK:STDOUT: inst60000141: symbolic_constant60000106 // CHECK:STDOUT: inst60000142: symbolic_constant60000107 -// CHECK:STDOUT: inst60000143: symbolic_constant60000106 -// CHECK:STDOUT: inst60000144: symbolic_constant60000107 -// CHECK:STDOUT: inst60000146: symbolic_constant6000000F -// CHECK:STDOUT: inst6000014A: concrete_constant(inst6000014B) -// CHECK:STDOUT: inst6000014B: concrete_constant(inst6000014B) -// CHECK:STDOUT: inst6000014C: concrete_constant(inst6000014B) +// CHECK:STDOUT: inst60000143: symbolic_constant60000108 +// CHECK:STDOUT: inst60000144: symbolic_constant60000109 +// CHECK:STDOUT: inst60000145: symbolic_constant6000010D +// CHECK:STDOUT: inst60000146: symbolic_constant6000010A +// CHECK:STDOUT: inst60000147: symbolic_constant6000010B +// CHECK:STDOUT: inst60000148: symbolic_constant6000010C +// CHECK:STDOUT: inst60000149: symbolic_constant6000010D +// CHECK:STDOUT: inst6000014B: symbolic_constant6000010F +// CHECK:STDOUT: inst6000014C: symbolic_constant6000010E +// CHECK:STDOUT: inst6000014D: symbolic_constant6000010F +// CHECK:STDOUT: inst6000014F: symbolic_constant60000011 +// CHECK:STDOUT: inst60000153: concrete_constant(inst60000026) +// CHECK:STDOUT: inst60000154: concrete_constant(inst60000026) // CHECK:STDOUT: symbolic_constants: // CHECK:STDOUT: symbolic_constant0: {inst: inst60000013, generic: generic, index: generic_inst, kind: self} // CHECK:STDOUT: symbolic_constant1: {inst: inst60000015, generic: generic, index: generic_inst, kind: checked} @@ -1017,370 +1038,378 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: symbolic_constant4: {inst: inst6000001B, generic: generic60000000, index: generic_inst_in_decl1, kind: checked} // CHECK:STDOUT: symbolic_constant5: {inst: inst6000001E, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constant6: {inst: inst6000001E, generic: generic60000000, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant7: {inst: inst6000002A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant8: {inst: inst6000002A, generic: generic60000000, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant7: {inst: inst60000029, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant8: {inst: inst60000029, generic: generic60000000, index: generic_inst_in_decl3, kind: checked} // CHECK:STDOUT: symbolic_constant9: {inst: inst6000002D, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constantA: {inst: inst6000002D, generic: generic60000000, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constantB: {inst: inst60000038, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constantC: {inst: inst6000003A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constantD: {inst: inst6000003A, generic: generic60000000, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constantB: {inst: inst60000030, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constantC: {inst: inst60000030, generic: generic60000000, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constantD: {inst: inst6000003B, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constantE: {inst: inst6000003D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000000F: {inst: inst6000003D, generic: generic60000000, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000010: {inst: inst60000048, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000011: {inst: inst60000052, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000012: {inst: inst60000053, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000013: {inst: inst60000053, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000014: {inst: inst60000048, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000015: {inst: inst60000052, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000016: {inst: inst60000048, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000017: {inst: inst60000052, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000018: {inst: inst60000053, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000019: {inst: inst6000005F, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001A: {inst: inst60000060, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001B: {inst: inst60000061, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001C: {inst: inst60000061, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001D: {inst: inst6000005F, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001E: {inst: inst6000005F, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001F: {inst: inst60000060, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000020: {inst: inst60000061, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000021: {inst: inst60000069, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000022: {inst: inst60000069, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000023: {inst: inst6000005F, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000024: {inst: inst60000060, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000025: {inst: inst60000061, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000026: {inst: inst60000069, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000027: {inst: inst6000006F, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000028: {inst: inst60000070, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000029: {inst: inst60000070, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002A: {inst: inst6000006F, generic: generic60000002, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002B: {inst: inst60000071, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002C: {inst: inst60000071, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002D: {inst: inst60000070, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002E: {inst: inst6000006F, generic: generic60000002, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002F: {inst: inst60000070, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000030: {inst: inst6000005F, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000031: {inst: inst60000060, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000032: {inst: inst60000061, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000033: {inst: inst6000005F, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000034: {inst: inst60000060, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000035: {inst: inst60000061, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000036: {inst: inst60000071, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000037: {inst: inst6000007D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000038: {inst: inst6000007D, generic: generic60000003, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000039: {inst: inst6000007E, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003A: {inst: inst6000007E, generic: generic60000003, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003B: {inst: inst6000007F, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003C: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003D: {inst: inst60000080, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003E: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003F: {inst: inst60000081, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000040: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000041: {inst: inst60000082, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000042: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000043: {inst: inst6000007D, generic: generic60000003, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000044: {inst: inst6000007E, generic: generic60000003, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000045: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000046: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000047: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000048: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000049: {inst: inst60000089, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004A: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004B: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004C: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004D: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004E: {inst: inst600000A2, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004F: {inst: inst600000A2, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000050: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000051: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000052: {inst: inst600000A2, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000053: {inst: inst600000A7, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000054: {inst: inst600000A8, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000055: {inst: inst600000A8, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000056: {inst: inst600000A7, generic: generic60000004, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000057: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000058: {inst: inst600000A8, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000059: {inst: inst6000003D, generic: generic60000004, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005A: {inst: inst600000A7, generic: generic60000004, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005B: {inst: inst600000A8, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005C: {inst: inst6000003D, generic: generic60000004, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005D: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005E: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000000F: {inst: inst6000003D, generic: generic60000000, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000010: {inst: inst60000040, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000011: {inst: inst60000040, generic: generic60000000, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000012: {inst: inst6000004B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000013: {inst: inst60000055, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000014: {inst: inst60000056, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000015: {inst: inst60000056, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000016: {inst: inst6000004B, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000017: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000018: {inst: inst6000004B, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000019: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001A: {inst: inst60000056, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001B: {inst: inst60000062, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001C: {inst: inst60000063, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001D: {inst: inst60000064, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001E: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001F: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000020: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000021: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000022: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000023: {inst: inst6000006C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000024: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000025: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000026: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000027: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000028: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000029: {inst: inst60000072, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002A: {inst: inst60000073, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002B: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002C: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002D: {inst: inst60000074, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002E: {inst: inst60000074, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002F: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000030: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000031: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000032: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000033: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000034: {inst: inst60000064, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000035: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000036: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000037: {inst: inst60000064, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000038: {inst: inst60000074, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000039: {inst: inst60000080, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003A: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003B: {inst: inst60000081, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003C: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003D: {inst: inst60000082, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003E: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003F: {inst: inst60000083, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000040: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000041: {inst: inst60000084, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000042: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000043: {inst: inst60000085, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000044: {inst: inst60000085, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000045: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000046: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000047: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000048: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000049: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004A: {inst: inst60000085, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004B: {inst: inst6000008C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004C: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004D: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004E: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004F: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000050: {inst: inst600000A5, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000051: {inst: inst600000A5, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000052: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000053: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000054: {inst: inst600000A5, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000055: {inst: inst600000AA, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000056: {inst: inst600000AB, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000057: {inst: inst600000AB, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000058: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000059: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005A: {inst: inst600000AB, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005B: {inst: inst60000040, generic: generic60000004, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005C: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005D: {inst: inst600000AB, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005E: {inst: inst60000040, generic: generic60000004, index: generic_inst_in_def2, kind: checked} // CHECK:STDOUT: symbolic_constant6000005F: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} // CHECK:STDOUT: symbolic_constant60000060: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000061: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000062: {inst: inst600000BE, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000063: {inst: inst600000BF, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000064: {inst: inst600000C0, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000065: {inst: inst600000C0, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000066: {inst: inst6000005F, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000067: {inst: inst600000BE, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000068: {inst: inst6000005F, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000069: {inst: inst600000BE, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006A: {inst: inst60000060, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006B: {inst: inst600000BF, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006C: {inst: inst600000C0, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006D: {inst: inst600000C9, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006E: {inst: inst600000C9, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006F: {inst: inst6000005F, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000070: {inst: inst600000BE, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000071: {inst: inst60000060, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000072: {inst: inst600000BF, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000073: {inst: inst600000C0, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000074: {inst: inst600000C9, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000075: {inst: inst600000D1, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000076: {inst: inst600000D2, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000077: {inst: inst600000D2, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000078: {inst: inst600000D1, generic: generic60000006, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000079: {inst: inst600000D3, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007A: {inst: inst600000D3, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007B: {inst: inst600000D2, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007C: {inst: inst600000D1, generic: generic60000006, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007D: {inst: inst600000D2, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007E: {inst: inst6000005F, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007F: {inst: inst60000060, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000080: {inst: inst600000BE, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000081: {inst: inst600000BF, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000082: {inst: inst600000C0, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000083: {inst: inst6000005F, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000084: {inst: inst60000060, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000085: {inst: inst600000BE, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000086: {inst: inst600000BF, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000087: {inst: inst600000C0, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000088: {inst: inst600000D3, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000089: {inst: inst600000E2, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008A: {inst: inst600000E2, generic: generic60000007, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008B: {inst: inst6000007E, generic: generic60000007, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008C: {inst: inst6000007F, generic: generic60000007, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008D: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008E: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008F: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000090: {inst: inst600000E3, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000091: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant60000092: {inst: inst600000E4, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000093: {inst: inst600000E4, generic: generic60000007, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant60000094: {inst: inst600000E5, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000095: {inst: inst600000E5, generic: generic60000007, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant60000096: {inst: inst600000E6, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000097: {inst: inst600000E6, generic: generic60000007, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant60000098: {inst: inst600000E7, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000099: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009A: {inst: inst600000E2, generic: generic60000007, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009B: {inst: inst6000007E, generic: generic60000007, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009C: {inst: inst6000007F, generic: generic60000007, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009D: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009E: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009F: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A0: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A1: {inst: inst600000E4, generic: generic60000007, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A2: {inst: inst600000E5, generic: generic60000007, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A3: {inst: inst600000E6, generic: generic60000007, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A4: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A5: {inst: inst600000F3, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A6: {inst: inst600000F6, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A7: {inst: inst600000F7, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A8: {inst: inst600000F8, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A9: {inst: inst600000F8, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AA: {inst: inst6000005F, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AB: {inst: inst600000BE, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AC: {inst: inst600000F6, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AD: {inst: inst6000005F, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AE: {inst: inst600000BE, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AF: {inst: inst600000F6, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B0: {inst: inst60000060, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B1: {inst: inst600000BF, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B2: {inst: inst600000F7, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B3: {inst: inst600000F8, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B4: {inst: inst60000103, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B5: {inst: inst60000103, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B6: {inst: inst6000005F, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B7: {inst: inst600000BE, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B8: {inst: inst600000F6, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B9: {inst: inst60000060, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BA: {inst: inst600000BF, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BB: {inst: inst600000F7, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BC: {inst: inst600000F8, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BD: {inst: inst60000103, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BE: {inst: inst6000010D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BF: {inst: inst6000010E, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C0: {inst: inst6000010E, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C1: {inst: inst6000010D, generic: generic60000008, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C2: {inst: inst6000010F, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C3: {inst: inst6000010F, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C4: {inst: inst6000010E, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C5: {inst: inst6000010D, generic: generic60000008, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C6: {inst: inst6000010E, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C7: {inst: inst6000005F, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C8: {inst: inst60000060, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C9: {inst: inst600000BE, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CA: {inst: inst600000BF, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CB: {inst: inst600000F6, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CC: {inst: inst600000F7, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CD: {inst: inst600000F8, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CE: {inst: inst6000005F, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CF: {inst: inst60000060, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D0: {inst: inst600000BE, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D1: {inst: inst600000BF, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D2: {inst: inst600000F6, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D3: {inst: inst600000F7, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D4: {inst: inst600000F8, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D5: {inst: inst6000010F, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D6: {inst: inst60000121, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D7: {inst: inst60000121, generic: generic60000009, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D8: {inst: inst6000007E, generic: generic60000009, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D9: {inst: inst6000007F, generic: generic60000009, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DA: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DB: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DC: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DD: {inst: inst600000E3, generic: generic60000009, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DE: {inst: inst600000E4, generic: generic60000009, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DF: {inst: inst600000E5, generic: generic60000009, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E0: {inst: inst600000E6, generic: generic60000009, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E1: {inst: inst600000E7, generic: generic60000009, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E2: {inst: inst60000122, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E3: {inst: inst60000122, generic: generic60000009, index: generic_inst_in_def11, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E4: {inst: inst60000123, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E5: {inst: inst60000123, generic: generic60000009, index: generic_inst_in_def12, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E6: {inst: inst60000124, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E7: {inst: inst60000124, generic: generic60000009, index: generic_inst_in_def13, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E8: {inst: inst60000125, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E9: {inst: inst60000125, generic: generic60000009, index: generic_inst_in_def14, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EA: {inst: inst60000126, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EB: {inst: inst60000126, generic: generic60000009, index: generic_inst_in_def15, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EC: {inst: inst60000121, generic: generic60000009, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000ED: {inst: inst6000007E, generic: generic60000009, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EE: {inst: inst6000007F, generic: generic60000009, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EF: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F0: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F1: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F2: {inst: inst600000E3, generic: generic60000009, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F3: {inst: inst600000E4, generic: generic60000009, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F4: {inst: inst600000E5, generic: generic60000009, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F5: {inst: inst600000E6, generic: generic60000009, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F6: {inst: inst600000E7, generic: generic60000009, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F7: {inst: inst60000122, generic: generic60000009, index: generic_inst_in_def11, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F8: {inst: inst60000123, generic: generic60000009, index: generic_inst_in_def12, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F9: {inst: inst60000124, generic: generic60000009, index: generic_inst_in_def13, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FA: {inst: inst60000125, generic: generic60000009, index: generic_inst_in_def14, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FB: {inst: inst60000126, generic: generic60000009, index: generic_inst_in_def15, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FC: {inst: inst60000137, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FD: {inst: inst600000A2, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FE: {inst: inst60000138, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FF: {inst: inst60000138, generic: generic60000000, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000100: {inst: inst6000013A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000101: {inst: inst6000013B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000102: {inst: inst6000013D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000103: {inst: inst6000013A, generic: generic60000000, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000104: {inst: inst6000013B, generic: generic60000000, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000105: {inst: inst6000013D, generic: generic60000000, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000106: {inst: inst60000143, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000107: {inst: inst60000143, generic: generic60000000, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000061: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000062: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000063: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000064: {inst: inst600000C1, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000065: {inst: inst600000C2, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000066: {inst: inst600000C3, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000067: {inst: inst600000C3, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000068: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000069: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006A: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006B: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006C: {inst: inst600000CB, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006D: {inst: inst600000CB, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006E: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006F: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000070: {inst: inst600000C3, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000071: {inst: inst600000CE, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000072: {inst: inst600000CE, generic: generic60000006, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000073: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000074: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000075: {inst: inst600000CB, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000076: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000077: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000078: {inst: inst600000C3, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000079: {inst: inst600000CE, generic: generic60000006, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007A: {inst: inst600000D7, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007B: {inst: inst600000D8, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007C: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007D: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007E: {inst: inst600000D9, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007F: {inst: inst600000D9, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000080: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000081: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000082: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000083: {inst: inst60000062, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000084: {inst: inst60000063, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000085: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000086: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000087: {inst: inst600000C3, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000088: {inst: inst60000062, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000089: {inst: inst60000063, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008A: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008B: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008C: {inst: inst600000C3, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008D: {inst: inst600000D9, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008E: {inst: inst600000E8, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008F: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000090: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000091: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000092: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000093: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000094: {inst: inst60000085, generic: generic60000007, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000095: {inst: inst600000E9, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000096: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000097: {inst: inst600000EA, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000098: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant60000099: {inst: inst600000EB, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009A: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009B: {inst: inst600000EC, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009C: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009D: {inst: inst600000ED, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009E: {inst: inst600000ED, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009F: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A0: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A1: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A2: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A3: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A4: {inst: inst60000085, generic: generic60000007, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A5: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A6: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A7: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A8: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A9: {inst: inst600000ED, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AA: {inst: inst600000F9, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AB: {inst: inst600000FC, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AC: {inst: inst600000FD, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AD: {inst: inst600000FE, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AE: {inst: inst600000FE, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AF: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B0: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B1: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B2: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B3: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B4: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B5: {inst: inst60000108, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B6: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B7: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B8: {inst: inst600000C2, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B9: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BA: {inst: inst600000FE, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BB: {inst: inst6000010B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BC: {inst: inst6000010B, generic: generic60000008, index: generic_inst_in_decl8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BD: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BE: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BF: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C0: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C1: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C2: {inst: inst600000C2, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C3: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C4: {inst: inst600000FE, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C5: {inst: inst6000010B, generic: generic60000008, index: generic_inst_in_decl8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C6: {inst: inst60000116, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C7: {inst: inst60000117, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C8: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C9: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CA: {inst: inst60000118, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CB: {inst: inst60000118, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CC: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CD: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CE: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CF: {inst: inst60000062, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D0: {inst: inst60000063, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D1: {inst: inst600000C1, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D2: {inst: inst600000C2, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D3: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D4: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D5: {inst: inst600000FE, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D6: {inst: inst60000062, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D7: {inst: inst60000063, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D8: {inst: inst600000C1, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D9: {inst: inst600000C2, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DA: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DB: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DC: {inst: inst600000FE, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DD: {inst: inst60000118, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DE: {inst: inst6000012A, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DF: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E0: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E1: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E2: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E3: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E4: {inst: inst60000085, generic: generic60000009, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E5: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E6: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E7: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E8: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E9: {inst: inst600000ED, generic: generic60000009, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EA: {inst: inst6000012B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EB: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def11, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EC: {inst: inst6000012C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000ED: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def12, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EE: {inst: inst6000012D, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EF: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def13, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F0: {inst: inst6000012E, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F1: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def14, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F2: {inst: inst6000012F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F3: {inst: inst6000012F, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F4: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F5: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F6: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F7: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F8: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F9: {inst: inst60000085, generic: generic60000009, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FA: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FB: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FC: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FD: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FE: {inst: inst600000ED, generic: generic60000009, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FF: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def11, kind: checked} +// CHECK:STDOUT: symbolic_constant60000100: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def12, kind: checked} +// CHECK:STDOUT: symbolic_constant60000101: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def13, kind: checked} +// CHECK:STDOUT: symbolic_constant60000102: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def14, kind: checked} +// CHECK:STDOUT: symbolic_constant60000103: {inst: inst6000012F, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant60000104: {inst: inst60000140, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000105: {inst: inst600000A5, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000106: {inst: inst60000141, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000107: {inst: inst60000141, generic: generic60000000, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000108: {inst: inst60000143, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000109: {inst: inst60000144, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010A: {inst: inst60000146, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010B: {inst: inst60000143, generic: generic60000000, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010C: {inst: inst60000144, generic: generic60000000, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010D: {inst: inst60000146, generic: generic60000000, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010E: {inst: inst6000014C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010F: {inst: inst6000014C, generic: generic60000000, index: generic_inst_in_def6, kind: checked} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst60000035 +// CHECK:STDOUT: 0: inst60000038 // CHECK:STDOUT: imports: // CHECK:STDOUT: 0: inst60000010 -// CHECK:STDOUT: 1: inst60000045 -// CHECK:STDOUT: 2: inst60000046 -// CHECK:STDOUT: 3: inst60000049 -// CHECK:STDOUT: 4: inst6000004A -// CHECK:STDOUT: 5: inst6000004B -// CHECK:STDOUT: 6: inst6000004D -// CHECK:STDOUT: 7: inst6000004F -// CHECK:STDOUT: 8: inst60000054 -// CHECK:STDOUT: 9: inst60000055 -// CHECK:STDOUT: 10: inst60000056 -// CHECK:STDOUT: 11: inst60000057 -// CHECK:STDOUT: 12: inst60000058 -// CHECK:STDOUT: 13: inst6000005D -// CHECK:STDOUT: 14: inst6000005E -// CHECK:STDOUT: 15: inst60000063 -// CHECK:STDOUT: 16: inst60000064 -// CHECK:STDOUT: 17: inst60000065 -// CHECK:STDOUT: 18: inst60000066 -// CHECK:STDOUT: 19: inst60000067 -// CHECK:STDOUT: 20: inst60000068 -// CHECK:STDOUT: 21: inst6000006E -// CHECK:STDOUT: 22: inst60000072 -// CHECK:STDOUT: 23: inst60000073 -// CHECK:STDOUT: 24: inst60000074 -// CHECK:STDOUT: 25: inst60000075 -// CHECK:STDOUT: 26: inst60000076 -// CHECK:STDOUT: 27: inst6000008A -// CHECK:STDOUT: 28: inst6000008B -// CHECK:STDOUT: 29: inst6000008C -// CHECK:STDOUT: 30: inst6000008D -// CHECK:STDOUT: 31: inst6000008E -// CHECK:STDOUT: 32: inst6000008F -// CHECK:STDOUT: 33: inst60000090 -// CHECK:STDOUT: 34: inst60000091 -// CHECK:STDOUT: 35: inst60000092 -// CHECK:STDOUT: 36: inst60000093 -// CHECK:STDOUT: 37: inst60000094 -// CHECK:STDOUT: 38: inst60000095 -// CHECK:STDOUT: 39: inst60000096 -// CHECK:STDOUT: 40: inst60000097 -// CHECK:STDOUT: 41: inst60000098 -// CHECK:STDOUT: 42: inst60000099 -// CHECK:STDOUT: 43: inst6000009A -// CHECK:STDOUT: 44: inst6000009B -// CHECK:STDOUT: 45: inst6000009C -// CHECK:STDOUT: 46: inst6000009D -// CHECK:STDOUT: 47: inst6000009E -// CHECK:STDOUT: 48: inst6000009F -// CHECK:STDOUT: 49: inst600000A0 -// CHECK:STDOUT: 50: inst600000A1 -// CHECK:STDOUT: 51: inst600000A6 -// CHECK:STDOUT: 52: inst600000A9 -// CHECK:STDOUT: 53: inst600000AA -// CHECK:STDOUT: 54: inst600000AB -// CHECK:STDOUT: 55: inst600000AC -// CHECK:STDOUT: 56: inst600000AD -// CHECK:STDOUT: 57: inst600000B4 -// CHECK:STDOUT: 58: inst600000B5 -// CHECK:STDOUT: 59: inst600000B6 -// CHECK:STDOUT: 60: inst600000B7 -// CHECK:STDOUT: 61: inst600000B8 -// CHECK:STDOUT: 62: inst600000B9 -// CHECK:STDOUT: 63: inst600000BA -// CHECK:STDOUT: 64: inst600000BB -// CHECK:STDOUT: 65: inst600000BC -// CHECK:STDOUT: 66: inst600000BD -// CHECK:STDOUT: 67: inst600000C1 -// CHECK:STDOUT: 68: inst600000C2 -// CHECK:STDOUT: 69: inst600000C3 -// CHECK:STDOUT: 70: inst600000C4 -// CHECK:STDOUT: 71: inst600000C5 -// CHECK:STDOUT: 72: inst600000C6 -// CHECK:STDOUT: 73: inst600000C7 -// CHECK:STDOUT: 74: inst600000C8 -// CHECK:STDOUT: 75: inst600000D0 -// CHECK:STDOUT: 76: inst600000D4 -// CHECK:STDOUT: 77: inst600000D5 -// CHECK:STDOUT: 78: inst600000D6 -// CHECK:STDOUT: 79: inst600000D7 -// CHECK:STDOUT: 80: inst600000D8 -// CHECK:STDOUT: 81: inst600000D9 -// CHECK:STDOUT: 82: inst600000F4 -// CHECK:STDOUT: 83: inst600000F5 -// CHECK:STDOUT: 84: inst600000F9 -// CHECK:STDOUT: 85: inst600000FA -// CHECK:STDOUT: 86: inst600000FB -// CHECK:STDOUT: 87: inst600000FC -// CHECK:STDOUT: 88: inst600000FD -// CHECK:STDOUT: 89: inst600000FE -// CHECK:STDOUT: 90: inst600000FF -// CHECK:STDOUT: 91: inst60000100 -// CHECK:STDOUT: 92: inst60000101 -// CHECK:STDOUT: 93: inst60000102 -// CHECK:STDOUT: 94: inst6000010C -// CHECK:STDOUT: 95: inst60000110 -// CHECK:STDOUT: 96: inst60000111 -// CHECK:STDOUT: 97: inst60000112 -// CHECK:STDOUT: 98: inst60000113 -// CHECK:STDOUT: 99: inst60000114 -// CHECK:STDOUT: 100: inst60000115 -// CHECK:STDOUT: 101: inst60000116 +// CHECK:STDOUT: 1: inst60000048 +// CHECK:STDOUT: 2: inst60000049 +// CHECK:STDOUT: 3: inst6000004C +// CHECK:STDOUT: 4: inst6000004D +// CHECK:STDOUT: 5: inst6000004E +// CHECK:STDOUT: 6: inst60000050 +// CHECK:STDOUT: 7: inst60000052 +// CHECK:STDOUT: 8: inst60000057 +// CHECK:STDOUT: 9: inst60000058 +// CHECK:STDOUT: 10: inst60000059 +// CHECK:STDOUT: 11: inst6000005A +// CHECK:STDOUT: 12: inst6000005B +// CHECK:STDOUT: 13: inst60000060 +// CHECK:STDOUT: 14: inst60000061 +// CHECK:STDOUT: 15: inst60000066 +// CHECK:STDOUT: 16: inst60000067 +// CHECK:STDOUT: 17: inst60000068 +// CHECK:STDOUT: 18: inst60000069 +// CHECK:STDOUT: 19: inst6000006A +// CHECK:STDOUT: 20: inst6000006B +// CHECK:STDOUT: 21: inst60000071 +// CHECK:STDOUT: 22: inst60000075 +// CHECK:STDOUT: 23: inst60000076 +// CHECK:STDOUT: 24: inst60000077 +// CHECK:STDOUT: 25: inst60000078 +// CHECK:STDOUT: 26: inst60000079 +// CHECK:STDOUT: 27: inst6000008D +// CHECK:STDOUT: 28: inst6000008E +// CHECK:STDOUT: 29: inst6000008F +// CHECK:STDOUT: 30: inst60000090 +// CHECK:STDOUT: 31: inst60000091 +// CHECK:STDOUT: 32: inst60000092 +// CHECK:STDOUT: 33: inst60000093 +// CHECK:STDOUT: 34: inst60000094 +// CHECK:STDOUT: 35: inst60000095 +// CHECK:STDOUT: 36: inst60000096 +// CHECK:STDOUT: 37: inst60000097 +// CHECK:STDOUT: 38: inst60000098 +// CHECK:STDOUT: 39: inst60000099 +// CHECK:STDOUT: 40: inst6000009A +// CHECK:STDOUT: 41: inst6000009B +// CHECK:STDOUT: 42: inst6000009C +// CHECK:STDOUT: 43: inst6000009D +// CHECK:STDOUT: 44: inst6000009E +// CHECK:STDOUT: 45: inst6000009F +// CHECK:STDOUT: 46: inst600000A0 +// CHECK:STDOUT: 47: inst600000A1 +// CHECK:STDOUT: 48: inst600000A2 +// CHECK:STDOUT: 49: inst600000A3 +// CHECK:STDOUT: 50: inst600000A4 +// CHECK:STDOUT: 51: inst600000A9 +// CHECK:STDOUT: 52: inst600000AC +// CHECK:STDOUT: 53: inst600000AD +// CHECK:STDOUT: 54: inst600000AE +// CHECK:STDOUT: 55: inst600000AF +// CHECK:STDOUT: 56: inst600000B0 +// CHECK:STDOUT: 57: inst600000B7 +// CHECK:STDOUT: 58: inst600000B8 +// CHECK:STDOUT: 59: inst600000B9 +// CHECK:STDOUT: 60: inst600000BA +// CHECK:STDOUT: 61: inst600000BB +// CHECK:STDOUT: 62: inst600000BC +// CHECK:STDOUT: 63: inst600000BD +// CHECK:STDOUT: 64: inst600000BE +// CHECK:STDOUT: 65: inst600000BF +// CHECK:STDOUT: 66: inst600000C0 +// CHECK:STDOUT: 67: inst600000C4 +// CHECK:STDOUT: 68: inst600000C5 +// CHECK:STDOUT: 69: inst600000C6 +// CHECK:STDOUT: 70: inst600000C7 +// CHECK:STDOUT: 71: inst600000C8 +// CHECK:STDOUT: 72: inst600000C9 +// CHECK:STDOUT: 73: inst600000CC +// CHECK:STDOUT: 74: inst600000CD +// CHECK:STDOUT: 75: inst600000D6 +// CHECK:STDOUT: 76: inst600000DA +// CHECK:STDOUT: 77: inst600000DB +// CHECK:STDOUT: 78: inst600000DC +// CHECK:STDOUT: 79: inst600000DD +// CHECK:STDOUT: 80: inst600000DE +// CHECK:STDOUT: 81: inst600000DF +// CHECK:STDOUT: 82: inst600000FA +// CHECK:STDOUT: 83: inst600000FB +// CHECK:STDOUT: 84: inst600000FF +// CHECK:STDOUT: 85: inst60000100 +// CHECK:STDOUT: 86: inst60000101 +// CHECK:STDOUT: 87: inst60000102 +// CHECK:STDOUT: 88: inst60000103 +// CHECK:STDOUT: 89: inst60000104 +// CHECK:STDOUT: 90: inst60000105 +// CHECK:STDOUT: 91: inst60000106 +// CHECK:STDOUT: 92: inst60000109 +// CHECK:STDOUT: 93: inst6000010A +// CHECK:STDOUT: 94: inst60000115 +// CHECK:STDOUT: 95: inst60000119 +// CHECK:STDOUT: 96: inst6000011A +// CHECK:STDOUT: 97: inst6000011B +// CHECK:STDOUT: 98: inst6000011C +// CHECK:STDOUT: 99: inst6000011D +// CHECK:STDOUT: 100: inst6000011E +// CHECK:STDOUT: 101: inst6000011F // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: // CHECK:STDOUT: 0: inst60000012 @@ -1398,407 +1427,433 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 0: inst(TypeType) // CHECK:STDOUT: 1: inst60000024 // CHECK:STDOUT: inst_block6000000A: -// CHECK:STDOUT: 0: inst60000023 -// CHECK:STDOUT: 1: inst60000029 +// CHECK:STDOUT: 0: inst6000001B +// CHECK:STDOUT: 1: inst60000026 // CHECK:STDOUT: inst_block6000000B: +// CHECK:STDOUT: 0: inst6000001C +// CHECK:STDOUT: 1: inst60000026 +// CHECK:STDOUT: inst_block6000000C: +// CHECK:STDOUT: 0: inst6000001B +// CHECK:STDOUT: 1: inst6000002C +// CHECK:STDOUT: inst_block6000000D: // CHECK:STDOUT: 0: inst6000001B // CHECK:STDOUT: 1: inst60000024 -// CHECK:STDOUT: inst_block6000000C: +// CHECK:STDOUT: inst_block6000000E: // CHECK:STDOUT: 0: inst6000001C // CHECK:STDOUT: 1: inst60000024 -// CHECK:STDOUT: inst_block6000000D: -// CHECK:STDOUT: 0: inst60000031 -// CHECK:STDOUT: 1: inst60000033 -// CHECK:STDOUT: inst_block6000000E: +// CHECK:STDOUT: inst_block6000000F: +// CHECK:STDOUT: 0: inst60000034 +// CHECK:STDOUT: 1: inst60000036 +// CHECK:STDOUT: inst_block60000010: // CHECK:STDOUT: 0: inst60000018 // CHECK:STDOUT: 1: inst6000001F // CHECK:STDOUT: 2: inst60000021 -// CHECK:STDOUT: 3: inst6000002E -// CHECK:STDOUT: 4: inst60000030 -// CHECK:STDOUT: inst_block6000000F: +// CHECK:STDOUT: 3: inst60000031 +// CHECK:STDOUT: 4: inst60000033 +// CHECK:STDOUT: inst_block60000011: // CHECK:STDOUT: 0: inst60000022 // CHECK:STDOUT: 1: inst60000023 // CHECK:STDOUT: 2: inst60000025 -// CHECK:STDOUT: 3: inst60000027 -// CHECK:STDOUT: 4: inst60000029 -// CHECK:STDOUT: 5: inst6000002B +// CHECK:STDOUT: 3: inst60000028 +// CHECK:STDOUT: 4: inst6000002C +// CHECK:STDOUT: 5: inst6000002E // CHECK:STDOUT: 6: inst60000012 // CHECK:STDOUT: 7: inst60000014 -// CHECK:STDOUT: 8: inst60000031 -// CHECK:STDOUT: 9: inst60000032 +// CHECK:STDOUT: 8: inst60000034 +// CHECK:STDOUT: 9: inst60000035 // CHECK:STDOUT: 10: inst6000001D -// CHECK:STDOUT: 11: inst60000033 -// CHECK:STDOUT: 12: inst60000034 -// CHECK:STDOUT: inst_block60000010: -// CHECK:STDOUT: 0: inst60000014 -// CHECK:STDOUT: inst_block60000011: -// CHECK:STDOUT: 0: inst60000015 +// CHECK:STDOUT: 11: inst60000036 +// CHECK:STDOUT: 12: inst60000037 // CHECK:STDOUT: inst_block60000012: +// CHECK:STDOUT: 0: inst60000014 +// CHECK:STDOUT: inst_block60000013: +// CHECK:STDOUT: 0: inst60000015 +// CHECK:STDOUT: inst_block60000014: // CHECK:STDOUT: 0: inst60000016 // CHECK:STDOUT: 1: inst6000001C // CHECK:STDOUT: 2: inst60000020 -// CHECK:STDOUT: 3: inst6000002C +// CHECK:STDOUT: 3: inst6000002A // CHECK:STDOUT: 4: inst6000002F -// CHECK:STDOUT: inst_block60000013: +// CHECK:STDOUT: 5: inst60000032 +// CHECK:STDOUT: inst_block60000015: // CHECK:STDOUT: 0: inst60000015 // CHECK:STDOUT: 1: inst6000001B // CHECK:STDOUT: 2: inst6000001E -// CHECK:STDOUT: 3: inst6000002A +// CHECK:STDOUT: 3: inst60000029 // CHECK:STDOUT: 4: inst6000002D -// CHECK:STDOUT: inst_block60000014: -// CHECK:STDOUT: 0: inst6000003F -// CHECK:STDOUT: 1: inst60000040 -// CHECK:STDOUT: 2: inst60000041 -// CHECK:STDOUT: 3: inst6000013C -// CHECK:STDOUT: 4: inst60000141 -// CHECK:STDOUT: 5: inst60000142 -// CHECK:STDOUT: 6: inst60000145 -// CHECK:STDOUT: 7: inst60000147 -// CHECK:STDOUT: 8: inst60000043 -// CHECK:STDOUT: 9: inst60000148 -// CHECK:STDOUT: 10: inst60000149 -// CHECK:STDOUT: 11: inst6000014A -// CHECK:STDOUT: 12: inst6000014C -// CHECK:STDOUT: 13: inst6000014D -// CHECK:STDOUT: 14: inst6000014E -// CHECK:STDOUT: 15: inst6000014F -// CHECK:STDOUT: inst_block60000015: -// CHECK:STDOUT: 0: inst6000003F -// CHECK:STDOUT: 1: inst60000040 +// CHECK:STDOUT: 5: inst60000030 // CHECK:STDOUT: inst_block60000016: -// CHECK:STDOUT: 0: inst6000004B +// CHECK:STDOUT: 0: inst60000042 +// CHECK:STDOUT: 1: inst60000043 +// CHECK:STDOUT: 2: inst60000044 +// CHECK:STDOUT: 3: inst60000145 +// CHECK:STDOUT: 4: inst6000014A +// CHECK:STDOUT: 5: inst6000014B +// CHECK:STDOUT: 6: inst6000014E +// CHECK:STDOUT: 7: inst60000150 +// CHECK:STDOUT: 8: inst60000046 +// CHECK:STDOUT: 9: inst60000151 +// CHECK:STDOUT: 10: inst60000152 +// CHECK:STDOUT: 11: inst60000153 +// CHECK:STDOUT: 12: inst60000154 +// CHECK:STDOUT: 13: inst60000155 +// CHECK:STDOUT: 14: inst60000156 +// CHECK:STDOUT: 15: inst60000157 // CHECK:STDOUT: inst_block60000017: -// CHECK:STDOUT: 0: inst60000057 +// CHECK:STDOUT: 0: inst60000042 +// CHECK:STDOUT: 1: inst60000043 // CHECK:STDOUT: inst_block60000018: -// CHECK:STDOUT: 0: inst60000058 +// CHECK:STDOUT: 0: inst6000004E // CHECK:STDOUT: inst_block60000019: -// CHECK:STDOUT: 0: inst60000059 -// CHECK:STDOUT: 1: inst6000005A -// CHECK:STDOUT: 2: inst6000005B +// CHECK:STDOUT: 0: inst6000005A // CHECK:STDOUT: inst_block6000001A: -// CHECK:STDOUT: 0: inst60000048 +// CHECK:STDOUT: 0: inst6000005B // CHECK:STDOUT: inst_block6000001B: -// CHECK:STDOUT: 0: inst60000048 -// CHECK:STDOUT: 1: inst60000052 -// CHECK:STDOUT: 2: inst60000053 +// CHECK:STDOUT: 0: inst6000005C +// CHECK:STDOUT: 1: inst6000005D +// CHECK:STDOUT: 2: inst6000005E // CHECK:STDOUT: inst_block6000001C: -// CHECK:STDOUT: 0: inst60000063 +// CHECK:STDOUT: 0: inst6000004B // CHECK:STDOUT: inst_block6000001D: -// CHECK:STDOUT: 0: inst60000064 +// CHECK:STDOUT: 0: inst6000004B +// CHECK:STDOUT: 1: inst60000055 +// CHECK:STDOUT: 2: inst60000056 // CHECK:STDOUT: inst_block6000001E: -// CHECK:STDOUT: 0: inst60000067 +// CHECK:STDOUT: 0: inst60000066 // CHECK:STDOUT: inst_block6000001F: -// CHECK:STDOUT: 0: inst6000005F +// CHECK:STDOUT: 0: inst60000067 // CHECK:STDOUT: inst_block60000020: // CHECK:STDOUT: 0: inst6000006A // CHECK:STDOUT: inst_block60000021: -// CHECK:STDOUT: 0: inst6000006A -// CHECK:STDOUT: 1: inst6000006B -// CHECK:STDOUT: 2: inst6000006C -// CHECK:STDOUT: 3: inst6000006D +// CHECK:STDOUT: 0: inst60000062 // CHECK:STDOUT: inst_block60000022: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst60000060 -// CHECK:STDOUT: 2: inst60000061 -// CHECK:STDOUT: 3: inst60000069 +// CHECK:STDOUT: 0: inst6000006D // CHECK:STDOUT: inst_block60000023: -// CHECK:STDOUT: 0: inst60000075 +// CHECK:STDOUT: 0: inst6000006D +// CHECK:STDOUT: 1: inst6000006E +// CHECK:STDOUT: 2: inst6000006F +// CHECK:STDOUT: 3: inst60000070 // CHECK:STDOUT: inst_block60000024: -// CHECK:STDOUT: 0: inst60000076 +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst60000063 +// CHECK:STDOUT: 2: inst60000064 +// CHECK:STDOUT: 3: inst6000006C // CHECK:STDOUT: inst_block60000025: -// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 0: inst60000078 // CHECK:STDOUT: inst_block60000026: -// CHECK:STDOUT: 0: inst60000077 -// CHECK:STDOUT: 1: inst60000078 +// CHECK:STDOUT: 0: inst60000079 // CHECK:STDOUT: inst_block60000027: -// CHECK:STDOUT: 0: inst60000079 -// CHECK:STDOUT: 1: inst6000007A -// CHECK:STDOUT: 2: inst6000007B -// CHECK:STDOUT: 3: inst6000007C +// CHECK:STDOUT: 0: inst6000006D // CHECK:STDOUT: inst_block60000028: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst60000060 -// CHECK:STDOUT: 2: inst60000061 -// CHECK:STDOUT: 3: inst60000071 +// CHECK:STDOUT: 0: inst6000007A +// CHECK:STDOUT: 1: inst6000007B // CHECK:STDOUT: inst_block60000029: -// CHECK:STDOUT: 0: inst60000079 +// CHECK:STDOUT: 0: inst6000007C +// CHECK:STDOUT: 1: inst6000007D +// CHECK:STDOUT: 2: inst6000007E +// CHECK:STDOUT: 3: inst6000007F // CHECK:STDOUT: inst_block6000002A: -// CHECK:STDOUT: 0: inst60000083 -// CHECK:STDOUT: 1: inst60000084 -// CHECK:STDOUT: 2: inst60000085 -// CHECK:STDOUT: 3: inst60000086 -// CHECK:STDOUT: 4: inst60000087 -// CHECK:STDOUT: 5: inst60000088 +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst60000063 +// CHECK:STDOUT: 2: inst60000064 +// CHECK:STDOUT: 3: inst60000074 // CHECK:STDOUT: inst_block6000002B: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst60000060 -// CHECK:STDOUT: 2: inst60000089 +// CHECK:STDOUT: 0: inst6000007C // CHECK:STDOUT: inst_block6000002C: -// CHECK:STDOUT: 0: inst6000006F -// CHECK:STDOUT: 1: inst60000070 +// CHECK:STDOUT: 0: inst60000086 +// CHECK:STDOUT: 1: inst60000087 +// CHECK:STDOUT: 2: inst60000088 +// CHECK:STDOUT: 3: inst60000089 +// CHECK:STDOUT: 4: inst6000008A +// CHECK:STDOUT: 5: inst6000008B // CHECK:STDOUT: inst_block6000002D: -// CHECK:STDOUT: 0: inst6000009C +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst60000063 +// CHECK:STDOUT: 2: inst6000008C // CHECK:STDOUT: inst_block6000002E: -// CHECK:STDOUT: 0: inst6000009D +// CHECK:STDOUT: 0: inst60000072 +// CHECK:STDOUT: 1: inst60000073 // CHECK:STDOUT: inst_block6000002F: -// CHECK:STDOUT: 0: inst600000A0 +// CHECK:STDOUT: 0: inst6000009F // CHECK:STDOUT: inst_block60000030: -// CHECK:STDOUT: 0: inst600000A3 +// CHECK:STDOUT: 0: inst600000A0 // CHECK:STDOUT: inst_block60000031: // CHECK:STDOUT: 0: inst600000A3 -// CHECK:STDOUT: 1: inst600000A4 -// CHECK:STDOUT: 2: inst600000A5 // CHECK:STDOUT: inst_block60000032: +// CHECK:STDOUT: 0: inst600000A6 +// CHECK:STDOUT: inst_block60000033: +// CHECK:STDOUT: 0: inst600000A6 +// CHECK:STDOUT: 1: inst600000A7 +// CHECK:STDOUT: 2: inst600000A8 +// CHECK:STDOUT: inst_block60000034: // CHECK:STDOUT: 0: inst60000015 // CHECK:STDOUT: 1: inst6000001B -// CHECK:STDOUT: 2: inst600000A2 -// CHECK:STDOUT: inst_block60000033: -// CHECK:STDOUT: 0: inst600000AC -// CHECK:STDOUT: inst_block60000034: -// CHECK:STDOUT: 0: inst600000AD +// CHECK:STDOUT: 2: inst600000A5 // CHECK:STDOUT: inst_block60000035: -// CHECK:STDOUT: 0: inst600000A3 +// CHECK:STDOUT: 0: inst600000AF // CHECK:STDOUT: inst_block60000036: -// CHECK:STDOUT: 0: inst600000AE -// CHECK:STDOUT: 1: inst600000AF -// CHECK:STDOUT: 2: inst600000B0 +// CHECK:STDOUT: 0: inst600000B0 // CHECK:STDOUT: inst_block60000037: +// CHECK:STDOUT: 0: inst600000A6 +// CHECK:STDOUT: inst_block60000038: // CHECK:STDOUT: 0: inst600000B1 // CHECK:STDOUT: 1: inst600000B2 // CHECK:STDOUT: 2: inst600000B3 -// CHECK:STDOUT: inst_block60000038: +// CHECK:STDOUT: inst_block60000039: +// CHECK:STDOUT: 0: inst600000B4 +// CHECK:STDOUT: 1: inst600000B5 +// CHECK:STDOUT: 2: inst600000B6 +// CHECK:STDOUT: inst_block6000003A: // CHECK:STDOUT: 0: inst60000015 // CHECK:STDOUT: 1: inst6000001B // CHECK:STDOUT: 2: inst6000001E -// CHECK:STDOUT: inst_block60000039: -// CHECK:STDOUT: 0: inst60000060 -// CHECK:STDOUT: 1: inst600000BF -// CHECK:STDOUT: inst_block6000003A: -// CHECK:STDOUT: 0: inst600000C2 -// CHECK:STDOUT: 1: inst600000C1 // CHECK:STDOUT: inst_block6000003B: -// CHECK:STDOUT: 0: inst600000C3 -// CHECK:STDOUT: 1: inst600000C4 +// CHECK:STDOUT: 0: inst60000063 +// CHECK:STDOUT: 1: inst600000C2 // CHECK:STDOUT: inst_block6000003C: -// CHECK:STDOUT: 0: inst600000C7 +// CHECK:STDOUT: 0: inst600000C5 +// CHECK:STDOUT: 1: inst600000C4 // CHECK:STDOUT: inst_block6000003D: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst600000BE +// CHECK:STDOUT: 0: inst600000C6 +// CHECK:STDOUT: 1: inst600000C7 // CHECK:STDOUT: inst_block6000003E: -// CHECK:STDOUT: 0: inst600000CC -// CHECK:STDOUT: 1: inst600000CD +// CHECK:STDOUT: 0: inst6000004A +// CHECK:STDOUT: 1: inst6000004A // CHECK:STDOUT: inst_block6000003F: -// CHECK:STDOUT: 0: inst600000CA -// CHECK:STDOUT: 1: inst600000CB +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst600000C1 // CHECK:STDOUT: inst_block60000040: -// CHECK:STDOUT: 0: inst600000CA -// CHECK:STDOUT: 1: inst600000CB -// CHECK:STDOUT: 2: inst600000CC -// CHECK:STDOUT: 3: inst600000CD -// CHECK:STDOUT: 4: inst600000CE -// CHECK:STDOUT: 5: inst600000CF +// CHECK:STDOUT: 0: inst600000CC // CHECK:STDOUT: inst_block60000041: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst600000BE -// CHECK:STDOUT: 2: inst60000060 -// CHECK:STDOUT: 3: inst600000BF -// CHECK:STDOUT: 4: inst600000C0 -// CHECK:STDOUT: 5: inst600000C9 +// CHECK:STDOUT: 0: inst600000CF +// CHECK:STDOUT: 1: inst600000D0 // CHECK:STDOUT: inst_block60000042: -// CHECK:STDOUT: 0: inst600000D7 +// CHECK:STDOUT: 0: inst600000D2 +// CHECK:STDOUT: 1: inst600000D3 // CHECK:STDOUT: inst_block60000043: -// CHECK:STDOUT: 0: inst600000D8 -// CHECK:STDOUT: 1: inst600000D9 +// CHECK:STDOUT: 0: inst600000CF +// CHECK:STDOUT: 1: inst600000D0 // CHECK:STDOUT: inst_block60000044: -// CHECK:STDOUT: 0: inst600000CA -// CHECK:STDOUT: 1: inst600000CB +// CHECK:STDOUT: 0: inst600000CF +// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: 2: inst600000D1 +// CHECK:STDOUT: 3: inst600000D2 +// CHECK:STDOUT: 4: inst600000D3 +// CHECK:STDOUT: 5: inst600000D4 +// CHECK:STDOUT: 6: inst600000D5 // CHECK:STDOUT: inst_block60000045: -// CHECK:STDOUT: 0: inst600000DA -// CHECK:STDOUT: 1: inst600000DB +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst600000C1 +// CHECK:STDOUT: 2: inst600000CB +// CHECK:STDOUT: 3: inst60000063 +// CHECK:STDOUT: 4: inst600000C2 +// CHECK:STDOUT: 5: inst600000C3 +// CHECK:STDOUT: 6: inst600000CE // CHECK:STDOUT: inst_block60000046: // CHECK:STDOUT: 0: inst600000DD -// CHECK:STDOUT: 1: inst600000DF // CHECK:STDOUT: inst_block60000047: -// CHECK:STDOUT: 0: inst600000DC -// CHECK:STDOUT: 1: inst600000DD -// CHECK:STDOUT: 2: inst600000DE -// CHECK:STDOUT: 3: inst600000DF -// CHECK:STDOUT: 4: inst600000E0 -// CHECK:STDOUT: 5: inst600000E1 -// CHECK:STDOUT: inst_block60000048: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst60000060 -// CHECK:STDOUT: 2: inst600000BE -// CHECK:STDOUT: 3: inst600000BF -// CHECK:STDOUT: 4: inst600000C0 -// CHECK:STDOUT: 5: inst600000D3 -// CHECK:STDOUT: inst_block60000049: -// CHECK:STDOUT: 0: inst600000BE -// CHECK:STDOUT: inst_block6000004A: -// CHECK:STDOUT: 0: inst600000DC -// CHECK:STDOUT: inst_block6000004B: // CHECK:STDOUT: 0: inst600000DE +// CHECK:STDOUT: 1: inst600000DF +// CHECK:STDOUT: inst_block60000048: +// CHECK:STDOUT: 0: inst600000CF +// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: inst_block60000049: +// CHECK:STDOUT: 0: inst600000E0 +// CHECK:STDOUT: 1: inst600000E1 +// CHECK:STDOUT: inst_block6000004A: +// CHECK:STDOUT: 0: inst600000E3 +// CHECK:STDOUT: 1: inst600000E5 +// CHECK:STDOUT: inst_block6000004B: +// CHECK:STDOUT: 0: inst600000E2 +// CHECK:STDOUT: 1: inst600000E3 +// CHECK:STDOUT: 2: inst600000E4 +// CHECK:STDOUT: 3: inst600000E5 +// CHECK:STDOUT: 4: inst600000E6 +// CHECK:STDOUT: 5: inst600000E7 // CHECK:STDOUT: inst_block6000004C: -// CHECK:STDOUT: 0: inst600000E8 -// CHECK:STDOUT: 1: inst600000E9 -// CHECK:STDOUT: 2: inst600000EA -// CHECK:STDOUT: 3: inst600000EB -// CHECK:STDOUT: 4: inst600000EC -// CHECK:STDOUT: 5: inst600000ED -// CHECK:STDOUT: 6: inst600000EE -// CHECK:STDOUT: 7: inst600000EF -// CHECK:STDOUT: 8: inst600000F0 -// CHECK:STDOUT: 9: inst600000F1 -// CHECK:STDOUT: 10: inst600000F2 +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst60000063 +// CHECK:STDOUT: 2: inst600000C1 +// CHECK:STDOUT: 3: inst600000C2 +// CHECK:STDOUT: 4: inst600000C3 +// CHECK:STDOUT: 5: inst600000D9 // CHECK:STDOUT: inst_block6000004D: -// CHECK:STDOUT: 0: inst600000BE -// CHECK:STDOUT: 1: inst600000BF -// CHECK:STDOUT: 2: inst600000F3 +// CHECK:STDOUT: 0: inst600000C1 // CHECK:STDOUT: inst_block6000004E: -// CHECK:STDOUT: 0: inst600000D1 -// CHECK:STDOUT: 1: inst600000D2 +// CHECK:STDOUT: 0: inst600000E2 // CHECK:STDOUT: inst_block6000004F: -// CHECK:STDOUT: 0: inst60000060 -// CHECK:STDOUT: 1: inst600000BF -// CHECK:STDOUT: 2: inst600000F7 +// CHECK:STDOUT: 0: inst600000E4 // CHECK:STDOUT: inst_block60000050: -// CHECK:STDOUT: 0: inst600000FB -// CHECK:STDOUT: 1: inst600000FA -// CHECK:STDOUT: 2: inst600000F9 +// CHECK:STDOUT: 0: inst600000EE +// CHECK:STDOUT: 1: inst600000EF +// CHECK:STDOUT: 2: inst600000F0 +// CHECK:STDOUT: 3: inst600000F1 +// CHECK:STDOUT: 4: inst600000F2 +// CHECK:STDOUT: 5: inst600000F3 +// CHECK:STDOUT: 6: inst600000F4 +// CHECK:STDOUT: 7: inst600000F5 +// CHECK:STDOUT: 8: inst600000F6 +// CHECK:STDOUT: 9: inst600000F7 +// CHECK:STDOUT: 10: inst600000F8 // CHECK:STDOUT: inst_block60000051: +// CHECK:STDOUT: 0: inst600000C1 +// CHECK:STDOUT: 1: inst600000C2 +// CHECK:STDOUT: 2: inst600000F9 +// CHECK:STDOUT: inst_block60000052: +// CHECK:STDOUT: 0: inst600000D7 +// CHECK:STDOUT: 1: inst600000D8 +// CHECK:STDOUT: inst_block60000053: +// CHECK:STDOUT: 0: inst60000063 +// CHECK:STDOUT: 1: inst600000C2 +// CHECK:STDOUT: 2: inst600000FD +// CHECK:STDOUT: inst_block60000054: +// CHECK:STDOUT: 0: inst60000101 +// CHECK:STDOUT: 1: inst60000100 +// CHECK:STDOUT: 2: inst600000FF +// CHECK:STDOUT: inst_block60000055: +// CHECK:STDOUT: 0: inst60000102 +// CHECK:STDOUT: 1: inst60000103 +// CHECK:STDOUT: 2: inst60000104 +// CHECK:STDOUT: inst_block60000056: +// CHECK:STDOUT: 0: inst6000004A +// CHECK:STDOUT: 1: inst6000004A +// CHECK:STDOUT: 2: inst6000004A +// CHECK:STDOUT: inst_block60000057: +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst600000C1 +// CHECK:STDOUT: 2: inst600000FC +// CHECK:STDOUT: inst_block60000058: +// CHECK:STDOUT: 0: inst60000109 +// CHECK:STDOUT: inst_block60000059: +// CHECK:STDOUT: 0: inst6000010C +// CHECK:STDOUT: 1: inst6000010D +// CHECK:STDOUT: 2: inst6000010E +// CHECK:STDOUT: inst_block6000005A: +// CHECK:STDOUT: 0: inst60000110 +// CHECK:STDOUT: 1: inst60000111 +// CHECK:STDOUT: 2: inst60000112 +// CHECK:STDOUT: inst_block6000005B: +// CHECK:STDOUT: 0: inst6000010C +// CHECK:STDOUT: 1: inst6000010D +// CHECK:STDOUT: 2: inst6000010E +// CHECK:STDOUT: inst_block6000005C: +// CHECK:STDOUT: 0: inst6000010C +// CHECK:STDOUT: 1: inst6000010D +// CHECK:STDOUT: 2: inst6000010E +// CHECK:STDOUT: 3: inst6000010F +// CHECK:STDOUT: 4: inst60000110 +// CHECK:STDOUT: 5: inst60000111 +// CHECK:STDOUT: 6: inst60000112 +// CHECK:STDOUT: 7: inst60000113 +// CHECK:STDOUT: 8: inst60000114 +// CHECK:STDOUT: inst_block6000005D: +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst600000C1 +// CHECK:STDOUT: 2: inst600000FC +// CHECK:STDOUT: 3: inst60000108 +// CHECK:STDOUT: 4: inst60000063 +// CHECK:STDOUT: 5: inst600000C2 +// CHECK:STDOUT: 6: inst600000FD +// CHECK:STDOUT: 7: inst600000FE +// CHECK:STDOUT: 8: inst6000010B +// CHECK:STDOUT: inst_block6000005E: +// CHECK:STDOUT: 0: inst6000011C +// CHECK:STDOUT: inst_block6000005F: +// CHECK:STDOUT: 0: inst6000011D +// CHECK:STDOUT: 1: inst6000011E +// CHECK:STDOUT: 2: inst6000011F +// CHECK:STDOUT: inst_block60000060: +// CHECK:STDOUT: 0: inst6000010C +// CHECK:STDOUT: 1: inst6000010D +// CHECK:STDOUT: 2: inst6000010E +// CHECK:STDOUT: inst_block60000061: +// CHECK:STDOUT: 0: inst60000120 +// CHECK:STDOUT: 1: inst60000121 +// CHECK:STDOUT: inst_block60000062: +// CHECK:STDOUT: 0: inst60000123 +// CHECK:STDOUT: 1: inst60000125 +// CHECK:STDOUT: 2: inst60000127 +// CHECK:STDOUT: inst_block60000063: +// CHECK:STDOUT: 0: inst60000122 +// CHECK:STDOUT: 1: inst60000123 +// CHECK:STDOUT: 2: inst60000124 +// CHECK:STDOUT: 3: inst60000125 +// CHECK:STDOUT: 4: inst60000126 +// CHECK:STDOUT: 5: inst60000127 +// CHECK:STDOUT: 6: inst60000128 +// CHECK:STDOUT: 7: inst60000129 +// CHECK:STDOUT: inst_block60000064: +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: 1: inst60000063 +// CHECK:STDOUT: 2: inst600000C1 +// CHECK:STDOUT: 3: inst600000C2 +// CHECK:STDOUT: 4: inst600000FC +// CHECK:STDOUT: 5: inst600000FD +// CHECK:STDOUT: 6: inst600000FE +// CHECK:STDOUT: 7: inst60000118 +// CHECK:STDOUT: inst_block60000065: +// CHECK:STDOUT: 0: inst600000FC +// CHECK:STDOUT: inst_block60000066: +// CHECK:STDOUT: 0: inst60000122 +// CHECK:STDOUT: inst_block60000067: +// CHECK:STDOUT: 0: inst60000124 +// CHECK:STDOUT: inst_block60000068: +// CHECK:STDOUT: 0: inst60000126 +// CHECK:STDOUT: inst_block60000069: +// CHECK:STDOUT: 0: inst60000130 +// CHECK:STDOUT: 1: inst60000131 +// CHECK:STDOUT: 2: inst60000132 +// CHECK:STDOUT: 3: inst60000133 +// CHECK:STDOUT: 4: inst60000134 +// CHECK:STDOUT: 5: inst60000135 +// CHECK:STDOUT: 6: inst60000136 +// CHECK:STDOUT: 7: inst60000137 +// CHECK:STDOUT: 8: inst60000138 +// CHECK:STDOUT: 9: inst60000139 +// CHECK:STDOUT: 10: inst6000013A +// CHECK:STDOUT: 11: inst6000013B +// CHECK:STDOUT: 12: inst6000013C +// CHECK:STDOUT: 13: inst6000013D +// CHECK:STDOUT: 14: inst6000013E +// CHECK:STDOUT: 15: inst6000013F +// CHECK:STDOUT: inst_block6000006A: // CHECK:STDOUT: 0: inst600000FC // CHECK:STDOUT: 1: inst600000FD -// CHECK:STDOUT: 2: inst600000FE -// CHECK:STDOUT: inst_block60000052: -// CHECK:STDOUT: 0: inst60000101 -// CHECK:STDOUT: inst_block60000053: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst600000BE -// CHECK:STDOUT: 2: inst600000F6 -// CHECK:STDOUT: inst_block60000054: -// CHECK:STDOUT: 0: inst60000107 -// CHECK:STDOUT: 1: inst60000108 -// CHECK:STDOUT: 2: inst60000109 -// CHECK:STDOUT: inst_block60000055: -// CHECK:STDOUT: 0: inst60000104 -// CHECK:STDOUT: 1: inst60000105 -// CHECK:STDOUT: 2: inst60000106 -// CHECK:STDOUT: inst_block60000056: -// CHECK:STDOUT: 0: inst60000104 -// CHECK:STDOUT: 1: inst60000105 -// CHECK:STDOUT: 2: inst60000106 -// CHECK:STDOUT: 3: inst60000107 -// CHECK:STDOUT: 4: inst60000108 -// CHECK:STDOUT: 5: inst60000109 -// CHECK:STDOUT: 6: inst6000010A -// CHECK:STDOUT: 7: inst6000010B -// CHECK:STDOUT: inst_block60000057: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst600000BE -// CHECK:STDOUT: 2: inst600000F6 -// CHECK:STDOUT: 3: inst60000060 -// CHECK:STDOUT: 4: inst600000BF -// CHECK:STDOUT: 5: inst600000F7 -// CHECK:STDOUT: 6: inst600000F8 -// CHECK:STDOUT: 7: inst60000103 -// CHECK:STDOUT: inst_block60000058: -// CHECK:STDOUT: 0: inst60000113 -// CHECK:STDOUT: inst_block60000059: -// CHECK:STDOUT: 0: inst60000114 -// CHECK:STDOUT: 1: inst60000115 -// CHECK:STDOUT: 2: inst60000116 -// CHECK:STDOUT: inst_block6000005A: -// CHECK:STDOUT: 0: inst60000104 -// CHECK:STDOUT: 1: inst60000105 -// CHECK:STDOUT: 2: inst60000106 -// CHECK:STDOUT: inst_block6000005B: -// CHECK:STDOUT: 0: inst60000117 -// CHECK:STDOUT: 1: inst60000118 -// CHECK:STDOUT: inst_block6000005C: -// CHECK:STDOUT: 0: inst6000011A -// CHECK:STDOUT: 1: inst6000011C -// CHECK:STDOUT: 2: inst6000011E -// CHECK:STDOUT: inst_block6000005D: -// CHECK:STDOUT: 0: inst60000119 -// CHECK:STDOUT: 1: inst6000011A -// CHECK:STDOUT: 2: inst6000011B -// CHECK:STDOUT: 3: inst6000011C -// CHECK:STDOUT: 4: inst6000011D -// CHECK:STDOUT: 5: inst6000011E -// CHECK:STDOUT: 6: inst6000011F -// CHECK:STDOUT: 7: inst60000120 -// CHECK:STDOUT: inst_block6000005E: -// CHECK:STDOUT: 0: inst6000005F -// CHECK:STDOUT: 1: inst60000060 -// CHECK:STDOUT: 2: inst600000BE -// CHECK:STDOUT: 3: inst600000BF -// CHECK:STDOUT: 4: inst600000F6 -// CHECK:STDOUT: 5: inst600000F7 -// CHECK:STDOUT: 6: inst600000F8 -// CHECK:STDOUT: 7: inst6000010F -// CHECK:STDOUT: inst_block6000005F: -// CHECK:STDOUT: 0: inst600000F6 -// CHECK:STDOUT: inst_block60000060: -// CHECK:STDOUT: 0: inst60000119 -// CHECK:STDOUT: inst_block60000061: -// CHECK:STDOUT: 0: inst6000011B -// CHECK:STDOUT: inst_block60000062: -// CHECK:STDOUT: 0: inst6000011D -// CHECK:STDOUT: inst_block60000063: -// CHECK:STDOUT: 0: inst60000127 -// CHECK:STDOUT: 1: inst60000128 -// CHECK:STDOUT: 2: inst60000129 -// CHECK:STDOUT: 3: inst6000012A -// CHECK:STDOUT: 4: inst6000012B -// CHECK:STDOUT: 5: inst6000012C -// CHECK:STDOUT: 6: inst6000012D -// CHECK:STDOUT: 7: inst6000012E -// CHECK:STDOUT: 8: inst6000012F -// CHECK:STDOUT: 9: inst60000130 -// CHECK:STDOUT: 10: inst60000131 -// CHECK:STDOUT: 11: inst60000132 -// CHECK:STDOUT: 12: inst60000133 -// CHECK:STDOUT: 13: inst60000134 -// CHECK:STDOUT: 14: inst60000135 -// CHECK:STDOUT: 15: inst60000136 -// CHECK:STDOUT: inst_block60000064: -// CHECK:STDOUT: 0: inst600000F6 -// CHECK:STDOUT: 1: inst600000F7 -// CHECK:STDOUT: 2: inst60000137 -// CHECK:STDOUT: inst_block60000065: -// CHECK:STDOUT: 0: inst6000010D -// CHECK:STDOUT: 1: inst6000010E -// CHECK:STDOUT: inst_block60000066: -// CHECK:STDOUT: 0: inst600000A7 -// CHECK:STDOUT: 1: inst600000A8 -// CHECK:STDOUT: 2: inst6000003D -// CHECK:STDOUT: inst_block60000067: -// CHECK:STDOUT: 0: inst60000138 -// CHECK:STDOUT: inst_block60000068: -// CHECK:STDOUT: 0: inst60000139 -// CHECK:STDOUT: inst_block60000069: -// CHECK:STDOUT: 0: inst6000013A -// CHECK:STDOUT: inst_block6000006A: -// CHECK:STDOUT: 0: inst6000013A +// CHECK:STDOUT: 2: inst60000140 +// CHECK:STDOUT: inst_block6000006B: +// CHECK:STDOUT: 0: inst60000116 +// CHECK:STDOUT: 1: inst60000117 +// CHECK:STDOUT: inst_block6000006C: +// CHECK:STDOUT: 0: inst600000AA +// CHECK:STDOUT: 1: inst600000AB +// CHECK:STDOUT: 2: inst60000040 +// CHECK:STDOUT: inst_block6000006D: +// CHECK:STDOUT: 0: inst60000141 +// CHECK:STDOUT: inst_block6000006E: +// CHECK:STDOUT: 0: inst60000142 +// CHECK:STDOUT: inst_block6000006F: +// CHECK:STDOUT: 0: inst60000143 +// CHECK:STDOUT: inst_block60000070: +// CHECK:STDOUT: 0: inst60000143 // CHECK:STDOUT: 1: inst6000001B // CHECK:STDOUT: 2: inst6000001E -// CHECK:STDOUT: inst_block6000006B: -// CHECK:STDOUT: 0: inst6000013E -// CHECK:STDOUT: inst_block6000006C: -// CHECK:STDOUT: 0: inst6000003F -// CHECK:STDOUT: inst_block6000006D: -// CHECK:STDOUT: 0: inst60000148 -// CHECK:STDOUT: 1: inst6000014C -// CHECK:STDOUT: inst_block6000006E: -// CHECK:STDOUT: 0: inst6000003B -// CHECK:STDOUT: 1: inst6000003E -// CHECK:STDOUT: 2: inst60000139 -// CHECK:STDOUT: 3: inst6000013E -// CHECK:STDOUT: 4: inst6000013F -// CHECK:STDOUT: 5: inst60000140 -// CHECK:STDOUT: 6: inst60000144 -// CHECK:STDOUT: inst_block6000006F: +// CHECK:STDOUT: inst_block60000071: +// CHECK:STDOUT: 0: inst60000147 +// CHECK:STDOUT: inst_block60000072: +// CHECK:STDOUT: 0: inst60000042 +// CHECK:STDOUT: inst_block60000073: +// CHECK:STDOUT: 0: inst60000151 +// CHECK:STDOUT: 1: inst60000154 +// CHECK:STDOUT: inst_block60000074: +// CHECK:STDOUT: 0: inst6000003E +// CHECK:STDOUT: 1: inst60000041 +// CHECK:STDOUT: 2: inst60000142 +// CHECK:STDOUT: 3: inst60000147 +// CHECK:STDOUT: 4: inst60000148 +// CHECK:STDOUT: 5: inst60000149 +// CHECK:STDOUT: 6: inst6000014D +// CHECK:STDOUT: inst_block60000075: // CHECK:STDOUT: 0: instE // CHECK:STDOUT: 1: inst6000000F -// CHECK:STDOUT: 2: inst60000035 +// CHECK:STDOUT: 2: inst60000038 // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon b/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon index 53f328e6a916..9d00d444fde4 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon @@ -26,12 +26,12 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst60000025}} +// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst60000027}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name60000000: {name: name1, parent_scope: name_scope, index: -1, is_template: 0} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block60000009, return_slot_pattern: inst60000020, body: [inst_block6000000C]} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000A, return_slot_pattern: inst60000022, body: [inst_block6000000D]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -46,160 +46,165 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} // CHECK:STDOUT: 'type(inst6000000F)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst6000000F)} -// CHECK:STDOUT: 'type(inst6000001A)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000001A)} -// CHECK:STDOUT: 'type(inst60000018)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000001A)} -// CHECK:STDOUT: 'type(inst60000026)': +// CHECK:STDOUT: 'type(inst6000001C)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000001C)} +// CHECK:STDOUT: 'type(inst60000019)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000001C)} +// CHECK:STDOUT: 'type(inst60000028)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst6000000F)} // CHECK:STDOUT: insts: // CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} // CHECK:STDOUT: inst6000000F: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} // CHECK:STDOUT: inst60000010: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000011: {kind: Converted, arg0: inst60000010, arg1: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst60000012: {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000021, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000013: {kind: PatternType, arg0: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst60000014: {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000013)} -// CHECK:STDOUT: inst60000015: {kind: ValueParamPattern, arg0: inst60000014, arg1: call_param0, type: type(inst60000013)} -// CHECK:STDOUT: inst60000016: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000011: {kind: TupleValue, arg0: inst_block_empty, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000012: {kind: Converted, arg0: inst60000010, arg1: inst6000000F, type: type(TypeType)} +// CHECK:STDOUT: inst60000013: {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000023, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000014: {kind: PatternType, arg0: inst6000000F, type: type(TypeType)} +// CHECK:STDOUT: inst60000015: {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000014)} +// CHECK:STDOUT: inst60000016: {kind: ValueParamPattern, arg0: inst60000015, arg1: call_param0, type: type(inst60000014)} // CHECK:STDOUT: inst60000017: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000018: {kind: TupleType, arg0: inst_block60000007, type: type(TypeType)} -// CHECK:STDOUT: inst60000019: {kind: TupleLiteral, arg0: inst_block60000006, type: type(inst60000018)} -// CHECK:STDOUT: inst6000001A: {kind: PointerType, arg0: inst60000018, type: type(TypeType)} -// CHECK:STDOUT: inst6000001B: {kind: Converted, arg0: inst60000016, arg1: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst6000001C: {kind: Converted, arg0: inst60000017, arg1: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst6000001D: {kind: Converted, arg0: inst60000019, arg1: inst60000018, type: type(TypeType)} -// CHECK:STDOUT: inst6000001E: {kind: PatternType, arg0: inst60000018, type: type(TypeType)} -// CHECK:STDOUT: inst6000001F: {kind: ReturnSlotPattern, arg0: inst6000001D, type: type(inst6000001E)} -// CHECK:STDOUT: inst60000020: {kind: OutParamPattern, arg0: inst6000001F, arg1: call_param1, type: type(inst6000001E)} -// CHECK:STDOUT: inst60000021: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000022: {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000011, type: type(TypeType)} -// CHECK:STDOUT: inst60000023: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst60000018)} -// CHECK:STDOUT: inst60000024: {kind: ReturnSlot, arg0: inst60000018, arg1: inst60000023, type: type(inst60000018)} -// CHECK:STDOUT: inst60000025: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000B, type: type(inst60000026)} -// CHECK:STDOUT: inst60000026: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000027: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000026)} -// CHECK:STDOUT: inst60000028: {kind: NameRef, arg0: name1, arg1: inst60000012, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000029: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002A: {kind: TupleLiteral, arg0: inst_block6000000D, type: type(inst60000018)} -// CHECK:STDOUT: inst6000002B: {kind: TupleAccess, arg0: inst60000024, arg1: element0, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002C: {kind: TupleInit, arg0: inst_block6000000E, arg1: inst6000002B, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002D: {kind: TupleValue, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002E: {kind: Converted, arg0: inst60000028, arg1: inst6000002C, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002F: {kind: TupleAccess, arg0: inst60000024, arg1: element1, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000030: {kind: TupleInit, arg0: inst_block_empty, arg1: inst6000002F, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000031: {kind: Converted, arg0: inst60000029, arg1: inst60000030, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000032: {kind: TupleInit, arg0: inst_block6000000F, arg1: inst60000024, type: type(inst60000018)} -// CHECK:STDOUT: inst60000033: {kind: TupleValue, arg0: inst_block60000010, type: type(inst60000018)} -// CHECK:STDOUT: inst60000034: {kind: Converted, arg0: inst6000002A, arg1: inst60000032, type: type(inst60000018)} -// CHECK:STDOUT: inst60000035: {kind: ReturnExpr, arg0: inst60000034, arg1: inst60000024} +// CHECK:STDOUT: inst60000018: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000019: {kind: TupleType, arg0: inst_block60000007, type: type(TypeType)} +// CHECK:STDOUT: inst6000001A: {kind: TupleLiteral, arg0: inst_block60000006, type: type(inst60000019)} +// CHECK:STDOUT: inst6000001B: {kind: TupleValue, arg0: inst_block60000008, type: type(inst60000019)} +// CHECK:STDOUT: inst6000001C: {kind: PointerType, arg0: inst60000019, type: type(TypeType)} +// CHECK:STDOUT: inst6000001D: {kind: Converted, arg0: inst60000011, arg1: inst6000000F, type: type(TypeType)} +// CHECK:STDOUT: inst6000001E: {kind: Converted, arg0: inst60000011, arg1: inst6000000F, type: type(TypeType)} +// CHECK:STDOUT: inst6000001F: {kind: Converted, arg0: inst6000001A, arg1: inst60000019, type: type(TypeType)} +// CHECK:STDOUT: inst60000020: {kind: PatternType, arg0: inst60000019, type: type(TypeType)} +// CHECK:STDOUT: inst60000021: {kind: ReturnSlotPattern, arg0: inst6000001F, type: type(inst60000020)} +// CHECK:STDOUT: inst60000022: {kind: OutParamPattern, arg0: inst60000021, arg1: call_param1, type: type(inst60000020)} +// CHECK:STDOUT: inst60000023: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000024: {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000012, type: type(TypeType)} +// CHECK:STDOUT: inst60000025: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst60000019)} +// CHECK:STDOUT: inst60000026: {kind: ReturnSlot, arg0: inst60000019, arg1: inst60000025, type: type(inst60000019)} +// CHECK:STDOUT: inst60000027: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000C, type: type(inst60000028)} +// CHECK:STDOUT: inst60000028: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000029: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000028)} +// CHECK:STDOUT: inst6000002A: {kind: NameRef, arg0: name1, arg1: inst60000013, type: type(inst6000000F)} +// CHECK:STDOUT: inst6000002B: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} +// CHECK:STDOUT: inst6000002C: {kind: TupleLiteral, arg0: inst_block6000000E, type: type(inst60000019)} +// CHECK:STDOUT: inst6000002D: {kind: TupleAccess, arg0: inst60000026, arg1: element0, type: type(inst6000000F)} +// CHECK:STDOUT: inst6000002E: {kind: TupleInit, arg0: inst_block6000000F, arg1: inst6000002D, type: type(inst6000000F)} +// CHECK:STDOUT: inst6000002F: {kind: Converted, arg0: inst6000002A, arg1: inst6000002E, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000030: {kind: TupleAccess, arg0: inst60000026, arg1: element1, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000031: {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000030, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000032: {kind: Converted, arg0: inst6000002B, arg1: inst60000031, type: type(inst6000000F)} +// CHECK:STDOUT: inst60000033: {kind: TupleInit, arg0: inst_block60000010, arg1: inst60000026, type: type(inst60000019)} +// CHECK:STDOUT: inst60000034: {kind: Converted, arg0: inst6000002C, arg1: inst60000033, type: type(inst60000019)} +// CHECK:STDOUT: inst60000035: {kind: ReturnExpr, arg0: inst60000034, arg1: inst60000026} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: // CHECK:STDOUT: instE: concrete_constant(instE) // CHECK:STDOUT: inst6000000F: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst60000011: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst60000013: concrete_constant(inst60000013) +// CHECK:STDOUT: inst60000010: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000011: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000012: concrete_constant(inst6000000F) // CHECK:STDOUT: inst60000014: concrete_constant(inst60000014) // CHECK:STDOUT: inst60000015: concrete_constant(inst60000015) -// CHECK:STDOUT: inst60000018: concrete_constant(inst60000018) -// CHECK:STDOUT: inst6000001A: concrete_constant(inst6000001A) -// CHECK:STDOUT: inst6000001B: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst6000001C: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst6000001D: concrete_constant(inst60000018) -// CHECK:STDOUT: inst6000001E: concrete_constant(inst6000001E) -// CHECK:STDOUT: inst6000001F: concrete_constant(inst6000001F) +// CHECK:STDOUT: inst60000016: concrete_constant(inst60000016) +// CHECK:STDOUT: inst60000017: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000018: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000019: concrete_constant(inst60000019) +// CHECK:STDOUT: inst6000001A: concrete_constant(inst6000001B) +// CHECK:STDOUT: inst6000001B: concrete_constant(inst6000001B) +// CHECK:STDOUT: inst6000001C: concrete_constant(inst6000001C) +// CHECK:STDOUT: inst6000001D: concrete_constant(inst6000000F) +// CHECK:STDOUT: inst6000001E: concrete_constant(inst6000000F) +// CHECK:STDOUT: inst6000001F: concrete_constant(inst60000019) // CHECK:STDOUT: inst60000020: concrete_constant(inst60000020) -// CHECK:STDOUT: inst60000022: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst60000025: concrete_constant(inst60000027) -// CHECK:STDOUT: inst60000026: concrete_constant(inst60000026) -// CHECK:STDOUT: inst60000027: concrete_constant(inst60000027) -// CHECK:STDOUT: inst6000002C: concrete_constant(inst6000002D) -// CHECK:STDOUT: inst6000002D: concrete_constant(inst6000002D) -// CHECK:STDOUT: inst6000002E: concrete_constant(inst6000002D) -// CHECK:STDOUT: inst60000030: concrete_constant(inst6000002D) -// CHECK:STDOUT: inst60000031: concrete_constant(inst6000002D) -// CHECK:STDOUT: inst60000032: concrete_constant(inst60000033) -// CHECK:STDOUT: inst60000033: concrete_constant(inst60000033) -// CHECK:STDOUT: inst60000034: concrete_constant(inst60000033) +// CHECK:STDOUT: inst60000021: concrete_constant(inst60000021) +// CHECK:STDOUT: inst60000022: concrete_constant(inst60000022) +// CHECK:STDOUT: inst60000024: concrete_constant(inst6000000F) +// CHECK:STDOUT: inst60000027: concrete_constant(inst60000029) +// CHECK:STDOUT: inst60000028: concrete_constant(inst60000028) +// CHECK:STDOUT: inst60000029: concrete_constant(inst60000029) +// CHECK:STDOUT: inst6000002B: concrete_constant(inst60000011) +// CHECK:STDOUT: inst6000002E: concrete_constant(inst60000011) +// CHECK:STDOUT: inst6000002F: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000031: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000032: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000033: concrete_constant(inst6000001B) +// CHECK:STDOUT: inst60000034: concrete_constant(inst6000001B) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst60000025 +// CHECK:STDOUT: 0: inst60000027 // CHECK:STDOUT: imports: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: // CHECK:STDOUT: 0: inst60000010 -// CHECK:STDOUT: 1: inst60000011 +// CHECK:STDOUT: 1: inst60000012 // CHECK:STDOUT: inst_block60000005: -// CHECK:STDOUT: 0: inst60000015 -// CHECK:STDOUT: inst_block60000006: // CHECK:STDOUT: 0: inst60000016 -// CHECK:STDOUT: 1: inst60000017 +// CHECK:STDOUT: inst_block60000006: +// CHECK:STDOUT: 0: inst60000017 +// CHECK:STDOUT: 1: inst60000018 // CHECK:STDOUT: inst_block60000007: // CHECK:STDOUT: 0: inst6000000F // CHECK:STDOUT: 1: inst6000000F // CHECK:STDOUT: inst_block60000008: -// CHECK:STDOUT: 0: inst6000001B -// CHECK:STDOUT: 1: inst6000001C +// CHECK:STDOUT: 0: inst60000011 +// CHECK:STDOUT: 1: inst60000011 // CHECK:STDOUT: inst_block60000009: -// CHECK:STDOUT: 0: inst60000021 -// CHECK:STDOUT: 1: inst60000023 +// CHECK:STDOUT: 0: inst6000001D +// CHECK:STDOUT: 1: inst6000001E // CHECK:STDOUT: inst_block6000000A: -// CHECK:STDOUT: 0: inst60000014 -// CHECK:STDOUT: 1: inst60000015 -// CHECK:STDOUT: 2: inst6000001F -// CHECK:STDOUT: 3: inst60000020 +// CHECK:STDOUT: 0: inst60000023 +// CHECK:STDOUT: 1: inst60000025 // CHECK:STDOUT: inst_block6000000B: -// CHECK:STDOUT: 0: inst60000016 -// CHECK:STDOUT: 1: inst60000017 -// CHECK:STDOUT: 2: inst60000019 -// CHECK:STDOUT: 3: inst6000001B -// CHECK:STDOUT: 4: inst6000001C -// CHECK:STDOUT: 5: inst6000001D -// CHECK:STDOUT: 6: inst60000021 -// CHECK:STDOUT: 7: inst60000022 -// CHECK:STDOUT: 8: inst60000012 -// CHECK:STDOUT: 9: inst60000023 -// CHECK:STDOUT: 10: inst60000024 +// CHECK:STDOUT: 0: inst60000015 +// CHECK:STDOUT: 1: inst60000016 +// CHECK:STDOUT: 2: inst60000021 +// CHECK:STDOUT: 3: inst60000022 // CHECK:STDOUT: inst_block6000000C: -// CHECK:STDOUT: 0: inst60000028 -// CHECK:STDOUT: 1: inst60000029 -// CHECK:STDOUT: 2: inst6000002A -// CHECK:STDOUT: 3: inst6000002B -// CHECK:STDOUT: 4: inst6000002C -// CHECK:STDOUT: 5: inst6000002E -// CHECK:STDOUT: 6: inst6000002F -// CHECK:STDOUT: 7: inst60000030 -// CHECK:STDOUT: 8: inst60000031 -// CHECK:STDOUT: 9: inst60000032 +// CHECK:STDOUT: 0: inst60000017 +// CHECK:STDOUT: 1: inst60000018 +// CHECK:STDOUT: 2: inst6000001A +// CHECK:STDOUT: 3: inst6000001D +// CHECK:STDOUT: 4: inst6000001E +// CHECK:STDOUT: 5: inst6000001F +// CHECK:STDOUT: 6: inst60000023 +// CHECK:STDOUT: 7: inst60000024 +// CHECK:STDOUT: 8: inst60000013 +// CHECK:STDOUT: 9: inst60000025 +// CHECK:STDOUT: 10: inst60000026 +// CHECK:STDOUT: inst_block6000000D: +// CHECK:STDOUT: 0: inst6000002A +// CHECK:STDOUT: 1: inst6000002B +// CHECK:STDOUT: 2: inst6000002C +// CHECK:STDOUT: 3: inst6000002D +// CHECK:STDOUT: 4: inst6000002E +// CHECK:STDOUT: 5: inst6000002F +// CHECK:STDOUT: 6: inst60000030 +// CHECK:STDOUT: 7: inst60000031 +// CHECK:STDOUT: 8: inst60000032 +// CHECK:STDOUT: 9: inst60000033 // CHECK:STDOUT: 10: inst60000034 // CHECK:STDOUT: 11: inst60000035 -// CHECK:STDOUT: inst_block6000000D: -// CHECK:STDOUT: 0: inst60000028 -// CHECK:STDOUT: 1: inst60000029 -// CHECK:STDOUT: inst_block6000000E: {} -// CHECK:STDOUT: inst_block6000000F: -// CHECK:STDOUT: 0: inst6000002E -// CHECK:STDOUT: 1: inst60000031 +// CHECK:STDOUT: inst_block6000000E: +// CHECK:STDOUT: 0: inst6000002A +// CHECK:STDOUT: 1: inst6000002B +// CHECK:STDOUT: inst_block6000000F: {} // CHECK:STDOUT: inst_block60000010: -// CHECK:STDOUT: 0: inst6000002D -// CHECK:STDOUT: 1: inst6000002D +// CHECK:STDOUT: 0: inst6000002F +// CHECK:STDOUT: 1: inst60000032 // CHECK:STDOUT: inst_block60000011: // CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst60000025 +// CHECK:STDOUT: 1: inst60000027 // CHECK:STDOUT: ... // CHECK:STDOUT: --- one_file_with_textual_ir.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -212,15 +217,15 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %return.patt: %pattern_type.5b8 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.5b8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc16_20: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_24: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_25.1: %tuple.type = tuple_literal (%.loc16_20, %.loc16_24) -// CHECK:STDOUT: %.loc16_25.2: type = converted %.loc16_20, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc16_25.3: type = converted %.loc16_24, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc16_20: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_24: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_25.1: %tuple.type = tuple_literal (%.loc16_20, %.loc16_24) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc16_25.2: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc16_25.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc16_25.4: type = converted %.loc16_25.1, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: %n.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc16_12.1: type = splice_block %.loc16_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc16_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_12.3: type = converted %.loc16_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %empty_tuple.type = value_binding n, %n.param @@ -232,7 +237,7 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: fn @Foo(%n.param: %empty_tuple.type) -> %return.param: %tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %empty_tuple.type = name_ref n, %n -// CHECK:STDOUT: %.loc17_15.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc17_15.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc17_16.1: %tuple.type = tuple_literal (%n.ref, %.loc17_15.1) // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %return, element0 // CHECK:STDOUT: %.loc17_11: init %empty_tuple.type = tuple_init () to %tuple.elem0 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/builtins/maybe_unformed/make_type.carbon b/toolchain/check/testdata/builtins/maybe_unformed/make_type.carbon index 60cc50ab638f..88a65125cd4f 100644 --- a/toolchain/check/testdata/builtins/maybe_unformed/make_type.carbon +++ b/toolchain/check/testdata/builtins/maybe_unformed/make_type.carbon @@ -59,6 +59,7 @@ fn ColonBangParam(T:! type) -> type = "maybe_unformed.make_type"; // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %.a8d: type = maybe_unformed_type %empty_struct_type [concrete] // CHECK:STDOUT: %.2ba: type = maybe_unformed_type %.a8d [concrete] // CHECK:STDOUT: %pattern_type.ce6: type = pattern_type %.2ba [concrete] @@ -77,7 +78,7 @@ fn ColonBangParam(T:! type) -> type = "maybe_unformed.make_type"; // CHECK:STDOUT: %.loc7_21.1: type = splice_block %.loc7_21.3 [concrete = constants.%.2ba] { // CHECK:STDOUT: %Make.ref.loc7_8: %Make.type = name_ref Make, imports.%Main.Make [concrete = constants.%Make] // CHECK:STDOUT: %Make.ref.loc7_13: %Make.type = name_ref Make, imports.%Main.Make [concrete = constants.%Make] -// CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_19.2: type = converted %.loc7_19.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %Make.call.loc7_20: init type = call %Make.ref.loc7_13(%.loc7_19.2) [concrete = constants.%.a8d] // CHECK:STDOUT: %.loc7_20.1: type = value_of_initializer %Make.call.loc7_20 [concrete = constants.%.a8d] @@ -94,6 +95,7 @@ fn ColonBangParam(T:! type) -> type = "maybe_unformed.make_type"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -118,7 +120,7 @@ fn ColonBangParam(T:! type) -> type = "maybe_unformed.make_type"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%Main.Make [concrete = constants.%Make] // CHECK:STDOUT: %t.ref: type = name_ref t, file.%t // CHECK:STDOUT: %Make.call: init type = call %Make.ref(%t.ref) diff --git a/toolchain/check/testdata/builtins/no_op.carbon b/toolchain/check/testdata/builtins/no_op.carbon index e3956d269d56..f891266fe406 100644 --- a/toolchain/check/testdata/builtins/no_op.carbon +++ b/toolchain/check/testdata/builtins/no_op.carbon @@ -86,9 +86,9 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %NoOp.type: type = fn_type @NoOp [concrete] // CHECK:STDOUT: %NoOp: %NoOp.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -102,15 +102,15 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %NoOp.type: type = fn_type @NoOp [concrete] // CHECK:STDOUT: %NoOp: %NoOp.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NoOp.ref: %NoOp.type = name_ref NoOp, file.%NoOp.decl [concrete = constants.%NoOp] -// CHECK:STDOUT: %.loc8_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = converted %.loc8_9.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %NoOp.call: init %empty_tuple.type = call %NoOp.ref(%.loc8_9.2) [concrete = constants.%empty_tuple] @@ -123,8 +123,8 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: %NoOp.type: type = fn_type @NoOp [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %NoOp: %NoOp.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -134,7 +134,7 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc7_9.1: type = splice_block %.loc7_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_9.3: type = converted %.loc7_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] diff --git a/toolchain/check/testdata/builtins/pointer/is_null.carbon b/toolchain/check/testdata/builtins/pointer/is_null.carbon index 107109a7be41..fecbef8cd7b2 100644 --- a/toolchain/check/testdata/builtins/pointer/is_null.carbon +++ b/toolchain/check/testdata/builtins/pointer/is_null.carbon @@ -92,6 +92,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %MakeUnformed.type: type = fn_type @MakeUnformed [concrete] // CHECK:STDOUT: %MakeUnformed: %MakeUnformed.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %.b2d: type = maybe_unformed_type %ptr.c28 [concrete] // CHECK:STDOUT: %pattern_type.b42: type = pattern_type %.b2d [concrete] @@ -127,7 +128,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %s.param: %.b2d = value_param call_param0 // CHECK:STDOUT: %.loc11_39.1: type = splice_block %.loc11_39.3 [concrete = constants.%.b2d] { // CHECK:STDOUT: %MakeUnformed.ref: %MakeUnformed.type = name_ref MakeUnformed, file.%MakeUnformed.decl [concrete = constants.%MakeUnformed] -// CHECK:STDOUT: %.loc11_37: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_37: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc11_38: type = converted %.loc11_37, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr: type = ptr_type %.loc11_38 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %MakeUnformed.call: init type = call %MakeUnformed.ref(%ptr) [concrete = constants.%.b2d] @@ -190,6 +191,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %IsNull: %IsNull.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %.b2d: type = maybe_unformed_type %ptr.c28 [concrete] // CHECK:STDOUT: %pattern_type.b42: type = pattern_type %.b2d [concrete] @@ -220,7 +222,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %s.param: %.b2d = value_param call_param0 // CHECK:STDOUT: %.loc10_39.1: type = splice_block %.loc10_39.3 [concrete = constants.%.b2d] { // CHECK:STDOUT: %MakeUnformed.ref: %MakeUnformed.type = name_ref MakeUnformed, file.%MakeUnformed.decl [concrete = constants.%MakeUnformed] -// CHECK:STDOUT: %.loc10_37: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_37: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_38: type = converted %.loc10_37, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr: type = ptr_type %.loc10_38 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %MakeUnformed.call: init type = call %MakeUnformed.ref(%ptr) [concrete = constants.%.b2d] diff --git a/toolchain/check/testdata/builtins/pointer/make_null.carbon b/toolchain/check/testdata/builtins/pointer/make_null.carbon index 38853f59ef92..1fe9e66dec03 100644 --- a/toolchain/check/testdata/builtins/pointer/make_null.carbon +++ b/toolchain/check/testdata/builtins/pointer/make_null.carbon @@ -70,6 +70,7 @@ fn NotPointer() -> MakeUnformed({}) = "pointer.make_null"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %MakeUnformed.type: type = fn_type @MakeUnformed [concrete] // CHECK:STDOUT: %MakeUnformed: %MakeUnformed.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %.b2d: type = maybe_unformed_type %ptr.c28 [concrete] // CHECK:STDOUT: %pattern_type.b42: type = pattern_type %.b2d [concrete] @@ -88,7 +89,7 @@ fn NotPointer() -> MakeUnformed({}) = "pointer.make_null"; // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11_24.1: type = splice_block %.loc11_24.3 [concrete = constants.%.b2d] { // CHECK:STDOUT: %MakeUnformed.ref.loc11: %MakeUnformed.type = name_ref MakeUnformed, %MakeUnformed.decl [concrete = constants.%MakeUnformed] -// CHECK:STDOUT: %.loc11_22: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_22: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc11_23: type = converted %.loc11_22, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc11: type = ptr_type %.loc11_23 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %MakeUnformed.call.loc11: init type = call %MakeUnformed.ref.loc11(%ptr.loc11) [concrete = constants.%.b2d] @@ -132,6 +133,7 @@ fn NotPointer() -> MakeUnformed({}) = "pointer.make_null"; // CHECK:STDOUT: %MakeNull: %MakeNull.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %.b2d: type = maybe_unformed_type %ptr.c28 [concrete] // CHECK:STDOUT: %pattern_type.b42: type = pattern_type %.b2d [concrete] @@ -148,7 +150,7 @@ fn NotPointer() -> MakeUnformed({}) = "pointer.make_null"; // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_24.1: type = splice_block %.loc10_24.3 [concrete = constants.%.b2d] { // CHECK:STDOUT: %MakeUnformed.ref.loc10: %MakeUnformed.type = name_ref MakeUnformed, %MakeUnformed.decl [concrete = constants.%MakeUnformed] -// CHECK:STDOUT: %.loc10_22: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_22: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_23: type = converted %.loc10_22, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc10: type = ptr_type %.loc10_23 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %MakeUnformed.call.loc10: init type = call %MakeUnformed.ref.loc10(%ptr.loc10) [concrete = constants.%.b2d] @@ -177,7 +179,7 @@ fn NotPointer() -> MakeUnformed({}) = "pointer.make_null"; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %MakeNull.ref.loc10: %MakeNull.type = name_ref MakeNull, file.%MakeNull.decl [concrete = constants.%MakeNull] -// CHECK:STDOUT: %.loc10_38: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_38: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_39: type = converted %.loc10_38, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %MakeNull.specific_fn.loc10: = specific_function %MakeNull.ref.loc10, @MakeNull(constants.%empty_struct_type) [concrete = constants.%MakeNull.specific_fn.7cb] // CHECK:STDOUT: %MakeNull.call.loc10: init %.b2d = call %MakeNull.specific_fn.loc10() diff --git a/toolchain/check/testdata/builtins/type/can_destroy.carbon b/toolchain/check/testdata/builtins/type/can_destroy.carbon index e833ec110906..726e9139c20c 100644 --- a/toolchain/check/testdata/builtins/type/can_destroy.carbon +++ b/toolchain/check/testdata/builtins/type/can_destroy.carbon @@ -128,9 +128,11 @@ impl C as TypeAnd(I, CanDestroy()) {} // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %facet_value.ff9: %type_where = facet_value %empty_tuple.type, () [concrete] // CHECK:STDOUT: %F.specific_fn.1af: = specific_function %F, @F(%facet_value.ff9) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %facet_value.7c2: %type_where = facet_value %empty_struct_type, () [concrete] // CHECK:STDOUT: %F.specific_fn.da1: = specific_function %F, @F(%facet_value.7c2) [concrete] // CHECK:STDOUT: } @@ -141,13 +143,13 @@ impl C as TypeAnd(I, CanDestroy()) {} // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref.loc9: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc9_6: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_6: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %facet_value.loc9: %type_where = facet_value constants.%empty_tuple.type, () [concrete = constants.%facet_value.ff9] // CHECK:STDOUT: %.loc9_7: %type_where = converted %.loc9_6, %facet_value.loc9 [concrete = constants.%facet_value.ff9] // CHECK:STDOUT: %F.specific_fn.loc9: = specific_function %F.ref.loc9, @F(constants.%facet_value.ff9) [concrete = constants.%F.specific_fn.1af] // CHECK:STDOUT: %F.call.loc9: init %empty_tuple.type = call %F.specific_fn.loc9() // CHECK:STDOUT: %F.ref.loc10: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc10_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %facet_value.loc10: %type_where = facet_value constants.%empty_struct_type, () [concrete = constants.%facet_value.7c2] // CHECK:STDOUT: %.loc10_7: %type_where = converted %.loc10_6, %facet_value.loc10 [concrete = constants.%facet_value.7c2] // CHECK:STDOUT: %F.specific_fn.loc10: = specific_function %F.ref.loc10, @F(constants.%facet_value.7c2) [concrete = constants.%F.specific_fn.da1] @@ -162,9 +164,11 @@ impl C as TypeAnd(I, CanDestroy()) {} // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %facet_value.ff9: %type_where = facet_value %empty_tuple.type, () [concrete] // CHECK:STDOUT: %F.specific_fn.1af: = specific_function %F, @F(%facet_value.ff9) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %facet_value.7c2: %type_where = facet_value %empty_struct_type, () [concrete] // CHECK:STDOUT: %F.specific_fn.da1: = specific_function %F, @F(%facet_value.7c2) [concrete] // CHECK:STDOUT: } @@ -175,13 +179,13 @@ impl C as TypeAnd(I, CanDestroy()) {} // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref.loc9: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc9_6: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_6: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %facet_value.loc9: %type_where = facet_value constants.%empty_tuple.type, () [concrete = constants.%facet_value.ff9] // CHECK:STDOUT: %.loc9_7: %type_where = converted %.loc9_6, %facet_value.loc9 [concrete = constants.%facet_value.ff9] // CHECK:STDOUT: %F.specific_fn.loc9: = specific_function %F.ref.loc9, @F(constants.%facet_value.ff9) [concrete = constants.%F.specific_fn.1af] // CHECK:STDOUT: %F.call.loc9: init %empty_tuple.type = call %F.specific_fn.loc9() // CHECK:STDOUT: %F.ref.loc10: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc10_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %facet_value.loc10: %type_where = facet_value constants.%empty_struct_type, () [concrete = constants.%facet_value.7c2] // CHECK:STDOUT: %.loc10_7: %type_where = converted %.loc10_6, %facet_value.loc10 [concrete = constants.%facet_value.7c2] // CHECK:STDOUT: %F.specific_fn.loc10: = specific_function %F.ref.loc10, @F(constants.%facet_value.7c2) [concrete = constants.%F.specific_fn.da1] diff --git a/toolchain/check/testdata/builtins/type/destroy.carbon b/toolchain/check/testdata/builtins/type/destroy.carbon index 06037f7bd0f1..4a1a8690b1d9 100644 --- a/toolchain/check/testdata/builtins/type/destroy.carbon +++ b/toolchain/check/testdata/builtins/type/destroy.carbon @@ -39,6 +39,7 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %DestroyLike.assoc_type: type = assoc_entity_type @DestroyLike [concrete] // CHECK:STDOUT: %assoc0: %DestroyLike.assoc_type = assoc_entity element0, @DestroyLike.%DestroyLike.Op.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %DestroyLike.impl_witness.707: = impl_witness file.%DestroyLike.impl_witness_table, @T.as.DestroyLike.impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %T.as.DestroyLike.impl.Op.type.8d2: type = fn_type @T.as.DestroyLike.impl.Op, @T.as.DestroyLike.impl(%empty_tuple.type) [concrete] @@ -50,7 +51,6 @@ fn F() { // CHECK:STDOUT: %T.as.DestroyLike.impl.Op.specific_fn.211: = specific_function %T.as.DestroyLike.impl.Op.caa, @T.as.DestroyLike.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: %bound_method.891: = bound_method file.%a.var, %T.as.DestroyLike.impl.Op.specific_fn.211 [concrete] // CHECK:STDOUT: %addr.feb: %ptr.843 = addr_of file.%a.var [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %DestroyLike.impl_witness.97d: = impl_witness file.%DestroyLike.impl_witness_table, @T.as.DestroyLike.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %T.as.DestroyLike.impl.Op.type.513: type = fn_type @T.as.DestroyLike.impl.Op, @T.as.DestroyLike.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %T.as.DestroyLike.impl.Op.e5b: %T.as.DestroyLike.impl.Op.type.513 = struct_value () [concrete] diff --git a/toolchain/check/testdata/choice/basic.carbon b/toolchain/check/testdata/choice/basic.carbon index f1157b6b8f57..9a2e7ca3b7d0 100644 --- a/toolchain/check/testdata/choice/basic.carbon +++ b/toolchain/check/testdata/choice/basic.carbon @@ -89,6 +89,7 @@ let never: Never = {}; // CHECK:STDOUT: %struct_type.discriminant: type = struct_type {.discriminant: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.discriminant [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.discriminant = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %Always.val: %Always = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Always [concrete] // CHECK:STDOUT: } @@ -107,10 +108,10 @@ let never: Never = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @Always { // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.discriminant [concrete = constants.%complete_type] -// CHECK:STDOUT: %.loc6_1.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_1.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_1.2: %empty_tuple.type = converted %.loc6_1.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc6_1.3: %struct_type.discriminant = struct_literal (%.loc6_1.2) +// CHECK:STDOUT: %.loc6_1.3: %struct_type.discriminant = struct_literal (%.loc6_1.2) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_1.4: ref %Always = temporary_storage // CHECK:STDOUT: %.loc6_1.5: ref %empty_tuple.type = class_element_access %.loc6_1.4, element0 // CHECK:STDOUT: %.loc6_1.6: init %empty_tuple.type = tuple_init () to %.loc6_1.5 [concrete = constants.%empty_tuple] @@ -158,6 +159,7 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.3e8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_2.ecc) [concrete] // CHECK:STDOUT: %bound_method.51a: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.9fd: %u2 = int_value 0 [concrete] +// CHECK:STDOUT: %struct.559: %struct_type.discriminant = struct_value (%int_0.9fd) [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.type.f83: type = fn_type @UInt.as.Copy.impl.Op, @UInt.as.Copy.impl(%N) [symbolic] @@ -175,12 +177,14 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.237: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3e8 [concrete] // CHECK:STDOUT: %bound_method.82b: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.b2c: %u2 = int_value 1 [concrete] +// CHECK:STDOUT: %struct.0ff: %struct_type.discriminant = struct_value (%int_1.b2c) [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.bound.4d3: = bound_method %int_1.b2c, %UInt.as.Copy.impl.Op.9e3 [concrete] // CHECK:STDOUT: %bound_method.0a8: = bound_method %int_1.b2c, %UInt.as.Copy.impl.Op.specific_fn [concrete] // CHECK:STDOUT: %Ordering.val.927: %Ordering = struct_value (%int_1.b2c) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.1a9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3e8 [concrete] // CHECK:STDOUT: %bound_method.6dc: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.788: %u2 = int_value 2 [concrete] +// CHECK:STDOUT: %struct.6e6: %struct_type.discriminant = struct_value (%int_2.788) [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.bound.0bf: = bound_method %int_2.788, %UInt.as.Copy.impl.Op.9e3 [concrete] // CHECK:STDOUT: %bound_method.1b3: = bound_method %int_2.788, %UInt.as.Copy.impl.Op.specific_fn [concrete] // CHECK:STDOUT: %Ordering.val.968: %Ordering = struct_value (%int_2.788) [concrete] @@ -188,6 +192,7 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5cc: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3e8 [concrete] // CHECK:STDOUT: %bound_method.021: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.975: %u2 = int_value 3 [concrete] +// CHECK:STDOUT: %struct.7bd: %struct_type.discriminant = struct_value (%int_3.975) [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.bound.4ab: = bound_method %int_3.975, %UInt.as.Copy.impl.Op.9e3 [concrete] // CHECK:STDOUT: %bound_method.264: = bound_method %int_3.975, %UInt.as.Copy.impl.Op.specific_fn [concrete] // CHECK:STDOUT: %Ordering.val.8a7: %Ordering = struct_value (%int_3.975) [concrete] @@ -237,7 +242,7 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5: init %u2 = call %bound_method.loc5_7.2(%int_0) [concrete = constants.%int_0.9fd] // CHECK:STDOUT: %.loc5_7.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5 [concrete = constants.%int_0.9fd] // CHECK:STDOUT: %.loc5_7.2: %u2 = converted %int_0, %.loc5_7.1 [concrete = constants.%int_0.9fd] -// CHECK:STDOUT: %.loc5_7.3: %struct_type.discriminant = struct_literal (%.loc5_7.2) +// CHECK:STDOUT: %.loc5_7.3: %struct_type.discriminant = struct_literal (%.loc5_7.2) [concrete = constants.%struct.559] // CHECK:STDOUT: %impl.elem0.loc5_7.2: %.bb5 = impl_witness_access constants.%Copy.impl_witness.5b3, element0 [concrete = constants.%UInt.as.Copy.impl.Op.9e3] // CHECK:STDOUT: %bound_method.loc5_7.3: = bound_method %.loc5_7.2, %impl.elem0.loc5_7.2 [concrete = constants.%UInt.as.Copy.impl.Op.bound.dcf] // CHECK:STDOUT: %specific_fn.loc5_7.2: = specific_function %impl.elem0.loc5_7.2, @UInt.as.Copy.impl.Op(constants.%int_2.ecc) [concrete = constants.%UInt.as.Copy.impl.Op.specific_fn] @@ -259,7 +264,7 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %u2 = call %bound_method.loc6_13.2(%int_1) [concrete = constants.%int_1.b2c] // CHECK:STDOUT: %.loc6_13.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_1.b2c] // CHECK:STDOUT: %.loc6_13.2: %u2 = converted %int_1, %.loc6_13.1 [concrete = constants.%int_1.b2c] -// CHECK:STDOUT: %.loc6_13.3: %struct_type.discriminant = struct_literal (%.loc6_13.2) +// CHECK:STDOUT: %.loc6_13.3: %struct_type.discriminant = struct_literal (%.loc6_13.2) [concrete = constants.%struct.0ff] // CHECK:STDOUT: %impl.elem0.loc6_13.2: %.bb5 = impl_witness_access constants.%Copy.impl_witness.5b3, element0 [concrete = constants.%UInt.as.Copy.impl.Op.9e3] // CHECK:STDOUT: %bound_method.loc6_13.3: = bound_method %.loc6_13.2, %impl.elem0.loc6_13.2 [concrete = constants.%UInt.as.Copy.impl.Op.bound.4d3] // CHECK:STDOUT: %specific_fn.loc6_13.2: = specific_function %impl.elem0.loc6_13.2, @UInt.as.Copy.impl.Op(constants.%int_2.ecc) [concrete = constants.%UInt.as.Copy.impl.Op.specific_fn] @@ -281,7 +286,7 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7: init %u2 = call %bound_method.loc7_10.2(%int_2.loc7) [concrete = constants.%int_2.788] // CHECK:STDOUT: %.loc7_10.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_2.788] // CHECK:STDOUT: %.loc7_10.2: %u2 = converted %int_2.loc7, %.loc7_10.1 [concrete = constants.%int_2.788] -// CHECK:STDOUT: %.loc7_10.3: %struct_type.discriminant = struct_literal (%.loc7_10.2) +// CHECK:STDOUT: %.loc7_10.3: %struct_type.discriminant = struct_literal (%.loc7_10.2) [concrete = constants.%struct.6e6] // CHECK:STDOUT: %impl.elem0.loc7_10.2: %.bb5 = impl_witness_access constants.%Copy.impl_witness.5b3, element0 [concrete = constants.%UInt.as.Copy.impl.Op.9e3] // CHECK:STDOUT: %bound_method.loc7_10.3: = bound_method %.loc7_10.2, %impl.elem0.loc7_10.2 [concrete = constants.%UInt.as.Copy.impl.Op.bound.0bf] // CHECK:STDOUT: %specific_fn.loc7_10.2: = specific_function %impl.elem0.loc7_10.2, @UInt.as.Copy.impl.Op(constants.%int_2.ecc) [concrete = constants.%UInt.as.Copy.impl.Op.specific_fn] @@ -303,7 +308,7 @@ let never: Never = {}; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %u2 = call %bound_method.loc9_1.2(%int_3) [concrete = constants.%int_3.975] // CHECK:STDOUT: %.loc9_1.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_3.975] // CHECK:STDOUT: %.loc9_1.2: %u2 = converted %int_3, %.loc9_1.1 [concrete = constants.%int_3.975] -// CHECK:STDOUT: %.loc9_1.3: %struct_type.discriminant = struct_literal (%.loc9_1.2) +// CHECK:STDOUT: %.loc9_1.3: %struct_type.discriminant = struct_literal (%.loc9_1.2) [concrete = constants.%struct.7bd] // CHECK:STDOUT: %impl.elem0.loc9_1.2: %.bb5 = impl_witness_access constants.%Copy.impl_witness.5b3, element0 [concrete = constants.%UInt.as.Copy.impl.Op.9e3] // CHECK:STDOUT: %bound_method.loc9_1.3: = bound_method %.loc9_1.2, %impl.elem0.loc9_1.2 [concrete = constants.%UInt.as.Copy.impl.Op.bound.4ab] // CHECK:STDOUT: %specific_fn.loc9_1.2: = specific_function %impl.elem0.loc9_1.2, @UInt.as.Copy.impl.Op(constants.%int_2.ecc) [concrete = constants.%UInt.as.Copy.impl.Op.specific_fn] diff --git a/toolchain/check/testdata/choice/generic.carbon b/toolchain/check/testdata/choice/generic.carbon index 5b3719ef9826..e1a931f91d72 100644 --- a/toolchain/check/testdata/choice/generic.carbon +++ b/toolchain/check/testdata/choice/generic.carbon @@ -28,6 +28,7 @@ choice Always(T:! type) { // CHECK:STDOUT: %struct_type.discriminant: type = struct_type {.discriminant: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.discriminant [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.discriminant = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %Always [symbolic] // CHECK:STDOUT: %Always.val: %Always = struct_value (%empty_tuple) [symbolic] // CHECK:STDOUT: } @@ -54,10 +55,10 @@ choice Always(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.discriminant [concrete = constants.%complete_type] -// CHECK:STDOUT: %.loc16_1.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_1.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_1.2: %empty_tuple.type = converted %.loc16_1.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_1.3: %struct_type.discriminant = struct_literal (%.loc16_1.2) +// CHECK:STDOUT: %.loc16_1.3: %struct_type.discriminant = struct_literal (%.loc16_1.2) [concrete = constants.%struct] // CHECK:STDOUT: %.loc16_1.4: ref @Always.%Always (%Always) = temporary_storage // CHECK:STDOUT: %.loc16_1.5: ref %empty_tuple.type = class_element_access %.loc16_1.4, element0 // CHECK:STDOUT: %.loc16_1.6: init %empty_tuple.type = tuple_init () to %.loc16_1.5 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index 7756be503203..d1d1483656a4 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -190,6 +190,7 @@ class A { // CHECK:STDOUT: %bound_method.9be: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %struct_type.radius.f47: type = struct_type {.radius: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.radius.f47 = struct_value (%int_5.64b) [concrete] // CHECK:STDOUT: %Circle.val: %Circle = struct_value (%int_5.0f6) [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] @@ -291,7 +292,7 @@ class A { // CHECK:STDOUT: fn @Circle.Make() -> %return.param: %Circle { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %.loc13_24.1: %struct_type.radius.f47 = struct_literal (%int_5) +// CHECK:STDOUT: %.loc13_24.1: %struct_type.radius.f47 = struct_literal (%int_5) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.451] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/class/adapter/adapt_copy.carbon b/toolchain/check/testdata/class/adapter/adapt_copy.carbon index 1475b27f742b..96ed69a213c9 100644 --- a/toolchain/check/testdata/class/adapter/adapt_copy.carbon +++ b/toolchain/check/testdata/class/adapter/adapt_copy.carbon @@ -193,6 +193,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.c5d: %tuple.type.24b = tuple_value (%AdaptCopyable, %u32) [concrete] // CHECK:STDOUT: %tuple.type.2a3: type = tuple_type (%AdaptCopyable, %u32) [concrete] // CHECK:STDOUT: %pattern_type.813: type = pattern_type %tuple.type.2a3 [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] @@ -260,14 +261,14 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptCopyable.ref.loc27_41: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [concrete = constants.%AdaptCopyable] // CHECK:STDOUT: %int_32.loc27_56: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc27_56: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc27_59.1: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc27_41, %u32.loc27_56) +// CHECK:STDOUT: %.loc27_59.1: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc27_41, %u32.loc27_56) [concrete = constants.%tuple.c5d] // CHECK:STDOUT: %.loc27_59.2: type = converted %.loc27_59.1, constants.%tuple.type.2a3 [concrete = constants.%tuple.type.2a3] // CHECK:STDOUT: %c.param: %tuple.type.2a3 = value_param call_param0 // CHECK:STDOUT: %.loc27_34.1: type = splice_block %.loc27_34.3 [concrete = constants.%tuple.type.2a3] { // CHECK:STDOUT: %AdaptCopyable.ref.loc27_16: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [concrete = constants.%AdaptCopyable] // CHECK:STDOUT: %int_32.loc27_31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc27_31: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc27_34.2: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc27_16, %u32.loc27_31) +// CHECK:STDOUT: %.loc27_34.2: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc27_16, %u32.loc27_31) [concrete = constants.%tuple.c5d] // CHECK:STDOUT: %.loc27_34.3: type = converted %.loc27_34.2, constants.%tuple.type.2a3 [concrete = constants.%tuple.type.2a3] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.2a3 = value_binding c, %c.param @@ -334,7 +335,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptCopyable.ref.loc35: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [concrete = constants.%AdaptCopyable] // CHECK:STDOUT: %int_32.loc35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc35: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc35_29.2: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc35, %u32.loc35) +// CHECK:STDOUT: %.loc35_29.2: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc35, %u32.loc35) [concrete = constants.%tuple.c5d] // CHECK:STDOUT: %.loc35_29.3: type = converted %.loc35_29.2, constants.%tuple.type.2a3 [concrete = constants.%tuple.type.2a3] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %tuple.type.2a3 = ref_binding d, %d.var @@ -373,6 +374,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %complete_type.65d: = complete_type_witness %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.562: type = pattern_type %AdaptTuple [concrete] @@ -398,6 +400,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %UInt.type: type = generic_class_type @UInt [concrete] // CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] +// CHECK:STDOUT: %tuple.b88: %tuple.type.24b = tuple_value (%AdaptTuple, %u32) [concrete] // CHECK:STDOUT: %tuple.type.f69: type = tuple_type (%AdaptTuple, %u32) [concrete] // CHECK:STDOUT: %pattern_type.c9e: type = pattern_type %tuple.type.f69 [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] @@ -467,14 +470,14 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptTuple.ref.loc13_38: type = name_ref AdaptTuple, file.%AdaptTuple.decl [concrete = constants.%AdaptTuple] // CHECK:STDOUT: %int_32.loc13_50: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc13_50: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc13_53.1: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_38, %u32.loc13_50) +// CHECK:STDOUT: %.loc13_53.1: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_38, %u32.loc13_50) [concrete = constants.%tuple.b88] // CHECK:STDOUT: %.loc13_53.2: type = converted %.loc13_53.1, constants.%tuple.type.f69 [concrete = constants.%tuple.type.f69] // CHECK:STDOUT: %c.param: %tuple.type.f69 = value_param call_param0 // CHECK:STDOUT: %.loc13_31.1: type = splice_block %.loc13_31.3 [concrete = constants.%tuple.type.f69] { // CHECK:STDOUT: %AdaptTuple.ref.loc13_16: type = name_ref AdaptTuple, file.%AdaptTuple.decl [concrete = constants.%AdaptTuple] // CHECK:STDOUT: %int_32.loc13_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc13_28: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc13_31.2: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_16, %u32.loc13_28) +// CHECK:STDOUT: %.loc13_31.2: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_16, %u32.loc13_28) [concrete = constants.%tuple.b88] // CHECK:STDOUT: %.loc13_31.3: type = converted %.loc13_31.2, constants.%tuple.type.f69 [concrete = constants.%tuple.type.f69] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.f69 = value_binding c, %c.param @@ -488,7 +491,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %i32.loc5_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc5_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc5_18: %tuple.type.24b = tuple_literal (%i32.loc5_10, %i32.loc5_15) +// CHECK:STDOUT: %.loc5_18: %tuple.type.24b = tuple_literal (%i32.loc5_10, %i32.loc5_15) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc5_19: type = converted %.loc5_18, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: adapt_decl %.loc5_19 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%tuple.type.d07 [concrete = constants.%complete_type.65d] @@ -608,7 +611,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptTuple.ref.loc14: type = name_ref AdaptTuple, file.%AdaptTuple.decl [concrete = constants.%AdaptTuple] // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc14: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc14_26.2: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc14, %u32.loc14) +// CHECK:STDOUT: %.loc14_26.2: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc14, %u32.loc14) [concrete = constants.%tuple.b88] // CHECK:STDOUT: %.loc14_26.3: type = converted %.loc14_26.2, constants.%tuple.type.f69 [concrete = constants.%tuple.type.f69] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %tuple.type.f69 = ref_binding d, %d.var @@ -768,6 +771,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] +// CHECK:STDOUT: %tuple.e90: %tuple.type.ff9 = tuple_value (%i32, %Noncopyable, %i32) [concrete] // CHECK:STDOUT: %tuple.type.c9a: type = tuple_type (%i32, %Noncopyable, %i32) [concrete] // CHECK:STDOUT: %complete_type.201: = complete_type_witness %tuple.type.c9a [concrete] // CHECK:STDOUT: %pattern_type.7e5: type = pattern_type %AdaptNoncopyableIndirect [concrete] @@ -846,7 +850,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [concrete = constants.%Noncopyable] // CHECK:STDOUT: %int_32.loc9_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc9_31: %tuple.type.ff9 = tuple_literal (%i32.loc9_10, %Noncopyable.ref, %i32.loc9_28) +// CHECK:STDOUT: %.loc9_31: %tuple.type.ff9 = tuple_literal (%i32.loc9_10, %Noncopyable.ref, %i32.loc9_28) [concrete = constants.%tuple.e90] // CHECK:STDOUT: %.loc9_32: type = converted %.loc9_31, constants.%tuple.type.c9a [concrete = constants.%tuple.type.c9a] // CHECK:STDOUT: adapt_decl %.loc9_32 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%tuple.type.c9a [concrete = constants.%complete_type.201] @@ -937,6 +941,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.2a6: %tuple.type.24b = tuple_value (%AdaptStruct, %u32) [concrete] // CHECK:STDOUT: %tuple.type.80b: type = tuple_type (%AdaptStruct, %u32) [concrete] // CHECK:STDOUT: %pattern_type.31d: type = pattern_type %tuple.type.80b [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] @@ -1006,14 +1011,14 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptStruct.ref.loc13_39: type = name_ref AdaptStruct, file.%AdaptStruct.decl [concrete = constants.%AdaptStruct] // CHECK:STDOUT: %int_32.loc13_52: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc13_52: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc13_55.1: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_39, %u32.loc13_52) +// CHECK:STDOUT: %.loc13_55.1: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_39, %u32.loc13_52) [concrete = constants.%tuple.2a6] // CHECK:STDOUT: %.loc13_55.2: type = converted %.loc13_55.1, constants.%tuple.type.80b [concrete = constants.%tuple.type.80b] // CHECK:STDOUT: %c.param: %tuple.type.80b = value_param call_param0 // CHECK:STDOUT: %.loc13_32.1: type = splice_block %.loc13_32.3 [concrete = constants.%tuple.type.80b] { // CHECK:STDOUT: %AdaptStruct.ref.loc13_16: type = name_ref AdaptStruct, file.%AdaptStruct.decl [concrete = constants.%AdaptStruct] // CHECK:STDOUT: %int_32.loc13_29: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc13_29: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc13_32.2: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_16, %u32.loc13_29) +// CHECK:STDOUT: %.loc13_32.2: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_16, %u32.loc13_29) [concrete = constants.%tuple.2a6] // CHECK:STDOUT: %.loc13_32.3: type = converted %.loc13_32.2, constants.%tuple.type.80b [concrete = constants.%tuple.type.80b] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.80b = value_binding c, %c.param @@ -1146,7 +1151,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptStruct.ref.loc14: type = name_ref AdaptStruct, file.%AdaptStruct.decl [concrete = constants.%AdaptStruct] // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32.loc14: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %.loc14_27.2: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc14, %u32.loc14) +// CHECK:STDOUT: %.loc14_27.2: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc14, %u32.loc14) [concrete = constants.%tuple.2a6] // CHECK:STDOUT: %.loc14_27.3: type = converted %.loc14_27.2, constants.%tuple.type.80b [concrete = constants.%tuple.type.80b] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %tuple.type.80b = ref_binding d, %d.var diff --git a/toolchain/check/testdata/class/adapter/extend_adapt.carbon b/toolchain/check/testdata/class/adapter/extend_adapt.carbon index 7703a0f7e8bc..e24a0e0fc908 100644 --- a/toolchain/check/testdata/class/adapter/extend_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/extend_adapt.carbon @@ -533,6 +533,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %complete_type.65d: = complete_type_witness %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.ee1: type = pattern_type %TupleAdapter [concrete] @@ -580,7 +581,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %i32.loc5_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc5_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc5_25: %tuple.type.24b = tuple_literal (%i32.loc5_17, %i32.loc5_22) +// CHECK:STDOUT: %.loc5_25: %tuple.type.24b = tuple_literal (%i32.loc5_17, %i32.loc5_22) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc5_26: type = converted %.loc5_25, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: adapt_decl %.loc5_26 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%tuple.type.d07 [concrete = constants.%complete_type.65d] diff --git a/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon b/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon index 455ac1180d94..9df98e6d61eb 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon @@ -218,6 +218,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %AdaptWithBaseAndFields.elem.ddf: type = unbound_element_type %AdaptWithBaseAndFields, %i32 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -254,7 +255,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc8: %AdaptWithBaseAndFields.elem.ddf = field_decl n, element [concrete] -// CHECK:STDOUT: %.loc16_10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc16_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc16_11: type = converted %.loc16_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: adapt_decl %.loc16_11 [concrete] // CHECK:STDOUT: complete_type_witness = diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index 66802008e16c..f6778beee9a4 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -112,6 +112,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -271,7 +272,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc13: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc13: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %a.ref: %C = name_ref a, file.%a // CHECK:STDOUT: %AdaptC.ref.loc15: type = name_ref AdaptC, file.%AdaptC.decl [concrete = constants.%AdaptC] // CHECK:STDOUT: %.loc15_19.1: %AdaptC = as_compatible %a.ref @@ -313,6 +314,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -474,7 +476,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc13: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc13: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %a.ref: %C = name_ref a, file.%a // CHECK:STDOUT: %b.ref: %AdaptC = name_ref b, file.%b [concrete = ] // CHECK:STDOUT: %MakeC.ref: %MakeC.type = name_ref MakeC, file.%MakeC.decl [concrete = constants.%MakeC] diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index 341f5594e1a8..ea1c08871244 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -71,8 +71,10 @@ class Derived { // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.a2e: %struct_type.b.a15 = struct_value (%int_4.0c1) [concrete] // CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [concrete] // CHECK:STDOUT: %struct_type.base.d.a20: type = struct_type {.base: %struct_type.b.a15, .d: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.ab7: %struct_type.base.d.a20 = struct_value (%struct.a2e, %int_7.29f) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -95,6 +97,7 @@ class Derived { // CHECK:STDOUT: %int_7.0b1: %i32 = int_value 7 [concrete] // CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val, %int_7.0b1) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] @@ -157,7 +160,7 @@ class Derived { // CHECK:STDOUT: %i32.loc17_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc17_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17_35.1: %tuple.type.24b = tuple_literal (%i32.loc17_27, %i32.loc17_32) +// CHECK:STDOUT: %.loc17_35.1: %tuple.type.24b = tuple_literal (%i32.loc17_27, %i32.loc17_32) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc17_35.2: type = converted %.loc17_35.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] @@ -199,9 +202,9 @@ class Derived { // CHECK:STDOUT: fn @Make() -> %return.param: %Derived { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc14_26.1: %struct_type.b.a15 = struct_literal (%int_4) +// CHECK:STDOUT: %.loc14_26.1: %struct_type.b.a15 = struct_literal (%int_4) [concrete = constants.%struct.a2e] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] -// CHECK:STDOUT: %.loc14_35.1: %struct_type.base.d.a20 = struct_literal (%.loc14_26.1, %int_7) +// CHECK:STDOUT: %.loc14_35.1: %struct_type.base.d.a20 = struct_literal (%.loc14_26.1, %int_7) [concrete = constants.%struct.ab7] // CHECK:STDOUT: %impl.elem0.loc14_26: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc14_26.1: = bound_method %int_4, %impl.elem0.loc14_26 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0b5] // CHECK:STDOUT: %specific_fn.loc14_26: = specific_function %impl.elem0.loc14_26, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/class/cross_package_import.carbon b/toolchain/check/testdata/class/cross_package_import.carbon index 415139699f58..9e5931793591 100644 --- a/toolchain/check/testdata/class/cross_package_import.carbon +++ b/toolchain/check/testdata/class/cross_package_import.carbon @@ -195,6 +195,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -241,7 +242,7 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_19.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc6_1: init %C = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc6_1 @@ -253,6 +254,7 @@ var c: Other.C = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -291,7 +293,7 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -303,6 +305,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -350,7 +353,7 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_19.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc19_1: init %C = converted %.loc19_19.1, %.loc19_19.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc19_1 @@ -364,6 +367,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -411,7 +415,7 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_19.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc19_1: init %C = converted %.loc19_19.1, %.loc19_19.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc19_1 diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index dfcc305430c1..df36b679269e 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -164,10 +164,13 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: %ConvertInit: %ConvertInit.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.48c: %struct_type.a.a6c = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.base.b.bf0: type = struct_type {.base: %struct_type.a.a6c, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.ff9: %struct_type.base.b.bf0 = struct_value (%struct.48c, %int_2.ecc) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.base.c.136: type = struct_type {.base: %struct_type.base.b.bf0, .c: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.2aa: %struct_type.base.c.136 = struct_value (%struct.ff9, %int_3.1ba) [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] @@ -368,11 +371,11 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: %a.patt: %pattern_type.c10 = value_binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc32_39.1: %struct_type.a.a6c = struct_literal (%int_1) +// CHECK:STDOUT: %.loc32_39.1: %struct_type.a.a6c = struct_literal (%int_1) [concrete = constants.%struct.48c] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc32_48.1: %struct_type.base.b.bf0 = struct_literal (%.loc32_39.1, %int_2) +// CHECK:STDOUT: %.loc32_48.1: %struct_type.base.b.bf0 = struct_literal (%.loc32_39.1, %int_2) [concrete = constants.%struct.ff9] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc32_57.1: %struct_type.base.c.136 = struct_literal (%.loc32_48.1, %int_3) +// CHECK:STDOUT: %.loc32_57.1: %struct_type.base.c.136 = struct_literal (%.loc32_48.1, %int_3) [concrete = constants.%struct.2aa] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %impl.elem0.loc32_39: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc32_39.1: = bound_method %int_1, %impl.elem0.loc32_39 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] diff --git a/toolchain/check/testdata/class/export_name.carbon b/toolchain/check/testdata/class/export_name.carbon index ca3d811d6754..261edad391cc 100644 --- a/toolchain/check/testdata/class/export_name.carbon +++ b/toolchain/check/testdata/class/export_name.carbon @@ -101,6 +101,7 @@ var c: C = {}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -134,7 +135,7 @@ var c: C = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_13.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc6_1: init %C = converted %.loc6_13.1, %.loc6_13.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc6_1 diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 627c404c182e..e845e1bf1aef 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -466,6 +466,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem.513: type = unbound_element_type %Derived, %Abstract [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Derived.elem.ad9: type = unbound_element_type %Derived, %empty_struct_type [concrete] // CHECK:STDOUT: %struct_type.base.d.c06: type = struct_type {.base: %Abstract, .d: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type.b4a: = complete_type_witness %struct_type.base.d.c06 [concrete] @@ -473,6 +474,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.d.e0f: type = struct_type {.base: %empty_struct_type, .d: %empty_struct_type} [concrete] +// CHECK:STDOUT: %struct: %struct_type.base.d.e0f = struct_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -513,7 +515,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %.loc8: %Derived.elem.513 = base_decl %Abstract.ref, element0 [concrete] -// CHECK:STDOUT: %.loc10_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_11.2: type = converted %.loc10_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc10_8: %Derived.elem.ad9 = field_decl d, element1 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.c06 [concrete = constants.%complete_type.b4a] @@ -529,9 +531,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param: %Derived { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc22_20: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc22_29: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc22_30: %struct_type.base.d.e0f = struct_literal (%.loc22_20, %.loc22_29) +// CHECK:STDOUT: %.loc22_20: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc22_29: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc22_30: %struct_type.base.d.e0f = struct_literal (%.loc22_20, %.loc22_29) [concrete = constants.%struct] // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -543,6 +545,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem.513: type = unbound_element_type %Derived, %Abstract [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Derived.elem.ad9: type = unbound_element_type %Derived, %empty_struct_type [concrete] // CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: %Abstract, .d: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type.b4a: = complete_type_witness %struct_type.base.d [concrete] @@ -594,7 +597,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %.loc8: %Derived.elem.513 = base_decl %Abstract.ref, element0 [concrete] -// CHECK:STDOUT: %.loc10_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_11.2: type = converted %.loc10_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc10_8: %Derived.elem.ad9 = field_decl d, element1 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d [concrete = constants.%complete_type.b4a] @@ -619,6 +622,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Abstract: type = class_type @Abstract [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Abstract.elem: type = unbound_element_type %Abstract, %empty_struct_type [concrete] // CHECK:STDOUT: %struct_type.a.225: type = struct_type {.a: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type.8c6: = complete_type_witness %struct_type.a.225 [concrete] @@ -656,7 +660,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc14_27.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_27.2: type = converted %.loc14_27.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] @@ -667,7 +671,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { -// CHECK:STDOUT: %.loc5_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc5_8: %Abstract.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.225 [concrete = constants.%complete_type.8c6] @@ -681,7 +685,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %.loc9: %Derived.elem.513 = base_decl %Abstract.ref, element0 [concrete] -// CHECK:STDOUT: %.loc11_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc11_11.2: type = converted %.loc11_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc11_8: %Derived.elem.ad9 = field_decl d, element1 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.c06 [concrete = constants.%complete_type.b4a] @@ -713,6 +717,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Abstract [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -746,7 +751,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %l.patt: %pattern_type = value_binding_pattern l [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %l: %Abstract = value_binding l, [concrete = ] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/fail_abstract_in_struct.carbon b/toolchain/check/testdata/class/fail_abstract_in_struct.carbon index f7381dc6ca16..c45c1a271024 100644 --- a/toolchain/check/testdata/class/fail_abstract_in_struct.carbon +++ b/toolchain/check/testdata/class/fail_abstract_in_struct.carbon @@ -296,6 +296,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.m6.c1.489: type = struct_type {.m6: %Abstract6, .c1: %empty_tuple.type} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -312,7 +313,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %v3.var: ref = var %v3.var_patt [concrete = ] // CHECK:STDOUT: %.loc12_33: type = splice_block %struct_type.m6.c1 [concrete = constants.%struct_type.m6.c1.489] { // CHECK:STDOUT: %Abstract6.ref: type = name_ref Abstract6, %Abstract6.decl [concrete = constants.%Abstract6] -// CHECK:STDOUT: %.loc12_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_32.2: type = converted %.loc12_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.m6.c1: type = struct_type {.m6: %Abstract6, .c1: %empty_tuple.type} [concrete = constants.%struct_type.m6.c1.489] // CHECK:STDOUT: } @@ -334,6 +335,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.c2.m7.4a7: type = struct_type {.c2: %empty_tuple.type, .m7: %Abstract7} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -349,7 +351,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: } // CHECK:STDOUT: %v4.var: ref = var %v4.var_patt [concrete = ] // CHECK:STDOUT: %.loc12_33: type = splice_block %struct_type.c2.m7 [concrete = constants.%struct_type.c2.m7.4a7] { -// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_16.2: type = converted %.loc12_16.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Abstract7.ref: type = name_ref Abstract7, %Abstract7.decl [concrete = constants.%Abstract7] // CHECK:STDOUT: %struct_type.c2.m7: type = struct_type {.c2: %empty_tuple.type, .m7: %Abstract7} [concrete = constants.%struct_type.c2.m7.4a7] diff --git a/toolchain/check/testdata/class/fail_abstract_in_tuple.carbon b/toolchain/check/testdata/class/fail_abstract_in_tuple.carbon index 0f9ceb2e0b61..f8be0337eedb 100644 --- a/toolchain/check/testdata/class/fail_abstract_in_tuple.carbon +++ b/toolchain/check/testdata/class/fail_abstract_in_tuple.carbon @@ -133,6 +133,7 @@ fn Var5() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Contains: type = class_type @Contains [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%Abstract1) [concrete] // CHECK:STDOUT: %tuple.type.f19: type = tuple_type (%Abstract1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,7 +165,7 @@ fn Var5() { // CHECK:STDOUT: // CHECK:STDOUT: class @Contains { // CHECK:STDOUT: %Abstract1.ref: type = name_ref Abstract1, file.%Abstract1.decl [concrete = constants.%Abstract1] -// CHECK:STDOUT: %.loc13_21.1: %tuple.type.85c = tuple_literal (%Abstract1.ref) +// CHECK:STDOUT: %.loc13_21.1: %tuple.type.85c = tuple_literal (%Abstract1.ref) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc13_21.2: type = converted %.loc13_21.1, constants.%tuple.type.f19 [concrete = constants.%tuple.type.f19] // CHECK:STDOUT: %.loc13_8: = field_decl a, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness [concrete = ] @@ -185,6 +186,7 @@ fn Var5() { // CHECK:STDOUT: %Var.type: type = fn_type @Var [concrete] // CHECK:STDOUT: %Var: %Var.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%Abstract2) [concrete] // CHECK:STDOUT: %tuple.type.ac6: type = tuple_type (%Abstract2) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } @@ -226,7 +228,7 @@ fn Var5() { // CHECK:STDOUT: %v.var: ref = var %v.var_patt [concrete = ] // CHECK:STDOUT: %.loc13_21.1: type = splice_block %.loc13_21.3 [concrete = constants.%tuple.type.ac6] { // CHECK:STDOUT: %Abstract2.ref: type = name_ref Abstract2, file.%Abstract2.decl [concrete = constants.%Abstract2] -// CHECK:STDOUT: %.loc13_21.2: %tuple.type.85c = tuple_literal (%Abstract2.ref) +// CHECK:STDOUT: %.loc13_21.2: %tuple.type.85c = tuple_literal (%Abstract2.ref) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc13_21.3: type = converted %.loc13_21.2, constants.%tuple.type.ac6 [concrete = constants.%tuple.type.ac6] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref = ref_binding v, [concrete = ] @@ -243,6 +245,7 @@ fn Var5() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%Abstract3) [concrete] // CHECK:STDOUT: %tuple.type.fa1: type = tuple_type (%Abstract3) [concrete] // CHECK:STDOUT: %pattern_type.3cf: type = pattern_type %tuple.type.fa1 [concrete] // CHECK:STDOUT: } @@ -289,7 +292,7 @@ fn Var5() { // CHECK:STDOUT: %.loc7_28: %tuple.type.fa1 = tuple_literal (%a.ref) // CHECK:STDOUT: %.loc7_21.1: type = splice_block %.loc7_21.3 [concrete = constants.%tuple.type.fa1] { // CHECK:STDOUT: %Abstract3.ref.loc7: type = name_ref Abstract3, file.%Abstract3.decl [concrete = constants.%Abstract3] -// CHECK:STDOUT: %.loc7_21.2: %tuple.type.85c = tuple_literal (%Abstract3.ref.loc7) +// CHECK:STDOUT: %.loc7_21.2: %tuple.type.85c = tuple_literal (%Abstract3.ref.loc7) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc7_21.3: type = converted %.loc7_21.2, constants.%tuple.type.fa1 [concrete = constants.%tuple.type.fa1] // CHECK:STDOUT: } // CHECK:STDOUT: %l: %tuple.type.fa1 = value_binding l, [concrete = ] @@ -306,6 +309,7 @@ fn Var5() { // CHECK:STDOUT: %Var2.type: type = fn_type @Var2 [concrete] // CHECK:STDOUT: %Var2: %Var2.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%Abstract4, %Abstract5) [concrete] // CHECK:STDOUT: %tuple.type.e3e: type = tuple_type (%Abstract4, %Abstract5) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } @@ -358,7 +362,7 @@ fn Var5() { // CHECK:STDOUT: %.loc14_32.1: type = splice_block %.loc14_32.3 [concrete = constants.%tuple.type.e3e] { // CHECK:STDOUT: %Abstract4.ref: type = name_ref Abstract4, file.%Abstract4.decl [concrete = constants.%Abstract4] // CHECK:STDOUT: %Abstract5.ref: type = name_ref Abstract5, file.%Abstract5.decl [concrete = constants.%Abstract5] -// CHECK:STDOUT: %.loc14_32.2: %tuple.type.24b = tuple_literal (%Abstract4.ref, %Abstract5.ref) +// CHECK:STDOUT: %.loc14_32.2: %tuple.type.24b = tuple_literal (%Abstract4.ref, %Abstract5.ref) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc14_32.3: type = converted %.loc14_32.2, constants.%tuple.type.e3e [concrete = constants.%tuple.type.e3e] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: ref = ref_binding v2, [concrete = ] @@ -373,7 +377,9 @@ fn Var5() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Var3.type: type = fn_type @Var3 [concrete] // CHECK:STDOUT: %Var3: %Var3.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.159: type = tuple_type (type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.159 = tuple_value (%Abstract6, %empty_struct) [concrete] // CHECK:STDOUT: %tuple.type.d93: type = tuple_type (%Abstract6, %empty_struct_type) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } @@ -415,9 +421,9 @@ fn Var5() { // CHECK:STDOUT: %v3.var: ref = var %v3.var_patt [concrete = ] // CHECK:STDOUT: %.loc13_25.1: type = splice_block %.loc13_25.4 [concrete = constants.%tuple.type.d93] { // CHECK:STDOUT: %Abstract6.ref: type = name_ref Abstract6, file.%Abstract6.decl [concrete = constants.%Abstract6] -// CHECK:STDOUT: %.loc13_24: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_25.2: %tuple.type.159 = tuple_literal (%Abstract6.ref, %.loc13_24) -// CHECK:STDOUT: %.loc13_25.3: type = converted %.loc13_24, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_24: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_25.2: %tuple.type.159 = tuple_literal (%Abstract6.ref, %.loc13_24) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc13_25.3: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_25.4: type = converted %.loc13_25.2, constants.%tuple.type.d93 [concrete = constants.%tuple.type.d93] // CHECK:STDOUT: } // CHECK:STDOUT: %v3: ref = ref_binding v3, [concrete = ] @@ -432,7 +438,9 @@ fn Var5() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Var4.type: type = fn_type @Var4 [concrete] // CHECK:STDOUT: %Var4: %Var4.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.c8c: type = tuple_type (%empty_struct_type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.c8c = tuple_value (%empty_struct, %Abstract7) [concrete] // CHECK:STDOUT: %tuple.type.919: type = tuple_type (%empty_struct_type, %Abstract7) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } @@ -473,10 +481,10 @@ fn Var5() { // CHECK:STDOUT: } // CHECK:STDOUT: %v4.var: ref = var %v4.var_patt [concrete = ] // CHECK:STDOUT: %.loc13_25.1: type = splice_block %.loc13_25.4 [concrete = constants.%tuple.type.919] { -// CHECK:STDOUT: %.loc13_13: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_13: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Abstract7.ref: type = name_ref Abstract7, file.%Abstract7.decl [concrete = constants.%Abstract7] -// CHECK:STDOUT: %.loc13_25.2: %tuple.type.c8c = tuple_literal (%.loc13_13, %Abstract7.ref) -// CHECK:STDOUT: %.loc13_25.3: type = converted %.loc13_13, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_25.2: %tuple.type.c8c = tuple_literal (%.loc13_13, %Abstract7.ref) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc13_25.3: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_25.4: type = converted %.loc13_25.2, constants.%tuple.type.919 [concrete = constants.%tuple.type.919] // CHECK:STDOUT: } // CHECK:STDOUT: %v4: ref = ref_binding v4, [concrete = ] @@ -524,6 +532,7 @@ fn Var5() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%Abstract) [concrete] // CHECK:STDOUT: %tuple.type.555: type = tuple_type (%Abstract) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } @@ -567,7 +576,7 @@ fn Var5() { // CHECK:STDOUT: %v5.var: ref = var %v5.var_patt [concrete = ] // CHECK:STDOUT: %.loc14_21.1: type = splice_block %.loc14_21.3 [concrete = constants.%tuple.type.555] { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, imports.%Main.Abstract [concrete = constants.%Abstract] -// CHECK:STDOUT: %.loc14_21.2: %tuple.type.85c = tuple_literal (%Abstract.ref) +// CHECK:STDOUT: %.loc14_21.2: %tuple.type.85c = tuple_literal (%Abstract.ref) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc14_21.3: type = converted %.loc14_21.2, constants.%tuple.type.555 [concrete = constants.%tuple.type.555] // CHECK:STDOUT: } // CHECK:STDOUT: %v5: ref = ref_binding v5, [concrete = ] diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index 42e511663344..c10f4b83ca36 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -129,6 +129,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %Class.f29: type = class_type @Class, @Class(%ptr.235, %int_5.0f6) [concrete] // CHECK:STDOUT: %pattern_type.d51: type = pattern_type %Class.f29 [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0b3: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9be: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -199,7 +200,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %b.var: ref %Class.dd4 = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc9_19.1: type = splice_block %Class.loc9 [concrete = constants.%Class.dd4] { // CHECK:STDOUT: %Class.ref.loc9: %Class.type = name_ref Class, %Class.decl [concrete = constants.%Class.generic] -// CHECK:STDOUT: %.loc9_15: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_15: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc9_19.2: type = converted %.loc9_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %impl.elem0.loc9: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] @@ -542,6 +543,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.799: = require_complete_type %Outer.d8f [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Outer.val.f34: %Outer.d8f = struct_value () [symbolic] // CHECK:STDOUT: %Inner.type.2d0: type = generic_class_type @Inner, @Outer(%U) [symbolic] // CHECK:STDOUT: %Inner.generic.489: %Inner.type.2d0 = struct_value () [symbolic] @@ -691,7 +693,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Inner.A.%Outer.loc4_22.1 (%Outer.d8f) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc5_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_15.2: init @Inner.A.%Outer.loc4_22.1 (%Outer.d8f) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.f34)] // CHECK:STDOUT: %.loc5_16: init @Inner.A.%Outer.loc4_22.1 (%Outer.d8f) = converted %.loc5_15.1, %.loc5_15.2 [symbolic = %Outer.val (constants.%Outer.val.f34)] // CHECK:STDOUT: return %.loc5_16 to %return @@ -709,7 +711,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Inner.B.%Outer.loc7_22.1 (%Outer.680) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_15.2: init @Inner.B.%Outer.loc7_22.1 (%Outer.680) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.268)] // CHECK:STDOUT: %.loc8_16: init @Inner.B.%Outer.loc7_22.1 (%Outer.680) = converted %.loc8_15.1, %.loc8_15.2 [symbolic = %Outer.val (constants.%Outer.val.268)] // CHECK:STDOUT: return %.loc8_16 to %return @@ -729,7 +731,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Inner.C.%Inner.loc10_22.1 (%Inner.514) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc11_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc11_15.2: init @Inner.C.%Inner.loc10_22.1 (%Inner.514) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.39c)] // CHECK:STDOUT: %.loc11_16: init @Inner.C.%Inner.loc10_22.1 (%Inner.514) = converted %.loc11_15.1, %.loc11_15.2 [symbolic = %Inner.val (constants.%Inner.val.39c)] // CHECK:STDOUT: return %.loc11_16 to %return @@ -750,7 +752,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Inner.D.%Inner.loc13_22.1 (%Inner.f6c) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc14_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_15.2: init @Inner.D.%Inner.loc13_22.1 (%Inner.f6c) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.6e7)] // CHECK:STDOUT: %.loc14_16: init @Inner.D.%Inner.loc13_22.1 (%Inner.f6c) = converted %.loc14_15.1, %.loc14_15.2 [symbolic = %Inner.val (constants.%Inner.val.6e7)] // CHECK:STDOUT: return %.loc14_16 to %return diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index a9d426b40124..121b4e554053 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -296,6 +296,7 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.F.971: %CompleteClass.F.type.0aa = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.n.44a: type = struct_type {.n: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.n.44a = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.774: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.a38: = impl_witness imports.%ImplicitAs.impl_witness_table.99d, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] @@ -411,7 +412,7 @@ class Class(U:! type) { // CHECK:STDOUT: fn @F() -> %return.param: %CompleteClass.a06 [from "foo.carbon"] { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc9_17.1: %struct_type.n.44a = struct_literal (%int_1) +// CHECK:STDOUT: %.loc9_17.1: %struct_type.n.44a = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0: %.dc8 = impl_witness_access constants.%ImplicitAs.impl_witness.a38, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a89] // CHECK:STDOUT: %bound_method.loc9_17.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index cc6846b7c5f5..dd5537afeba5 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -263,6 +263,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%T) [symbolic] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_struct_type [symbolic] // CHECK:STDOUT: %struct_type.data: type = struct_type {.data: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.data [concrete] @@ -301,7 +302,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %C.F.decl: @C.%C.F.type (%C.F.type) = fn_decl @C.F [symbolic = @C.%C.F (constants.%C.F)] {} {} -// CHECK:STDOUT: %.loc13_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_14.2: type = converted %.loc13_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_11: @C.%C.elem (%C.elem) = field_decl data, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.data [concrete = constants.%complete_type] diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index 8917335074c5..f1fb9b294531 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -471,6 +471,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %pattern_type.de9: type = pattern_type %C.70f [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C.70f = struct_value () [concrete] // CHECK:STDOUT: %complete_type.619: = complete_type_witness %Inner.type.56c [concrete] // CHECK:STDOUT: %Inner.impl_witness.f06: = impl_witness @C.%Inner.impl_witness_table, @C.as.Inner.impl(%i32) [concrete] @@ -748,7 +749,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %c.var_patt: %pattern_type.de9 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C.70f = var %c.var_patt -// CHECK:STDOUT: %.loc23_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc23_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc23_26.2: init %C.70f = class_init (), %c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc23_3: init %C.70f = converted %.loc23_26.1, %.loc23_26.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign %c.var, %.loc23_3 diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index 181c89016e21..85bd40ac334d 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -45,6 +45,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.163: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.225: %tuple.type.24b = tuple_value (%T, %U) [symbolic] // CHECK:STDOUT: %tuple.type.d18: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.b8b: type = pattern_type %tuple.type.d18 [symbolic] // CHECK:STDOUT: %Class.Get.type.0f3: type = fn_type @Class.Get, @Class(%T) [symbolic] @@ -58,6 +59,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.6e6: = specific_function %Class.GetNoDeduce.c03, @Class.GetNoDeduce(%T, %U) [symbolic] // CHECK:STDOUT: %Class.480: type = class_type @Class, @Class(%A) [concrete] // CHECK:STDOUT: %pattern_type.827: type = pattern_type %Class.480 [concrete] +// CHECK:STDOUT: %tuple.5a2: %tuple.type.24b = tuple_value (%A, %B) [concrete] // CHECK:STDOUT: %tuple.type.cc6: type = tuple_type (%A, %B) [concrete] // CHECK:STDOUT: %pattern_type.edc: type = pattern_type %tuple.type.cc6 [concrete] // CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete] @@ -69,6 +71,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.Get.specific_fn.609: = specific_function %Class.Get.f37, @Class.Get(%A, %B) [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.type: type = fn_type @CallGenericMethodWithNonDeducedParam [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam: %CallGenericMethodWithNonDeducedParam.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.51a: = specific_function %Class.GetNoDeduce.162, @Class.GetNoDeduce(%A, %B) [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] @@ -117,7 +120,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc23_39: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc23_43.1: %tuple.type.24b = tuple_literal (%A.ref.loc23_39, %B.ref.loc23) +// CHECK:STDOUT: %.loc23_43.1: %tuple.type.24b = tuple_literal (%A.ref.loc23_39, %B.ref.loc23) [concrete = constants.%tuple.5a2] // CHECK:STDOUT: %.loc23_43.2: type = converted %.loc23_43.1, constants.%tuple.type.cc6 [concrete = constants.%tuple.type.cc6] // CHECK:STDOUT: %c.param: %Class.480 = value_param call_param0 // CHECK:STDOUT: %.loc23_32: type = splice_block %Class [concrete = constants.%Class.480] { @@ -137,7 +140,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc27_58: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %B.ref.loc27: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc27_62.1: %tuple.type.24b = tuple_literal (%A.ref.loc27_58, %B.ref.loc27) +// CHECK:STDOUT: %.loc27_62.1: %tuple.type.24b = tuple_literal (%A.ref.loc27_58, %B.ref.loc27) [concrete = constants.%tuple.5a2] // CHECK:STDOUT: %.loc27_62.2: type = converted %.loc27_62.1, constants.%tuple.type.cc6 [concrete = constants.%tuple.type.cc6] // CHECK:STDOUT: %c.param: %Class.480 = value_param call_param0 // CHECK:STDOUT: %.loc27_51: type = splice_block %Class [concrete = constants.%Class.480] { @@ -184,7 +187,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc19_27: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] -// CHECK:STDOUT: %.loc19_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc19_27) +// CHECK:STDOUT: %.loc19_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc19_27) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %.loc19_28.2: type = converted %.loc19_28.1, constants.%tuple.type.d18 [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc19_10.2: type = symbolic_binding U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] @@ -200,7 +203,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc20_38: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc20_41: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] -// CHECK:STDOUT: %.loc20_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc20_38, %U.ref.loc20_41) +// CHECK:STDOUT: %.loc20_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc20_38, %U.ref.loc20_41) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %.loc20_42.2: type = converted %.loc20_42.1, constants.%tuple.type.d18 [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %x.param: @Class.GetNoDeduce.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref.loc20_21: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] @@ -224,6 +227,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: generic fn @Class.Get(@Class.%T.loc18_13.2: type, %U.loc19_10.2: type) { // CHECK:STDOUT: %U.loc19_10.1: type = symbolic_binding U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T, %U.loc19_10.1) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc19_10.1) [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.b8b)] // CHECK:STDOUT: @@ -249,6 +253,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type.loc20_18: type = pattern_type %T [symbolic = %pattern_type.loc20_18 (constants.%pattern_type.e68)] // CHECK:STDOUT: %U.loc20_24.1: type = symbolic_binding U, 1 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T, %U.loc20_24.1) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc20_24.1) [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %pattern_type.loc20_34: type = pattern_type %tuple.type [symbolic = %pattern_type.loc20_34 (constants.%pattern_type.b8b)] // CHECK:STDOUT: @@ -289,7 +294,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %c.ref: %Class.480 = name_ref c, %c // CHECK:STDOUT: %.loc28_11: %Class.GetNoDeduce.type.5d6 = specific_constant @Class.%Class.GetNoDeduce.decl, @Class(constants.%A) [concrete = constants.%Class.GetNoDeduce.162] // CHECK:STDOUT: %GetNoDeduce.ref: %Class.GetNoDeduce.type.5d6 = name_ref GetNoDeduce, %.loc28_11 [concrete = constants.%Class.GetNoDeduce.162] -// CHECK:STDOUT: %.loc28_25.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc28_25.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %B.ref.loc28: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn: = specific_function %GetNoDeduce.ref, @Class.GetNoDeduce(constants.%A, constants.%B) [concrete = constants.%Class.GetNoDeduce.specific_fn.51a] // CHECK:STDOUT: %.loc27_54: ref %tuple.type.cc6 = splice_block %return {} @@ -320,6 +325,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: specific @Class.Get(constants.%T, constants.%U) { // CHECK:STDOUT: %U.loc19_10.1 => constants.%U // CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %tuple => constants.%tuple.225 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.d18 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b8b // CHECK:STDOUT: @@ -334,6 +340,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type.loc20_18 => constants.%pattern_type.e68 // CHECK:STDOUT: %U.loc20_24.1 => constants.%U +// CHECK:STDOUT: %tuple => constants.%tuple.225 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.d18 // CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.b8b // CHECK:STDOUT: @@ -358,6 +365,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: specific @Class.Get(constants.%A, constants.%B) { // CHECK:STDOUT: %U.loc19_10.1 => constants.%B // CHECK:STDOUT: %T => constants.%A +// CHECK:STDOUT: %tuple => constants.%tuple.5a2 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.edc // CHECK:STDOUT: @@ -372,6 +380,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T => constants.%A // CHECK:STDOUT: %pattern_type.loc20_18 => constants.%pattern_type.c10 // CHECK:STDOUT: %U.loc20_24.1 => constants.%B +// CHECK:STDOUT: %tuple => constants.%tuple.5a2 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.edc // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index 85370be7819c..b7b4d97814e6 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -44,6 +44,7 @@ class Class(T:! type) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.1d2: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Class.val: %Class = struct_value () [symbolic] // CHECK:STDOUT: %Class.MakeSelf.specific_fn: = specific_function %Class.MakeSelf, @Class.MakeSelf(%T) [symbolic] // CHECK:STDOUT: %Class.MakeClass.specific_fn: = specific_function %Class.MakeClass, @Class.MakeClass(%T) [symbolic] @@ -145,7 +146,7 @@ class Class(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Class.MakeSelf.%Class (%Class) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc18_35.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc18_35.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc18_35.2: init @Class.MakeSelf.%Class (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: %.loc18_36: init @Class.MakeSelf.%Class (%Class) = converted %.loc18_35.1, %.loc18_35.2 [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: return %.loc18_36 to %return @@ -163,7 +164,7 @@ class Class(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Class.MakeClass.%Class.loc19_28.1 (%Class) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_40.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_40.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_40.2: init @Class.MakeClass.%Class.loc19_28.1 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: %.loc19_41: init @Class.MakeClass.%Class.loc19_28.1 (%Class) = converted %.loc19_40.1, %.loc19_40.2 [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: return %.loc19_41 to %return diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index e563504b0056..e88816e713ea 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -186,6 +186,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %Inner.f6c: type = class_type @Inner, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %Outer.614: type = class_type @Outer, @Outer(%ptr.c28) [concrete] // CHECK:STDOUT: %Inner.type.5d2: type = generic_class_type @Inner, @Outer(%ptr.c28) [concrete] @@ -235,7 +236,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %v.var: ref %Outer.614 = var %v.var_patt [concrete] // CHECK:STDOUT: %.loc9_17: type = splice_block %Outer.loc9 [concrete = constants.%Outer.614] { // CHECK:STDOUT: %Outer.ref.loc9: %Outer.type = name_ref Outer, %Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %.loc9_15: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_15: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_16: type = converted %.loc9_15, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc9: type = ptr_type %.loc9_16 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %Outer.loc9: type = class_type @Outer, @Outer(constants.%ptr.c28) [concrete = constants.%Outer.614] @@ -248,7 +249,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %w.var: ref %Inner.546 = var %w.var_patt [concrete] // CHECK:STDOUT: %.loc19_35: type = splice_block %Inner [concrete = constants.%Inner.546] { // CHECK:STDOUT: %Outer.ref.loc19: %Outer.type = name_ref Outer, %Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %.loc19_15: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_15: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_16: type = converted %.loc19_15, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc19_16: type = ptr_type %.loc19_16 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %Outer.loc19: type = class_type @Outer, @Outer(constants.%ptr.c28) [concrete = constants.%Outer.614] @@ -366,6 +367,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %int_123.f7f: %i32 = int_value 123 [concrete] // CHECK:STDOUT: %C.4c3: type = class_type @C, @C(%int_123.f7f) [concrete] // CHECK:STDOUT: %pattern_type.1b4: type = pattern_type %C.4c3 [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -434,7 +436,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc13_18: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_18: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_1: %C.4c3 = converted %.loc13_18, [concrete = ] // CHECK:STDOUT: assign file.%v.var, // CHECK:STDOUT: return @@ -473,6 +475,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -493,8 +496,10 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %D.val.413: %D = struct_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] +// CHECK:STDOUT: %struct.cb7: %struct_type.a.b.cfd = struct_value (%int_3.1ba, %int_4.0c1) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.def: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] @@ -544,7 +549,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %E.ref: %E.type = name_ref E, %E.decl [concrete = constants.%E.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc25_25.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc25_25.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %impl.elem0.loc25_25.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc25_25.1: = bound_method %int_1, %impl.elem0.loc25_25.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc25_25.1: = specific_function %impl.elem0.loc25_25.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -602,11 +607,11 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc25_31: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc25_31: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %E.ref: %E.type = name_ref E, file.%E.decl [concrete = constants.%E.generic] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc25_53.1: %struct_type.a.b.cfd = struct_literal (%int_3, %int_4) +// CHECK:STDOUT: %.loc25_53.1: %struct_type.a.b.cfd = struct_literal (%int_3, %int_4) [concrete = constants.%struct.cb7] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %impl.elem0.loc25_53.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc25_53.1: = bound_method %int_3, %impl.elem0.loc25_53.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d] diff --git a/toolchain/check/testdata/class/generic_vs_params.carbon b/toolchain/check/testdata/class/generic_vs_params.carbon index 5f175cca74d6..cf09c734390b 100644 --- a/toolchain/check/testdata/class/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/generic_vs_params.carbon @@ -104,6 +104,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %GenericAndParams.0e8: type = class_type @GenericAndParams.loc10, @GenericAndParams.loc10(%T, %U) [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %pattern_type.71d: type = pattern_type %NotGenericNoParams [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %NotGenericNoParams.val: %NotGenericNoParams = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.4f9: type = pattern_type %NotGenericButParams [concrete] // CHECK:STDOUT: %NotGenericButParams.val: %NotGenericButParams = struct_value () [concrete] @@ -299,23 +300,23 @@ class Foo[T:! type]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_30.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_30.2: init %NotGenericNoParams = class_init (), file.%a.var [concrete = constants.%NotGenericNoParams.val] // CHECK:STDOUT: %.loc15_1: init %NotGenericNoParams = converted %.loc15_30.1, %.loc15_30.2 [concrete = constants.%NotGenericNoParams.val] // CHECK:STDOUT: assign file.%a.var, %.loc15_1 -// CHECK:STDOUT: %.loc16_33.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc16_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc16_33.2: init %NotGenericButParams = class_init (), file.%b.var [concrete = constants.%NotGenericButParams.val] // CHECK:STDOUT: %.loc16_1: init %NotGenericButParams = converted %.loc16_33.1, %.loc16_33.2 [concrete = constants.%NotGenericButParams.val] // CHECK:STDOUT: assign file.%b.var, %.loc16_1 -// CHECK:STDOUT: %.loc17_31.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc17_31.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc17_31.2: init %GenericAndParams.2bb = class_init (), file.%c.var [concrete = constants.%GenericAndParams.val.0b2] // CHECK:STDOUT: %.loc17_1: init %GenericAndParams.2bb = converted %.loc17_31.1, %.loc17_31.2 [concrete = constants.%GenericAndParams.val.0b2] // CHECK:STDOUT: assign file.%c.var, %.loc17_1 -// CHECK:STDOUT: %.loc18_32.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc18_32.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc18_32.2: init %GenericNoParams.fa1 = class_init (), file.%d.var [concrete = constants.%GenericNoParams.val] // CHECK:STDOUT: %.loc18_1: init %GenericNoParams.fa1 = converted %.loc18_32.1, %.loc18_32.2 [concrete = constants.%GenericNoParams.val] // CHECK:STDOUT: assign file.%d.var, %.loc18_1 -// CHECK:STDOUT: %.loc19_36.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_36.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_36.2: init %GenericAndParams.73d = class_init (), file.%e.var [concrete = constants.%GenericAndParams.val.a0c] // CHECK:STDOUT: %.loc19_1: init %GenericAndParams.73d = converted %.loc19_36.1, %.loc19_36.2 [concrete = constants.%GenericAndParams.val.a0c] // CHECK:STDOUT: assign file.%e.var, %.loc19_1 diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index f966eb89e06b..65d03edf2572 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -163,6 +163,7 @@ fn Run() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.2f0: type = pattern_type %Empty [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Empty.val: %Empty = struct_value () [concrete] // CHECK:STDOUT: %Field: type = class_type @Field [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -172,6 +173,7 @@ fn Run() { // CHECK:STDOUT: %pattern_type.f46: type = pattern_type %Field [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.x.c96 = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.bd9: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -336,7 +338,7 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.2f0 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %Empty = var %a.var_patt -// CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_19.2: init %Empty = class_init (), %a.var [concrete = constants.%Empty.val] // CHECK:STDOUT: %.loc7_3: init %Empty = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%Empty.val] // CHECK:STDOUT: assign %a.var, %.loc7_3 @@ -348,7 +350,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %Field = var %b.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0.loc9: %.1a5 = impl_witness_access constants.%ImplicitAs.impl_witness.09b, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.13e] // CHECK:STDOUT: %bound_method.loc9_25.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b66] // CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -378,7 +380,7 @@ fn Run() { // CHECK:STDOUT: %c.var_patt: %pattern_type.1b8 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %ForwardDeclared.7b34f2.1 = var %c.var_patt -// CHECK:STDOUT: %.loc12_29.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_29.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_29.2: init %ForwardDeclared.7b34f2.1 = class_init (), %c.var [concrete = constants.%ForwardDeclared.val] // CHECK:STDOUT: %.loc12_3: init %ForwardDeclared.7b34f2.1 = converted %.loc12_29.1, %.loc12_29.2 [concrete = constants.%ForwardDeclared.val] // CHECK:STDOUT: assign %c.var, %.loc12_3 diff --git a/toolchain/check/testdata/class/import_access.carbon b/toolchain/check/testdata/class/import_access.carbon index 69ab9895bba6..93a15a87030f 100644 --- a/toolchain/check/testdata/class/import_access.carbon +++ b/toolchain/check/testdata/class/import_access.carbon @@ -209,6 +209,7 @@ private class Redecl {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Def [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Def.val: %Def = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -243,7 +244,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_15.2: init %Def = class_init (), file.%c.var [concrete = constants.%Def.val] // CHECK:STDOUT: %.loc4_1: init %Def = converted %.loc4_15.1, %.loc4_15.2 [concrete = constants.%Def.val] // CHECK:STDOUT: assign file.%c.var, %.loc4_1 @@ -254,6 +255,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -273,7 +275,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -282,6 +284,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -311,7 +314,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -323,6 +326,7 @@ private class Redecl {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %ForwardWithDef [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ForwardWithDef.val: %ForwardWithDef = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -357,7 +361,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_26.2: init %ForwardWithDef = class_init (), file.%c.var [concrete = constants.%ForwardWithDef.val] // CHECK:STDOUT: %.loc4_1: init %ForwardWithDef = converted %.loc4_26.1, %.loc4_26.2 [concrete = constants.%ForwardWithDef.val] // CHECK:STDOUT: assign file.%c.var, %.loc4_1 @@ -368,6 +372,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -387,7 +392,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -396,6 +401,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -425,7 +431,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/import_addr.carbon b/toolchain/check/testdata/class/import_addr.carbon index 446fee162f84..3ce26933e685 100644 --- a/toolchain/check/testdata/class/import_addr.carbon +++ b/toolchain/check/testdata/class/import_addr.carbon @@ -170,6 +170,7 @@ fn Run() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.2f0: type = pattern_type %Empty [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Empty.val: %Empty = struct_value () [concrete] // CHECK:STDOUT: %Field: type = class_type @Field [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -179,6 +180,7 @@ fn Run() { // CHECK:STDOUT: %pattern_type.f46: type = pattern_type %Field [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.x.c96 = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.bd9: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -343,7 +345,7 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.2f0 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %Empty = var %a.var_patt -// CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_19.2: init %Empty = class_init (), %a.var [concrete = constants.%Empty.val] // CHECK:STDOUT: %.loc7_3: init %Empty = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%Empty.val] // CHECK:STDOUT: assign %a.var, %.loc7_3 @@ -355,7 +357,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %Field = var %b.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0.loc9: %.1a5 = impl_witness_access constants.%ImplicitAs.impl_witness.09b, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.13e] // CHECK:STDOUT: %bound_method.loc9_25.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b66] // CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -385,7 +387,7 @@ fn Run() { // CHECK:STDOUT: %c.var_patt: %pattern_type.1b8 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %ForwardDeclared.7b34f2.1 = var %c.var_patt -// CHECK:STDOUT: %.loc12_29.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_29.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_29.2: init %ForwardDeclared.7b34f2.1 = class_init (), %c.var [concrete = constants.%ForwardDeclared.val] // CHECK:STDOUT: %.loc12_3: init %ForwardDeclared.7b34f2.1 = converted %.loc12_29.1, %.loc12_29.2 [concrete = constants.%ForwardDeclared.val] // CHECK:STDOUT: assign %c.var, %.loc12_3 diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index 054c84a3c127..aeb8c68bb3b6 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -151,7 +151,9 @@ fn Run() { // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.x.unused.c45: type = struct_type {.x: Core.IntLiteral, .unused: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.9cc: %struct_type.x.unused.c45 = struct_value (%int_0.5c6, %int_1.5b8) [concrete] // CHECK:STDOUT: %struct_type.base.6c7: type = struct_type {.base: %struct_type.x.unused.c45} [concrete] +// CHECK:STDOUT: %struct.133: %struct_type.base.6c7 = struct_value (%struct.9cc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.bd9: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -258,8 +260,8 @@ fn Run() { // CHECK:STDOUT: %a.var: ref %Child = var %a.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc7_47.1: %struct_type.x.unused.c45 = struct_literal (%int_0, %int_1) -// CHECK:STDOUT: %.loc7_48.1: %struct_type.base.6c7 = struct_literal (%.loc7_47.1) +// CHECK:STDOUT: %.loc7_47.1: %struct_type.x.unused.c45 = struct_literal (%int_0, %int_1) [concrete = constants.%struct.9cc] +// CHECK:STDOUT: %.loc7_48.1: %struct_type.base.6c7 = struct_literal (%.loc7_47.1) [concrete = constants.%struct.133] // CHECK:STDOUT: %impl.elem0.loc7_47.1: %.1a5 = impl_witness_access constants.%ImplicitAs.impl_witness.09b, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.13e] // CHECK:STDOUT: %bound_method.loc7_47.1: = bound_method %int_0, %impl.elem0.loc7_47.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.7ff] // CHECK:STDOUT: %specific_fn.loc7_47.1: = specific_function %impl.elem0.loc7_47.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/class/import_indirect.carbon b/toolchain/check/testdata/class/import_indirect.carbon index f04bfe5c1995..9cd907d414b0 100644 --- a/toolchain/check/testdata/class/import_indirect.carbon +++ b/toolchain/check/testdata/class/import_indirect.carbon @@ -143,6 +143,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -216,7 +217,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_17.2: init %C = class_init (), file.%b_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_17.1, %.loc8_17.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%b_val.var, %.loc8_1 @@ -238,6 +239,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -311,7 +313,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_17.2: init %C = class_init (), file.%c_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_17.1, %.loc8_17.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c_val.var, %.loc8_1 @@ -333,6 +335,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -409,7 +412,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 @@ -431,6 +434,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -507,7 +511,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 @@ -529,6 +533,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -609,7 +614,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 @@ -631,6 +636,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] @@ -711,7 +717,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 diff --git a/toolchain/check/testdata/class/indirect_import_member.carbon b/toolchain/check/testdata/class/indirect_import_member.carbon index 3adeb3e1a733..7e78cb7c8a63 100644 --- a/toolchain/check/testdata/class/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/indirect_import_member.carbon @@ -255,6 +255,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -282,7 +283,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -311,6 +312,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -338,7 +340,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -367,6 +369,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -394,7 +397,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -423,6 +426,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -454,7 +458,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -492,6 +496,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -523,7 +528,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index c3c3ffe0f3ed..9e16002aeb1b 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -266,6 +266,7 @@ class B { // CHECK:STDOUT: %Circle.elem: type = unbound_element_type %Circle, %Shape [concrete] // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Circle [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Circle.GetPosition.type: type = fn_type @Circle.GetPosition [concrete] @@ -337,7 +338,7 @@ class B { // CHECK:STDOUT: %i32.loc12_36: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc12_41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc12_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc12_44.1: %tuple.type.24b = tuple_literal (%i32.loc12_36, %i32.loc12_41) +// CHECK:STDOUT: %.loc12_44.1: %tuple.type.24b = tuple_literal (%i32.loc12_36, %i32.loc12_41) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc12_44.2: type = converted %.loc12_44.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %self.param: %Circle = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] @@ -415,6 +416,7 @@ class B { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] // CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] @@ -486,7 +488,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_26.2: type = converted %.loc15_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index 5ff502968002..8815863c7a0a 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -40,6 +40,7 @@ fn F() -> i32 { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -137,7 +138,7 @@ fn F() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc21_26.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc21_26.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %impl.elem0.loc21_26.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc21_26.1: = bound_method %int_1, %impl.elem0.loc21_26.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index 3f34574d69ec..873b8a7b5a9c 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -51,6 +51,7 @@ class A { // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n.033 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.n.44a: type = struct_type {.n: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.n.44a = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -185,7 +186,7 @@ class A { // CHECK:STDOUT: %b.var_patt: %pattern_type.971 = var_pattern %b.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc19_39.1: %struct_type.n.44a = struct_literal (%int_1) +// CHECK:STDOUT: %.loc19_39.1: %struct_type.n.44a = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc19_39.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 171becc3644f..428b0d55a8fe 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -99,6 +99,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %CallOnConstBoundMethod: %CallOnConstBoundMethod.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.k.240: type = struct_type {.k: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.k.240 = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -377,7 +378,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: fn @CallOnConstBoundMethod() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc39_18.1: %struct_type.k.240 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc39_18.1: %struct_type.k.240 = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc39_18.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] diff --git a/toolchain/check/testdata/class/method_addr.carbon b/toolchain/check/testdata/class/method_addr.carbon index a1f671da8ce3..c73be57280a3 100644 --- a/toolchain/check/testdata/class/method_addr.carbon +++ b/toolchain/check/testdata/class/method_addr.carbon @@ -102,6 +102,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %CallOnConstBoundMethod: %CallOnConstBoundMethod.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.k.240: type = struct_type {.k: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.k.240 = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -382,7 +383,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: fn @CallOnConstBoundMethod() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc39_18.1: %struct_type.k.240 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc39_18.1: %struct_type.k.240 = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc39_18.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] diff --git a/toolchain/check/testdata/class/partial.carbon b/toolchain/check/testdata/class/partial.carbon index d1b533bb96aa..3ca89c5eca92 100644 --- a/toolchain/check/testdata/class/partial.carbon +++ b/toolchain/check/testdata/class/partial.carbon @@ -316,6 +316,7 @@ fn F[T:! type](p: partial T*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%C, %C) [concrete] // CHECK:STDOUT: %tuple.type.56b: type = tuple_type (%C, %C) [concrete] // CHECK:STDOUT: %.62c: type = partial_type %tuple.type.56b [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %.62c [concrete] @@ -335,7 +336,7 @@ fn F[T:! type](p: partial T*); // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%.62c] { // CHECK:STDOUT: %C.ref.loc10_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc10_21: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc10_22: %tuple.type.24b = tuple_literal (%C.ref.loc10_18, %C.ref.loc10_21) +// CHECK:STDOUT: %.loc10_22: %tuple.type.24b = tuple_literal (%C.ref.loc10_18, %C.ref.loc10_21) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc10_9.2: type = converted %.loc10_22, constants.%tuple.type.56b [concrete = constants.%tuple.type.56b] // CHECK:STDOUT: %.loc10_9.3: type = partial_type %.loc10_9.2 [concrete = constants.%.62c] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index 1fdaf8762ea3..b6db2f222cf8 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -40,6 +40,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] @@ -107,7 +108,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc25_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc25_46: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25_49.1: %tuple.type.24b = tuple_literal (%i32.loc25_41, %i32.loc25_46) +// CHECK:STDOUT: %.loc25_49.1: %tuple.type.24b = tuple_literal (%i32.loc25_41, %i32.loc25_46) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc25_49.2: type = converted %.loc25_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %self.param.loc25_16: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [concrete = constants.%Class] @@ -152,7 +153,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc17_37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc17_42: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17_45.1: %tuple.type.24b = tuple_literal (%i32.loc17_37, %i32.loc17_42) +// CHECK:STDOUT: %.loc17_45.1: %tuple.type.24b = tuple_literal (%i32.loc17_37, %i32.loc17_42) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc17_45.2: type = converted %.loc17_45.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %self.param.loc17_12: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] diff --git a/toolchain/check/testdata/class/raw_self_addr.carbon b/toolchain/check/testdata/class/raw_self_addr.carbon index 51aa3bc4da45..65bfb0a066ab 100644 --- a/toolchain/check/testdata/class/raw_self_addr.carbon +++ b/toolchain/check/testdata/class/raw_self_addr.carbon @@ -43,6 +43,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] @@ -114,7 +115,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc25_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc25_46: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25_49.1: %tuple.type.24b = tuple_literal (%i32.loc25_41, %i32.loc25_46) +// CHECK:STDOUT: %.loc25_49.1: %tuple.type.24b = tuple_literal (%i32.loc25_41, %i32.loc25_46) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc25_49.2: type = converted %.loc25_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %self.param.loc25_16: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [concrete = constants.%Class] @@ -163,7 +164,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc17_37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc17_42: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17_45.1: %tuple.type.24b = tuple_literal (%i32.loc17_37, %i32.loc17_42) +// CHECK:STDOUT: %.loc17_45.1: %tuple.type.24b = tuple_literal (%i32.loc17_37, %i32.loc17_42) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc17_45.2: type = converted %.loc17_45.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %self.param.loc17_12: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index 365978e5575b..852484ce0376 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -26,6 +26,7 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: %Class: type = class_type @Class [concrete] // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] @@ -59,7 +60,7 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: %self.loc21: %Class = value_binding self, %self.param.loc21 // CHECK:STDOUT: %b.param.loc21: %empty_tuple.type = value_param call_param1 // CHECK:STDOUT: %.loc21_28.1: type = splice_block %.loc21_28.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc21_28.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc21_28.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc21_28.3: type = converted %.loc21_28.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b.loc21: %empty_tuple.type = value_binding b, %b.param.loc21 @@ -78,7 +79,7 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: %self.loc18: %Class = value_binding self, %self.param.loc18 // CHECK:STDOUT: %b.param.loc18: %empty_tuple.type = value_param call_param1 // CHECK:STDOUT: %.loc18_24.1: type = splice_block %.loc18_24.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc18_24.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_24.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_24.3: type = converted %.loc18_24.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b.loc18: %empty_tuple.type = value_binding b, %b.param.loc18 diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index d953357ff7e1..df11ad42ead9 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -87,6 +87,7 @@ class A { // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.48c: %struct_type.a.a6c = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -107,6 +108,7 @@ class A { // CHECK:STDOUT: %pattern_type.98e: type = pattern_type %B [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.26f: %struct_type.b.a15 = struct_value (%int_2.ecc) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] @@ -114,6 +116,7 @@ class A { // CHECK:STDOUT: %pattern_type.6d8: type = pattern_type %C [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.c.5b8: type = struct_type {.c: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.d98: %struct_type.c.5b8 = struct_value (%int_3.1ba) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.def: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] @@ -121,6 +124,7 @@ class A { // CHECK:STDOUT: %pattern_type.d58: type = pattern_type %D [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.d.3ea: type = struct_type {.d: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.5a9: %struct_type.d.3ea = struct_value (%int_4.0c1) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0b5: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.5dd: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] @@ -267,7 +271,7 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %A = var %a.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc33_25.1: %struct_type.a.a6c = struct_literal (%int_1) +// CHECK:STDOUT: %.loc33_25.1: %struct_type.a.a6c = struct_literal (%int_1) [concrete = constants.%struct.48c] // CHECK:STDOUT: %impl.elem0.loc33: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc33_25.1: = bound_method %int_1, %impl.elem0.loc33 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -287,7 +291,7 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %B = var %b.var_patt // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc34_25.1: %struct_type.b.a15 = struct_literal (%int_2) +// CHECK:STDOUT: %.loc34_25.1: %struct_type.b.a15 = struct_literal (%int_2) [concrete = constants.%struct.26f] // CHECK:STDOUT: %impl.elem0.loc34: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc34_25.1: = bound_method %int_2, %impl.elem0.loc34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393] // CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -307,7 +311,7 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc35_25.1: %struct_type.c.5b8 = struct_literal (%int_3) +// CHECK:STDOUT: %.loc35_25.1: %struct_type.c.5b8 = struct_literal (%int_3) [concrete = constants.%struct.d98] // CHECK:STDOUT: %impl.elem0.loc35: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc35_25.1: = bound_method %int_3, %impl.elem0.loc35 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d] // CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -327,7 +331,7 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %D = var %d.var_patt // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc36_25.1: %struct_type.d.3ea = struct_literal (%int_4) +// CHECK:STDOUT: %.loc36_25.1: %struct_type.d.3ea = struct_literal (%int_4) [concrete = constants.%struct.5a9] // CHECK:STDOUT: %impl.elem0.loc36: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc36_25.1: = bound_method %int_4, %impl.elem0.loc36 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0b5] // CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/class/syntactic_merge.carbon b/toolchain/check/testdata/class/syntactic_merge.carbon index 04429920487c..816187ad7ce5 100644 --- a/toolchain/check/testdata/class/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/syntactic_merge.carbon @@ -1153,6 +1153,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Base [concrete] // CHECK:STDOUT: %Base.F.type.7c6384.1: type = fn_type @Base.F.loc7 [concrete] @@ -1161,7 +1162,6 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete] // CHECK:STDOUT: %Base.F.type.7c6384.2: type = fn_type @Base.F.loc17 [concrete] // CHECK:STDOUT: %Base.F.d17bbc.2: %Base.F.type.7c6384.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1180,7 +1180,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %Base.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %Base.F.decl: %Base.F.type.7c6384.1 = fn_decl @Base.F.loc7 [concrete = constants.%Base.F.d17bbc.1] { @@ -1208,7 +1208,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc5_8 [concrete = @Base.%.loc5_8] // CHECK:STDOUT: %.loc18_7: ref %empty_tuple.type = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc18_13.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_13.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_13.2: init %empty_tuple.type = tuple_init () to %.loc18_7 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_10: init %empty_tuple.type = converted %.loc18_13.1, %.loc18_13.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %.loc18_7, %.loc18_10 @@ -1220,6 +1220,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %empty_tuple.type [concrete] // CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [concrete] // CHECK:STDOUT: %pattern_type.1b9: type = pattern_type %ptr.11f [concrete] @@ -1230,7 +1231,6 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete] // CHECK:STDOUT: %Base.F.type.7c6384.2: type = fn_type @Base.F.loc17 [concrete] // CHECK:STDOUT: %Base.F.d17bbc.2: %Base.F.type.7c6384.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1253,7 +1253,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %Base.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %Base.F.decl: %Base.F.type.7c6384.1 = fn_decl @Base.F.loc7 [concrete = constants.%Base.F.d17bbc.1] { @@ -1286,7 +1286,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %.loc18_4: ref %Base = deref %self.ref // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc5_8 [concrete = @Base.%.loc5_8] // CHECK:STDOUT: %.loc18_10: ref %empty_tuple.type = class_element_access %.loc18_4, element0 -// CHECK:STDOUT: %.loc18_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_16.2: init %empty_tuple.type = tuple_init () to %.loc18_10 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_13: init %empty_tuple.type = converted %.loc18_16.1, %.loc18_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %.loc18_10, %.loc18_13 diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index 7a41c5f1b38e..c5c645ce5cfa 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -658,7 +658,9 @@ class T2(G2:! type) { // CHECK:STDOUT: %Use.type: type = fn_type @Use [concrete] // CHECK:STDOUT: %Use: %Use.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.f5e: type = struct_type {.base: %empty_struct_type} [concrete] +// CHECK:STDOUT: %struct: %struct_type.base.f5e = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%Derived.vtable_ptr) [concrete] // CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val) [concrete] @@ -755,8 +757,8 @@ class T2(G2:! type) { // CHECK:STDOUT: %d.var_patt: %pattern_type.fb9 = var_pattern %d.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %Derived = var %d.var_patt -// CHECK:STDOUT: %.loc12_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc12_31.1: %struct_type.base.f5e = struct_literal (%.loc12_30.1) +// CHECK:STDOUT: %.loc12_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc12_31.1: %struct_type.base.f5e = struct_literal (%.loc12_30.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc12_31.2: ref %Base = class_element_access %d.var, element0 // CHECK:STDOUT: %.loc12_30.2: ref %ptr.454 = class_element_access %.loc12_31.2, element0 // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete = constants.%Derived.vtable_ptr] @@ -882,6 +884,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %pattern_type.80f: type = pattern_type %Base [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Base.H.type: type = fn_type @Base.H [concrete] // CHECK:STDOUT: %Base.H: %Base.H.type = struct_value () [concrete] // CHECK:STDOUT: %Base.vtable_decl: ref %ptr.454 = vtable_decl @Base.vtable [concrete] @@ -945,7 +948,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %v.var_patt: %pattern_type.80f = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %Base = var %v.var_patt -// CHECK:STDOUT: %.loc7_28.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_28.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_28.2: ref %ptr.454 = class_element_access %v.var, element0 // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete = constants.%Base.vtable_ptr] // CHECK:STDOUT: %.loc7_28.3: init %ptr.454 = initialize_from %Base.vtable_ptr to %.loc7_28.2 [concrete = constants.%Base.vtable_ptr] @@ -1092,13 +1095,16 @@ class T2(G2:! type) { // CHECK:STDOUT: %Use.type: type = fn_type @Use [concrete] // CHECK:STDOUT: %Use: %Use.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %B1.vtable_ptr: ref %ptr.454 = vtable_ptr @B1.vtable [concrete] // CHECK:STDOUT: %B1.val.267: %B1 = struct_value (%B1.vtable_ptr) [concrete] // CHECK:STDOUT: %struct_type.base.f5e: type = struct_type {.base: %empty_struct_type} [concrete] +// CHECK:STDOUT: %struct.6b1: %struct_type.base.f5e = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: %B2.vtable_ptr: ref %ptr.454 = vtable_ptr @B2.vtable [concrete] // CHECK:STDOUT: %B1.val.d2f: %B1 = struct_value (%B2.vtable_ptr) [concrete] // CHECK:STDOUT: %B2.val.e9e: %B2 = struct_value (%B1.val.d2f) [concrete] // CHECK:STDOUT: %struct_type.base.a0c: type = struct_type {.base: %struct_type.base.f5e} [concrete] +// CHECK:STDOUT: %struct.83e: %struct_type.base.a0c = struct_value (%struct.6b1) [concrete] // CHECK:STDOUT: %C.vtable_ptr: ref %ptr.454 = vtable_ptr @C.vtable [concrete] // CHECK:STDOUT: %B1.val.b9d: %B1 = struct_value (%C.vtable_ptr) [concrete] // CHECK:STDOUT: %B2.val.426: %B2 = struct_value (%B1.val.b9d) [concrete] @@ -1238,7 +1244,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %b1.var_patt: %pattern_type.e47 = var_pattern %b1.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b1.var: ref %B1 = var %b1.var_patt -// CHECK:STDOUT: %.loc19_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_17.2: ref %ptr.454 = class_element_access %b1.var, element0 // CHECK:STDOUT: %B1.vtable_ptr: ref %ptr.454 = vtable_ptr @B1.vtable [concrete = constants.%B1.vtable_ptr] // CHECK:STDOUT: %.loc19_17.3: init %ptr.454 = initialize_from %B1.vtable_ptr to %.loc19_17.2 [concrete = constants.%B1.vtable_ptr] @@ -1252,8 +1258,8 @@ class T2(G2:! type) { // CHECK:STDOUT: %b2.var_patt: %pattern_type.b19 = var_pattern %b2.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b2.var: ref %B2 = var %b2.var_patt -// CHECK:STDOUT: %.loc20_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc20_27.1: %struct_type.base.f5e = struct_literal (%.loc20_26.1) +// CHECK:STDOUT: %.loc20_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc20_27.1: %struct_type.base.f5e = struct_literal (%.loc20_26.1) [concrete = constants.%struct.6b1] // CHECK:STDOUT: %.loc20_27.2: ref %B1 = class_element_access %b2.var, element0 // CHECK:STDOUT: %.loc20_26.2: ref %ptr.454 = class_element_access %.loc20_27.2, element0 // CHECK:STDOUT: %B2.vtable_ptr: ref %ptr.454 = vtable_ptr @B2.vtable [concrete = constants.%B2.vtable_ptr] @@ -1270,9 +1276,9 @@ class T2(G2:! type) { // CHECK:STDOUT: %c.var_patt: %pattern_type.c48 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt -// CHECK:STDOUT: %.loc21_33.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc21_34.1: %struct_type.base.f5e = struct_literal (%.loc21_33.1) -// CHECK:STDOUT: %.loc21_35.1: %struct_type.base.a0c = struct_literal (%.loc21_34.1) +// CHECK:STDOUT: %.loc21_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc21_34.1: %struct_type.base.f5e = struct_literal (%.loc21_33.1) [concrete = constants.%struct.6b1] +// CHECK:STDOUT: %.loc21_35.1: %struct_type.base.a0c = struct_literal (%.loc21_34.1) [concrete = constants.%struct.83e] // CHECK:STDOUT: %.loc21_35.2: ref %B2 = class_element_access %c.var, element0 // CHECK:STDOUT: %.loc21_34.2: ref %B1 = class_element_access %.loc21_35.2, element0 // CHECK:STDOUT: %.loc21_33.2: ref %ptr.454 = class_element_access %.loc21_34.2, element0 @@ -1403,6 +1409,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.dfd, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] // CHECK:STDOUT: %struct_type.m2.m1.5f2: type = struct_type {.m2: Core.IntLiteral, .m1: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.m2.m1.5f2 = struct_value (%int_3.1ba, %int_5.64b) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.451: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.c57: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] @@ -1547,7 +1554,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %b2.var: ref %Base = var %b2.var_patt // CHECK:STDOUT: %int_3.loc14: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %.loc14_35.1: %struct_type.m2.m1.5f2 = struct_literal (%int_3.loc14, %int_5) +// CHECK:STDOUT: %.loc14_35.1: %struct_type.m2.m1.5f2 = struct_literal (%int_3.loc14, %int_5) [concrete = constants.%struct] // CHECK:STDOUT: %.loc14_35.2: ref %ptr.454 = class_element_access %b2.var, element0 // CHECK:STDOUT: %Base.vtable_ptr.loc14: ref %ptr.454 = vtable_ptr @Base.vtable [concrete = constants.%Base.vtable_ptr] // CHECK:STDOUT: %.loc14_35.3: init %ptr.454 = initialize_from %Base.vtable_ptr.loc14 to %.loc14_35.2 [concrete = constants.%Base.vtable_ptr] @@ -2036,6 +2043,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %pattern_type.28b: type = pattern_type %T1 [concrete] // CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert.type: type = fn_type @T2.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert: %T2.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %T1.val: %T1 = struct_value () [concrete] // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] @@ -2191,7 +2199,7 @@ class T2(G2:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn @T2.as.ImplicitAs.impl.Convert(%self.param: %T2) -> %return.param: %T1 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc12_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_13.2: init %T1 = class_init (), %return [concrete = constants.%T1.val] // CHECK:STDOUT: %.loc12_14: init %T1 = converted %.loc12_13.1, %.loc12_13.2 [concrete = constants.%T1.val] // CHECK:STDOUT: return %.loc12_14 to %return @@ -4964,6 +4972,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %pattern_type.3bf: type = pattern_type %Base.ea5 [concrete] // CHECK:STDOUT: %Base.F.specific_fn.977: = specific_function %Base.F.d25, @Base.F(%T1) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %.2b0: ref %ptr.454 = class_element_access file.%v.var, element0 [concrete] // CHECK:STDOUT: %Base.vtable_decl: ref %ptr.454 = vtable_decl @Base.vtable [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T1) [concrete] @@ -5045,7 +5054,7 @@ class T2(G2:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_20.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_20.2: ref %ptr.454 = class_element_access file.%v.var, element0 [concrete = constants.%.2b0] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T1) [concrete = constants.%Base.vtable_ptr] // CHECK:STDOUT: %.loc7_20.3: init %ptr.454 = initialize_from %Base.vtable_ptr to %.loc7_20.2 [concrete = constants.%Base.vtable_ptr] diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index 23eab06024d9..160649cd905b 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -171,7 +171,9 @@ fn G() { // CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [concrete] // CHECK:STDOUT: %ptr.301: type = ptr_type %array_type.002 [concrete] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.8d4 = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -272,10 +274,10 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.a63 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type.002 = var %a.var_patt -// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) +// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc9_35.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc9_26.2: init %C = class_init (), %.loc9_35.2 [concrete = constants.%C.val] @@ -380,7 +382,9 @@ fn G() { // CHECK:STDOUT: %array_type.002: type = array_type %int_3.1ba, %C [concrete] // CHECK:STDOUT: %ptr.301: type = ptr_type %array_type.002 [concrete] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.8d4 = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -503,10 +507,10 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.a63 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type.002 = var %a.var_patt -// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) +// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc9_35.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc9_26.2: init %C = class_init (), %.loc9_35.2 [concrete = constants.%C.val] @@ -585,7 +589,9 @@ fn G() { // CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [concrete] // CHECK:STDOUT: %ptr.301: type = ptr_type %array_type.002 [concrete] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.8d4 = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -679,10 +685,10 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.a63 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type.002 = var %a.var_patt -// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) +// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc9_35.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc9_26.2: init %C = class_init (), %.loc9_35.2 [concrete = constants.%C.val] @@ -761,7 +767,9 @@ fn G() { // CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [concrete] // CHECK:STDOUT: %ptr.301: type = ptr_type %array_type.002 [concrete] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.8d4 = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -867,10 +875,10 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.a63 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type.002 = var %a.var_patt -// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc10_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc10_34.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc10_35.1: %tuple.type.8d4 = tuple_literal (%.loc10_26.1, %.loc10_30.1, %.loc10_34.1) +// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc10_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc10_34.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc10_35.1: %tuple.type.8d4 = tuple_literal (%.loc10_26.1, %.loc10_30.1, %.loc10_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc10_35.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc10_26.2: init %C = class_init (), %.loc10_35.2 [concrete = constants.%C.val] @@ -976,7 +984,9 @@ fn G() { // CHECK:STDOUT: %array_type.fe4: type = array_type %int_3.1ba, %D [concrete] // CHECK:STDOUT: %ptr.af6: type = ptr_type %array_type.fe4 [concrete] // CHECK:STDOUT: %pattern_type.f30: type = pattern_type %array_type.fe4 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.8d4 = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %D.val: %D = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -1111,10 +1121,10 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.f30 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type.fe4 = var %a.var_patt -// CHECK:STDOUT: %.loc11_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc11_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc11_34.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc11_35.1: %tuple.type.8d4 = tuple_literal (%.loc11_26.1, %.loc11_30.1, %.loc11_34.1) +// CHECK:STDOUT: %.loc11_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc11_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc11_34.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc11_35.1: %tuple.type.8d4 = tuple_literal (%.loc11_26.1, %.loc11_30.1, %.loc11_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc11_35.2: ref %D = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc11_26.2: init %D = class_init (), %.loc11_35.2 [concrete = constants.%D.val] @@ -1222,7 +1232,9 @@ fn G() { // CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [concrete] // CHECK:STDOUT: %ptr.301: type = ptr_type %array_type.002 [concrete] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple.5c1: %tuple.type.8d4 = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -1347,10 +1359,10 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.a63 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %array_type.002 = var %a.var_patt -// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) +// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_34.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_35.1: %tuple.type.8d4 = tuple_literal (%.loc9_26.1, %.loc9_30.1, %.loc9_34.1) [concrete = constants.%tuple.5c1] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc9_35.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc9_26.2: init %C = class_init (), %.loc9_35.2 [concrete = constants.%C.val] @@ -1428,7 +1440,9 @@ fn G() { // CHECK:STDOUT: %require_complete.ecf: = require_complete_type %array_type [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_struct, %empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1510,10 +1524,10 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc17_7: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc17_11: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc17_15: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc17_16: %tuple.type = tuple_literal (%.loc17_7, %.loc17_11, %.loc17_15) +// CHECK:STDOUT: %.loc17_7: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc17_11: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc17_15: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc17_16: %tuple.type = tuple_literal (%.loc17_7, %.loc17_11, %.loc17_15) [concrete = constants.%tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/binding_pattern.carbon b/toolchain/check/testdata/deduce/binding_pattern.carbon index c9d4db89426f..81fa18419c19 100644 --- a/toolchain/check/testdata/deduce/binding_pattern.carbon +++ b/toolchain/check/testdata/deduce/binding_pattern.carbon @@ -82,6 +82,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %C.Create.type.c39: type = fn_type @C.Create, @C(%V) [symbolic] // CHECK:STDOUT: %C.Create.6a8: %C.Create.type.c39 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.a90: = require_complete_type %C.f62 [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.984: type = pattern_type %V [symbolic] // CHECK:STDOUT: %C.Create.specific_fn: = specific_function %C.Create.6a8, @C.Create(%V) [symbolic] // CHECK:STDOUT: %require_complete.162: = require_complete_type %V [symbolic] @@ -196,7 +197,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %C.loc19_6.1: type = class_type @C, @C(constants.%V) [symbolic = %C.loc19_6.2 (constants.%C.f62)] // CHECK:STDOUT: %.loc19_7: @F.%C.Create.type (%C.Create.type.c39) = specific_constant @C.%C.Create.decl, @C(constants.%V) [symbolic = %C.Create (constants.%C.Create.6a8)] // CHECK:STDOUT: %Create.ref: @F.%C.Create.type (%C.Create.type.c39) = name_ref Create, %.loc19_7 [symbolic = %C.Create (constants.%C.Create.6a8)] -// CHECK:STDOUT: %.loc19_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.Create.specific_fn.loc19_7.1: = specific_function %Create.ref, @C.Create(constants.%V) [symbolic = %C.Create.specific_fn.loc19_7.2 (constants.%C.Create.specific_fn)] // CHECK:STDOUT: %ImplicitAs.type.loc19_16.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%V)> [symbolic = %ImplicitAs.type.loc19_16.2 (constants.%ImplicitAs.type.af3)] // CHECK:STDOUT: %.loc19_16.2: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.8fb) = specific_constant imports.%Core.import_ref.b9c, @ImplicitAs(constants.%V) [symbolic = %assoc0 (constants.%assoc0.123)] @@ -260,6 +261,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %.Self.bcc: type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic] @@ -321,7 +323,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %.loc9_25.1: type = splice_block %.loc9_25.2 [concrete = constants.%type_where] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.3b7] // CHECK:STDOUT: %.Self.3: type = symbolic_binding .Self [symbolic_self = constants.%.Self.bcc] -// CHECK:STDOUT: %.loc9_32.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_32.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %.Self.ref: type = name_ref .Self, %.Self.3 [symbolic_self = constants.%.Self.bcc] @@ -401,7 +403,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %C.loc20_6.1: type = class_type @C, @C(constants.%V.binding.as_type) [symbolic = %C.loc20_6.2 (constants.%C.a6f)] // CHECK:STDOUT: %.loc20_7: @F.%C.Create.type (%C.Create.type.715) = specific_constant @C.%C.Create.decl, @C(constants.%V.binding.as_type) [symbolic = %C.Create (constants.%C.Create.9da)] // CHECK:STDOUT: %Create.ref: @F.%C.Create.type (%C.Create.type.715) = name_ref Create, %.loc20_7 [symbolic = %C.Create (constants.%C.Create.9da)] -// CHECK:STDOUT: %.loc20_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc20_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.Create.specific_fn.loc20_7.1: = specific_function %Create.ref, @C.Create(constants.%V.binding.as_type) [symbolic = %C.Create.specific_fn.loc20_7.2 (constants.%C.Create.specific_fn)] // CHECK:STDOUT: %ImplicitAs.type.loc20_16.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%V.binding.as_type)> [symbolic = %ImplicitAs.type.loc20_16.2 (constants.%ImplicitAs.type.2a9)] // CHECK:STDOUT: %.loc20_16.2: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.975) = specific_constant imports.%Core.import_ref.b9c, @ImplicitAs(constants.%V.binding.as_type) [symbolic = %assoc0 (constants.%assoc0.5ef)] diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 7cb3b030fc62..352bcd6e1b8a 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -442,6 +442,7 @@ fn G() -> i32 { // CHECK:STDOUT: %require_complete.799: = require_complete_type %Outer.d8f [symbolic] // CHECK:STDOUT: %pattern_type.a25: type = pattern_type %Inner.f6c [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.225: %tuple.type.24b = tuple_value (%T, %U) [symbolic] // CHECK:STDOUT: %tuple.type.d18: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.b8b: type = pattern_type %tuple.type.d18 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -454,6 +455,7 @@ fn G() -> i32 { // CHECK:STDOUT: %Inner.generic.205: %Inner.type.181 = struct_value () [concrete] // CHECK:STDOUT: %Inner.bbd: type = class_type @Inner, @Inner(%C, %D) [concrete] // CHECK:STDOUT: %pattern_type.83c: type = pattern_type %Inner.bbd [concrete] +// CHECK:STDOUT: %tuple.f3a: %tuple.type.24b = tuple_value (%C, %D) [concrete] // CHECK:STDOUT: %tuple.type.e8a: type = tuple_type (%C, %D) [concrete] // CHECK:STDOUT: %pattern_type.9ec: type = pattern_type %tuple.type.e8a [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -497,7 +499,7 @@ fn G() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13_52: type = name_ref T, %T.loc13_6.2 [symbolic = %T.loc13_6.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc13_55: type = name_ref U, %U.loc13_16.2 [symbolic = %U.loc13_16.1 (constants.%U)] -// CHECK:STDOUT: %.loc13_56.1: %tuple.type.24b = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) +// CHECK:STDOUT: %.loc13_56.1: %tuple.type.24b = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %.loc13_56.2: type = converted %.loc13_56.1, constants.%tuple.type.d18 [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc13_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_6.1 (constants.%T)] @@ -525,7 +527,7 @@ fn G() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc15_32: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %D.ref.loc15_35: type = name_ref D, file.%D.decl [concrete = constants.%D] -// CHECK:STDOUT: %.loc15_36.1: %tuple.type.24b = tuple_literal (%C.ref.loc15_32, %D.ref.loc15_35) +// CHECK:STDOUT: %.loc15_36.1: %tuple.type.24b = tuple_literal (%C.ref.loc15_32, %D.ref.loc15_35) [concrete = constants.%tuple.f3a] // CHECK:STDOUT: %.loc15_36.2: type = converted %.loc15_36.1, constants.%tuple.type.e8a [concrete = constants.%tuple.type.e8a] // CHECK:STDOUT: %p.param: %Inner.bbd = value_param call_param0 // CHECK:STDOUT: %.loc15_25: type = splice_block %Inner [concrete = constants.%Inner.bbd] { @@ -605,6 +607,7 @@ fn G() -> i32 { // CHECK:STDOUT: %Inner.generic: @F.%Inner.type (%Inner.type.e10) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.bcd)] // CHECK:STDOUT: %Inner.loc13_45.1: type = class_type @Inner, @Inner(%T.loc13_6.1, %U.loc13_16.1) [symbolic = %Inner.loc13_45.1 (constants.%Inner.f6c)] // CHECK:STDOUT: %pattern_type.loc13_26: type = pattern_type %Inner.loc13_45.1 [symbolic = %pattern_type.loc13_26 (constants.%pattern_type.a25)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc13_6.1, %U.loc13_16.1) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc13_6.1, %U.loc13_16.1) [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %pattern_type.loc13_48: type = pattern_type %tuple.type [symbolic = %pattern_type.loc13_48 (constants.%pattern_type.b8b)] // CHECK:STDOUT: @@ -657,6 +660,7 @@ fn G() -> i32 { // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.bcd // CHECK:STDOUT: %Inner.loc13_45.1 => constants.%Inner.f6c // CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.a25 +// CHECK:STDOUT: %tuple => constants.%tuple.225 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.d18 // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.b8b // CHECK:STDOUT: @@ -689,6 +693,7 @@ fn G() -> i32 { // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.205 // CHECK:STDOUT: %Inner.loc13_45.1 => constants.%Inner.bbd // CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.83c +// CHECK:STDOUT: %tuple => constants.%tuple.f3a // CHECK:STDOUT: %tuple.type => constants.%tuple.type.e8a // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.9ec // CHECK:STDOUT: @@ -734,6 +739,7 @@ fn G() -> i32 { // CHECK:STDOUT: %bound_method.f2b: = bound_method %N.fe8, %Int.as.Copy.impl.Op.specific_fn [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -878,7 +884,7 @@ fn G() -> i32 { // CHECK:STDOUT: fn @G() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc9_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %WithNontype.ref: %WithNontype.type = name_ref WithNontype, file.%WithNontype.decl [concrete = constants.%WithNontype.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index f821e7ab6a59..398007641fe9 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -70,6 +70,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.225: %tuple.type.24b = tuple_value (%T, %U) [symbolic] // CHECK:STDOUT: %tuple.type.d18: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.b8b: type = pattern_type %tuple.type.d18 [symbolic] // CHECK:STDOUT: %pattern_type.984: type = pattern_type %U [symbolic] @@ -78,6 +79,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %require_complete.162: = require_complete_type %U [symbolic] // CHECK:STDOUT: %require_complete.fdf: = require_complete_type %tuple.type.d18 [symbolic] // CHECK:STDOUT: %F.specific_fn.b44: = specific_function %F, @F(%T, %U) [symbolic] +// CHECK:STDOUT: %tuple.f3a: %tuple.type.24b = tuple_value (%C, %D) [concrete] // CHECK:STDOUT: %tuple.type.e8a: type = tuple_type (%C, %D) [concrete] // CHECK:STDOUT: %pattern_type.9ec: type = pattern_type %tuple.type.e8a [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] @@ -122,7 +124,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %.loc7_37.1: type = splice_block %.loc7_37.3 [symbolic = %tuple.type (constants.%tuple.type.d18)] { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_6.2 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc7_36: type = name_ref U, %U.loc7_16.2 [symbolic = %U.loc7_16.1 (constants.%U)] -// CHECK:STDOUT: %.loc7_37.2: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc7_36) +// CHECK:STDOUT: %.loc7_37.2: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc7_36) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %.loc7_37.3: type = converted %.loc7_37.2, constants.%tuple.type.d18 [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: } // CHECK:STDOUT: %pair: @F.%tuple.type (%tuple.type.d18) = value_binding pair, %pair.param @@ -140,7 +142,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [concrete = constants.%tuple.type.e8a] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %D.ref.loc9_16: type = name_ref D, file.%D.decl [concrete = constants.%D] -// CHECK:STDOUT: %.loc9_17.2: %tuple.type.24b = tuple_literal (%C.ref, %D.ref.loc9_16) +// CHECK:STDOUT: %.loc9_17.2: %tuple.type.24b = tuple_literal (%C.ref, %D.ref.loc9_16) [concrete = constants.%tuple.f3a] // CHECK:STDOUT: %.loc9_17.3: type = converted %.loc9_17.2, constants.%tuple.type.e8a [concrete = constants.%tuple.type.e8a] // CHECK:STDOUT: } // CHECK:STDOUT: %pair: %tuple.type.e8a = value_binding pair, %pair.param @@ -168,6 +170,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: generic fn @F(%T.loc7_6.2: type, %U.loc7_16.2: type) { // CHECK:STDOUT: %T.loc7_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %U.loc7_16.1: type = symbolic_binding U, 1 [symbolic = %U.loc7_16.1 (constants.%U)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc7_6.1, %U.loc7_16.1) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc7_6.1, %U.loc7_16.1) [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %pattern_type.loc7_26: type = pattern_type %tuple.type [symbolic = %pattern_type.loc7_26 (constants.%pattern_type.b8b)] // CHECK:STDOUT: %pattern_type.loc7_40: type = pattern_type %U.loc7_16.1 [symbolic = %pattern_type.loc7_40 (constants.%pattern_type.984)] @@ -201,6 +204,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: specific @F(constants.%T, constants.%U) { // CHECK:STDOUT: %T.loc7_6.1 => constants.%T // CHECK:STDOUT: %U.loc7_16.1 => constants.%U +// CHECK:STDOUT: %tuple => constants.%tuple.225 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.d18 // CHECK:STDOUT: %pattern_type.loc7_26 => constants.%pattern_type.b8b // CHECK:STDOUT: %pattern_type.loc7_40 => constants.%pattern_type.984 @@ -214,6 +218,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: specific @F(constants.%C, constants.%D) { // CHECK:STDOUT: %T.loc7_6.1 => constants.%C // CHECK:STDOUT: %U.loc7_16.1 => constants.%D +// CHECK:STDOUT: %tuple => constants.%tuple.f3a // CHECK:STDOUT: %tuple.type => constants.%tuple.type.e8a // CHECK:STDOUT: %pattern_type.loc7_26 => constants.%pattern_type.9ec // CHECK:STDOUT: %pattern_type.loc7_40 => constants.%pattern_type.510 @@ -235,6 +240,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %Pair: %tuple.type.d07 = symbolic_binding Pair, 0 [symbolic] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] @@ -267,6 +273,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -330,7 +337,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %i32.loc4_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc4_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_31.2: %tuple.type.24b = tuple_literal (%i32.loc4_23, %i32.loc4_28) +// CHECK:STDOUT: %.loc4_31.2: %tuple.type.24b = tuple_literal (%i32.loc4_23, %i32.loc4_28) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc4_31.3: type = converted %.loc4_31.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %Pair.loc4_15.2: %tuple.type.d07 = symbolic_binding Pair, 0 [symbolic = %Pair.loc4_15.1 (constants.%Pair)] @@ -362,7 +369,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [concrete = constants.%HasPair.generic] // CHECK:STDOUT: %A.ref: %i32 = name_ref A, %A.loc6_6.2 [symbolic = %A.loc6_6.1 (constants.%A)] // CHECK:STDOUT: %B.ref.loc6_39: %i32 = name_ref B, %B.loc6_15.2 [symbolic = %B.loc6_15.1 (constants.%B)] -// CHECK:STDOUT: %.loc6_40: %tuple.type.d07 = tuple_literal (%A.ref, %B.ref.loc6_39) +// CHECK:STDOUT: %.loc6_40: %tuple.type.d07 = tuple_literal (%A.ref, %B.ref.loc6_39) [symbolic = %tuple.loc6_40.1 (constants.%tuple.878)] // CHECK:STDOUT: %tuple.loc6_40.2: %tuple.type.d07 = tuple_value (%A.ref, %B.ref.loc6_39) [symbolic = %tuple.loc6_40.1 (constants.%tuple.878)] // CHECK:STDOUT: %.loc6_41.2: %tuple.type.d07 = converted %.loc6_40, %tuple.loc6_40.2 [symbolic = %tuple.loc6_40.1 (constants.%tuple.878)] // CHECK:STDOUT: %HasPair.loc6_41.2: type = class_type @HasPair, @HasPair(constants.%tuple.878) [symbolic = %HasPair.loc6_41.1 (constants.%HasPair.e70)] @@ -384,7 +391,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [concrete = constants.%HasPair.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc8_22.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc8_22.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %impl.elem0.loc8_22.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc8_22.1: = bound_method %int_1, %impl.elem0.loc8_22.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc8_22.1: = specific_function %impl.elem0.loc8_22.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -505,11 +512,13 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.2bc: %tuple.type.24b = tuple_value (%T, %T) [symbolic] // CHECK:STDOUT: %tuple.type.39d: type = tuple_type (%T, %T) [symbolic] // CHECK:STDOUT: %pattern_type.5ea: type = pattern_type %tuple.type.39d [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %tuple.f3a: %tuple.type.24b = tuple_value (%C, %D) [concrete] // CHECK:STDOUT: %tuple.type.e8a: type = tuple_type (%C, %D) [concrete] // CHECK:STDOUT: %pattern_type.9ec: type = pattern_type %tuple.type.e8a [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] @@ -549,7 +558,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %.loc7_27.1: type = splice_block %.loc7_27.3 [symbolic = %tuple.type (constants.%tuple.type.39d)] { // CHECK:STDOUT: %T.ref.loc7_23: type = name_ref T, %T.loc7_6.2 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %T.ref.loc7_26: type = name_ref T, %T.loc7_6.2 [symbolic = %T.loc7_6.1 (constants.%T)] -// CHECK:STDOUT: %.loc7_27.2: %tuple.type.24b = tuple_literal (%T.ref.loc7_23, %T.ref.loc7_26) +// CHECK:STDOUT: %.loc7_27.2: %tuple.type.24b = tuple_literal (%T.ref.loc7_23, %T.ref.loc7_26) [symbolic = %tuple (constants.%tuple.2bc)] // CHECK:STDOUT: %.loc7_27.3: type = converted %.loc7_27.2, constants.%tuple.type.39d [symbolic = %tuple.type (constants.%tuple.type.39d)] // CHECK:STDOUT: } // CHECK:STDOUT: %pair: @F.%tuple.type (%tuple.type.39d) = value_binding pair, %pair.param @@ -567,7 +576,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [concrete = constants.%tuple.type.e8a] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %D.ref.loc9_16: type = name_ref D, file.%D.decl [concrete = constants.%D] -// CHECK:STDOUT: %.loc9_17.2: %tuple.type.24b = tuple_literal (%C.ref, %D.ref.loc9_16) +// CHECK:STDOUT: %.loc9_17.2: %tuple.type.24b = tuple_literal (%C.ref, %D.ref.loc9_16) [concrete = constants.%tuple.f3a] // CHECK:STDOUT: %.loc9_17.3: type = converted %.loc9_17.2, constants.%tuple.type.e8a [concrete = constants.%tuple.type.e8a] // CHECK:STDOUT: } // CHECK:STDOUT: %pair: %tuple.type.e8a = value_binding pair, %pair.param @@ -594,6 +603,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.2: type) { // CHECK:STDOUT: %T.loc7_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc7_6.1, %T.loc7_6.1) [symbolic = %tuple (constants.%tuple.2bc)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc7_6.1, %T.loc7_6.1) [symbolic = %tuple.type (constants.%tuple.type.39d)] // CHECK:STDOUT: %pattern_type.loc7_16: type = pattern_type %tuple.type [symbolic = %pattern_type.loc7_16 (constants.%pattern_type.5ea)] // CHECK:STDOUT: %pattern_type.loc7_30: type = pattern_type %T.loc7_6.1 [symbolic = %pattern_type.loc7_30 (constants.%pattern_type.e68)] @@ -610,6 +620,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc7_6.1 => constants.%T +// CHECK:STDOUT: %tuple => constants.%tuple.2bc // CHECK:STDOUT: %tuple.type => constants.%tuple.type.39d // CHECK:STDOUT: %pattern_type.loc7_16 => constants.%pattern_type.5ea // CHECK:STDOUT: %pattern_type.loc7_30 => constants.%pattern_type.e68 diff --git a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon index 1e442bdf6fac..163baca925e3 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -108,6 +108,7 @@ fn G() { // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %tuple.type: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.0d2: %tuple.type = tuple_value (type) [concrete] // CHECK:STDOUT: %T: %tuple.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.f1e: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %HoldsType.type: type = generic_class_type @HoldsType [concrete] @@ -127,12 +128,13 @@ fn G() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C) [concrete] -// CHECK:STDOUT: %HoldsType.c09: type = class_type @HoldsType, @HoldsType(%tuple) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %tuple.99e: %tuple.type = tuple_value (%C) [concrete] +// CHECK:STDOUT: %HoldsType.c09: type = class_type @HoldsType, @HoldsType(%tuple.99e) [concrete] // CHECK:STDOUT: %HoldsType.val: %HoldsType.c09 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.8e0: type = pattern_type %HoldsType.c09 [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%tuple) [concrete] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%tuple.99e) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -171,7 +173,7 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_28.1: type = splice_block %.loc4_28.3 [concrete = constants.%tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc4_28.2: %tuple.type = tuple_literal (type) +// CHECK:STDOUT: %.loc4_28.2: %tuple.type = tuple_literal (type) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc4_28.3: type = converted %.loc4_28.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_17.2: %tuple.type = symbolic_binding T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] @@ -185,7 +187,7 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_17.1: type = splice_block %.loc8_17.3 [concrete = constants.%tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc8_17.2: %tuple.type = tuple_literal (type) +// CHECK:STDOUT: %.loc8_17.2: %tuple.type = tuple_literal (type) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc8_17.3: type = converted %.loc8_17.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_6.2: %tuple.type = symbolic_binding T, 0 [symbolic = %T.loc8_6.1 (constants.%T)] @@ -250,19 +252,19 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc13_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %HoldsType.ref: %HoldsType.type = name_ref HoldsType, file.%HoldsType.decl [concrete = constants.%HoldsType.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc13_25: %tuple.type = tuple_literal (%C.ref) -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C.ref) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc13_26: %tuple.type = converted %.loc13_25, %tuple [concrete = constants.%tuple] -// CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(constants.%tuple) [concrete = constants.%HoldsType.c09] +// CHECK:STDOUT: %.loc13_25: %tuple.type = tuple_literal (%C.ref) [concrete = constants.%tuple.99e] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C.ref) [concrete = constants.%tuple.99e] +// CHECK:STDOUT: %.loc13_26: %tuple.type = converted %.loc13_25, %tuple [concrete = constants.%tuple.99e] +// CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(constants.%tuple.99e) [concrete = constants.%HoldsType.c09] // CHECK:STDOUT: %.loc13_6.2: ref %HoldsType.c09 = temporary_storage // CHECK:STDOUT: %.loc13_6.3: init %HoldsType.c09 = class_init (), %.loc13_6.2 [concrete = constants.%HoldsType.val] // CHECK:STDOUT: %.loc13_6.4: ref %HoldsType.c09 = temporary %.loc13_6.2, %.loc13_6.3 // CHECK:STDOUT: %.loc13_8.1: ref %HoldsType.c09 = converted %.loc13_6.1, %.loc13_6.4 -// CHECK:STDOUT: %.loc13_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%tuple) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %.loc13_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%tuple.99e) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %.loc13_8.2: %HoldsType.c09 = acquire_value %.loc13_8.1 // CHECK:STDOUT: %.loc13_30.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc13_30.3: init %C = class_init (), %.loc13_30.2 [concrete = constants.%C.val] @@ -297,14 +299,14 @@ fn G() { // CHECK:STDOUT: %pattern_type.loc8_37 => constants.%pattern_type.2c8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HoldsType(constants.%tuple) { -// CHECK:STDOUT: %T.loc4_17.1 => constants.%tuple +// CHECK:STDOUT: specific @HoldsType(constants.%tuple.99e) { +// CHECK:STDOUT: %T.loc4_17.1 => constants.%tuple.99e // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%tuple) { -// CHECK:STDOUT: %T.loc8_6.1 => constants.%tuple +// CHECK:STDOUT: specific @F(constants.%tuple.99e) { +// CHECK:STDOUT: %T.loc8_6.1 => constants.%tuple.99e // CHECK:STDOUT: %HoldsType.loc8_34.1 => constants.%HoldsType.c09 // CHECK:STDOUT: %pattern_type.loc8_20 => constants.%pattern_type.8e0 // CHECK:STDOUT: %tuple.elem0.loc8_41.1 => constants.%C @@ -339,6 +341,7 @@ fn G() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.t = struct_value (%C) [concrete] // CHECK:STDOUT: %HoldsType.705: type = class_type @HoldsType, @HoldsType(%struct) [concrete] // CHECK:STDOUT: %HoldsType.val: %HoldsType.705 = struct_value () [concrete] @@ -459,10 +462,10 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc13_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %HoldsType.ref: %HoldsType.type = name_ref HoldsType, file.%HoldsType.decl [concrete = constants.%HoldsType.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc13_28: %struct_type.t = struct_literal (%C.ref) +// CHECK:STDOUT: %.loc13_28: %struct_type.t = struct_literal (%C.ref) [concrete = constants.%struct] // CHECK:STDOUT: %struct: %struct_type.t = struct_value (%C.ref) [concrete = constants.%struct] // CHECK:STDOUT: %.loc13_29: %struct_type.t = converted %.loc13_28, %struct [concrete = constants.%struct] // CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(constants.%struct) [concrete = constants.%HoldsType.705] @@ -470,7 +473,7 @@ fn G() { // CHECK:STDOUT: %.loc13_6.3: init %HoldsType.705 = class_init (), %.loc13_6.2 [concrete = constants.%HoldsType.val] // CHECK:STDOUT: %.loc13_6.4: ref %HoldsType.705 = temporary %.loc13_6.2, %.loc13_6.3 // CHECK:STDOUT: %.loc13_8.1: ref %HoldsType.705 = converted %.loc13_6.1, %.loc13_6.4 -// CHECK:STDOUT: %.loc13_33.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%struct) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %.loc13_8.2: %HoldsType.705 = acquire_value %.loc13_8.1 // CHECK:STDOUT: %.loc13_33.2: ref %C = temporary_storage @@ -550,6 +553,7 @@ fn G() { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %c: %Class = symbolic_binding c, 0 [symbolic] +// CHECK:STDOUT: %struct: %struct_type.t = struct_value (%C) [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] // CHECK:STDOUT: %Copy.impl_witness.de9: = impl_witness imports.%Copy.impl_witness_table.40f [concrete] @@ -559,6 +563,7 @@ fn G() { // CHECK:STDOUT: %type.as.Copy.impl.Op: %type.as.Copy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %type.as.Copy.impl.Op.bound: = bound_method %C, %type.as.Copy.impl.Op [concrete] // CHECK:STDOUT: %Class.val: %Class = struct_value (%C) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %HoldsType.44a6f0.2: type = class_type @HoldsType, @HoldsType(%c) [symbolic] // CHECK:STDOUT: %HoldsType.val: %HoldsType.44a6f0.2 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -702,7 +707,7 @@ fn G() { // CHECK:STDOUT: %c.patt: %pattern_type.761 = symbolic_binding_pattern c, 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc26_26.1: %struct_type.t = struct_literal (%C.ref) +// CHECK:STDOUT: %.loc26_26.1: %struct_type.t = struct_literal (%C.ref) [concrete = constants.%struct] // CHECK:STDOUT: %Class.ref.loc26_31: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %impl.elem0.loc26: %.98f = impl_witness_access constants.%Copy.impl_witness.de9, element0 [concrete = constants.%type.as.Copy.impl.Op] // CHECK:STDOUT: %bound_method.loc26_25: = bound_method %C.ref, %impl.elem0.loc26 [concrete = constants.%type.as.Copy.impl.Op.bound] @@ -720,7 +725,7 @@ fn G() { // CHECK:STDOUT: %.loc26_28.2: %Class = acquire_value %.loc26_28.1 // CHECK:STDOUT: %c: %Class = symbolic_binding c, 0, %.loc26_28.2 [symbolic = constants.%c] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc27_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %HoldsType.ref: %HoldsType.type = name_ref HoldsType, file.%HoldsType.decl [concrete = constants.%HoldsType.generic] // CHECK:STDOUT: %c.ref: %Class = name_ref c, %c [symbolic = constants.%c] // CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(constants.%c) [symbolic = constants.%HoldsType.44a6f0.2] @@ -728,7 +733,7 @@ fn G() { // CHECK:STDOUT: %.loc27_6.3: init %HoldsType.44a6f0.2 = class_init (), %.loc27_6.2 [symbolic = constants.%HoldsType.val] // CHECK:STDOUT: %.loc27_6.4: ref %HoldsType.44a6f0.2 = temporary %.loc27_6.2, %.loc27_6.3 // CHECK:STDOUT: %.loc27_8: ref %HoldsType.44a6f0.2 = converted %.loc27_6.1, %.loc27_6.4 -// CHECK:STDOUT: %.loc27_26: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_26: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %impl.elem0.loc27: %.871 = impl_witness_access constants.%Destroy.impl_witness.4d0, element0 [symbolic = constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.225] // CHECK:STDOUT: %bound_method.loc27_6.1: = bound_method %.loc27_6.4, %impl.elem0.loc27 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc27, @DestroyT.binding.as_type.as.Destroy.impl.Op(constants.%facet_value.44e) [symbolic = constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.5e6] @@ -806,7 +811,9 @@ fn G() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.99e: %tuple.type.85c = tuple_value (%C) [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] // CHECK:STDOUT: %Copy.impl_witness.de9: = impl_witness imports.%Copy.impl_witness_table.40f [concrete] @@ -944,10 +951,10 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc24_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %HoldsType.ref: %HoldsType.type = name_ref HoldsType, file.%HoldsType.decl [concrete = constants.%HoldsType.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc24_25.1: %tuple.type.85c = tuple_literal (%C.ref) +// CHECK:STDOUT: %.loc24_25.1: %tuple.type.85c = tuple_literal (%C.ref) [concrete = constants.%tuple.99e] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %array_type: type = array_type %int_1, type [concrete = constants.%array_type] // CHECK:STDOUT: %impl.elem0: %.98f = impl_witness_access constants.%Copy.impl_witness.de9, element0 [concrete = constants.%type.as.Copy.impl.Op] @@ -961,7 +968,7 @@ fn G() { // CHECK:STDOUT: %.loc24_27.1: init %array_type = converted %.loc24_25.1, %.loc24_25.5 [concrete = constants.%array] // CHECK:STDOUT: %.loc24_27.2: ref %array_type = temporary %.loc24_25.2, %.loc24_27.1 // CHECK:STDOUT: %.loc24_27.3: %array_type = acquire_value %.loc24_27.2 -// CHECK:STDOUT: %.loc24_48: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_48: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: = bound_method %.loc24_27.2, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.342 // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn: = specific_function constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.342, @DestroyT.binding.as_type.as.Destroy.impl.Op(constants.%facet_value) [concrete = constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc24_27: = bound_method %.loc24_27.2, %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn diff --git a/toolchain/check/testdata/eval/aggregates.carbon b/toolchain/check/testdata/eval/aggregates.carbon index 1b7cde583fef..577a9d05ba4d 100644 --- a/toolchain/check/testdata/eval/aggregates.carbon +++ b/toolchain/check/testdata/eval/aggregates.carbon @@ -60,11 +60,13 @@ fn G(N:! i32) { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] @@ -103,6 +105,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %pattern_type.8ae: type = pattern_type %struct_type.a.b.c [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.c.b.a: type = struct_type {.c: Core.IntLiteral, .b: Core.IntLiteral, .a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.c75: %struct_type.c.b.a = struct_value (%int_3.1ba, %int_2.ecc, %int_1.5b8) [concrete] // CHECK:STDOUT: %struct_type.b.a.c: type = struct_type {.b: %i32, .a: %i32, .c: %i32} [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.def: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -118,6 +121,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %pattern_type.a98: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.4f2: %tuple.type.985 = tuple_value (%int_0.5c6) [concrete] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete] @@ -149,7 +153,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %i32.loc4_18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc4_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_26.2: %tuple.type.24b = tuple_literal (%i32.loc4_18, %i32.loc4_23) +// CHECK:STDOUT: %.loc4_26.2: %tuple.type.24b = tuple_literal (%i32.loc4_18, %i32.loc4_23) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc4_26.3: type = converted %.loc4_26.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple_copy: ref %tuple.type.d07 = ref_binding tuple_copy, %tuple_copy.var [concrete = %tuple_copy.var] @@ -198,12 +202,12 @@ fn G(N:! i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1.loc4: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc4: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc4_35.1: %tuple.type.f94 = tuple_literal (%int_1.loc4, %int_2.loc4) +// CHECK:STDOUT: %.loc4_35.1: %tuple.type.f94 = tuple_literal (%int_1.loc4, %int_2.loc4) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %int_32.loc4_41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc4_46: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_49.1: %tuple.type.24b = tuple_literal (%i32.loc4_41, %i32.loc4_46) +// CHECK:STDOUT: %.loc4_49.1: %tuple.type.24b = tuple_literal (%i32.loc4_41, %i32.loc4_46) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc4_49.2: type = converted %.loc4_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %impl.elem0.loc4_35.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc4_35.1: = bound_method %int_1.loc4, %impl.elem0.loc4_35.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] @@ -243,7 +247,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_3.loc6: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_2.loc6: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_1.loc6: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc6_71.1: %struct_type.c.b.a = struct_literal (%int_3.loc6, %int_2.loc6, %int_1.loc6) +// CHECK:STDOUT: %.loc6_71.1: %struct_type.c.b.a = struct_literal (%int_3.loc6, %int_2.loc6, %int_1.loc6) [concrete = constants.%struct.c75] // CHECK:STDOUT: %int_32.loc6_81: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_81: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc6_90: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -302,14 +306,14 @@ fn G(N:! i32) { // CHECK:STDOUT: %.loc6_1: init %struct_type.a.b.c = converted %.loc6_73.1, %.loc6_73.11 [concrete = constants.%struct.cff] // CHECK:STDOUT: assign file.%struct_copy.var, %.loc6_1 // CHECK:STDOUT: %int_0.loc8_35: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc8_37.1: %tuple.type.985 = tuple_literal (%int_0.loc8_35) +// CHECK:STDOUT: %.loc8_37.1: %tuple.type.985 = tuple_literal (%int_0.loc8_35) [concrete = constants.%tuple.4f2] // CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7] // CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete = constants.%int_9] -// CHECK:STDOUT: %.loc8_64.1: %tuple.type.d46 = tuple_literal (%int_5, %int_7, %int_1.loc8, %int_9) +// CHECK:STDOUT: %.loc8_64.1: %tuple.type.d46 = tuple_literal (%int_5, %int_7, %int_1.loc8, %int_9) [concrete = constants.%tuple.869] // CHECK:STDOUT: %int_2.loc8: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %tuple.loc8: %tuple.type.d46 = tuple_value (%int_5, %int_7, %int_1.loc8, %int_9) [concrete = constants.%tuple.869] // CHECK:STDOUT: %.loc8_64.2: %tuple.type.d46 = converted %.loc8_64.1, %tuple.loc8 [concrete = constants.%tuple.869] @@ -329,12 +333,12 @@ fn G(N:! i32) { // CHECK:STDOUT: %.loc8_39: init %array_type = converted %.loc8_37.1, %.loc8_37.5 [concrete = constants.%array] // CHECK:STDOUT: assign file.%tuple_index.var, %.loc8_39 // CHECK:STDOUT: %int_0.loc10_37: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc10_39.1: %tuple.type.985 = tuple_literal (%int_0.loc10_37) +// CHECK:STDOUT: %.loc10_39.1: %tuple.type.985 = tuple_literal (%int_0.loc10_37) [concrete = constants.%tuple.4f2] // CHECK:STDOUT: %int_32.loc10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_3.loc10: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc10_70.1: %struct_type.a.b = struct_literal (%int_3.loc10, %int_1.loc10) +// CHECK:STDOUT: %.loc10_70.1: %struct_type.a.b = struct_literal (%int_3.loc10, %int_1.loc10) [concrete = constants.%struct.a81] // CHECK:STDOUT: %struct.loc10: %struct_type.a.b = struct_value (%int_3.loc10, %int_1.loc10) [concrete = constants.%struct.a81] // CHECK:STDOUT: %.loc10_70.2: %struct_type.a.b = converted %.loc10_70.1, %struct.loc10 [concrete = constants.%struct.a81] // CHECK:STDOUT: %.loc10_71: Core.IntLiteral = struct_access %.loc10_70.2, element1 [concrete = constants.%int_1.5b8] @@ -365,10 +369,12 @@ fn G(N:! i32) { // CHECK:STDOUT: %pattern_type.a98: type = pattern_type %array_type.0cb [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.4f2: %tuple.type.985 = tuple_value (%int_0) [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] // CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [concrete] // CHECK:STDOUT: %int_9.988: Core.IntLiteral = int_value 9 [concrete] // CHECK:STDOUT: %tuple.type.d46: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.869: %tuple.type.d46 = tuple_value (%int_5.64b, %int_7.29f, %int_1.5b8, %int_9.988) [concrete] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %array_type.f32: type = array_type %int_4, %i32 [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -425,14 +431,14 @@ fn G(N:! i32) { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0.loc9_35: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %.loc9_37: %tuple.type.985 = tuple_literal (%int_0.loc9_35) +// CHECK:STDOUT: %.loc9_37: %tuple.type.985 = tuple_literal (%int_0.loc9_35) [concrete = constants.%tuple.4f2] // CHECK:STDOUT: %int_32.loc9_48: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_48: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] // CHECK:STDOUT: %int_1.loc9_61: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete = constants.%int_9.988] -// CHECK:STDOUT: %.loc9_65.1: %tuple.type.d46 = tuple_literal (%int_5, %int_7, %int_1.loc9_61, %int_9) +// CHECK:STDOUT: %.loc9_65.1: %tuple.type.d46 = tuple_literal (%int_5, %int_7, %int_1.loc9_61, %int_9) [concrete = constants.%tuple.869] // CHECK:STDOUT: %int_32.loc9_76: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_76: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] @@ -501,6 +507,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %ptr.4f0: type = ptr_type %T [symbolic] // CHECK:STDOUT: %const: type = const_type %T [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%ptr.4f0, %const) [symbolic] // CHECK:STDOUT: %tuple.type.2d0: type = tuple_type (%ptr.4f0, %const) [symbolic] // CHECK:STDOUT: %require_complete.b52: = require_complete_type %tuple.type.2d0 [symbolic] // CHECK:STDOUT: %pattern_type.9dc: type = pattern_type %tuple.type.2d0 [symbolic] @@ -588,6 +595,7 @@ fn G(N:! i32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ptr.loc6_12.2: type = ptr_type %T.loc4_6.1 [symbolic = %ptr.loc6_12.2 (constants.%ptr.4f0)] // CHECK:STDOUT: %const.loc6_15.2: type = const_type %T.loc4_6.1 [symbolic = %const.loc6_15.2 (constants.%const)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%ptr.loc6_12.2, %const.loc6_15.2) [symbolic = %tuple (constants.%tuple)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc6_12.2, %const.loc6_15.2) [symbolic = %tuple.type (constants.%tuple.type.2d0)] // CHECK:STDOUT: %require_complete.loc6_22: = require_complete_type %tuple.type [symbolic = %require_complete.loc6_22 (constants.%require_complete.b52)] // CHECK:STDOUT: %pattern_type.loc6: type = pattern_type %tuple.type [symbolic = %pattern_type.loc6 (constants.%pattern_type.9dc)] @@ -637,7 +645,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %ptr.loc6_12.1: type = ptr_type %T.ref.loc6_11 [symbolic = %ptr.loc6_12.2 (constants.%ptr.4f0)] // CHECK:STDOUT: %T.ref.loc6_21: type = name_ref T, %T.loc4_6.2 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %const.loc6_15.1: type = const_type %T.ref.loc6_21 [symbolic = %const.loc6_15.2 (constants.%const)] -// CHECK:STDOUT: %.loc6_22.2: %tuple.type.24b = tuple_literal (%ptr.loc6_12.1, %const.loc6_15.1) +// CHECK:STDOUT: %.loc6_22.2: %tuple.type.24b = tuple_literal (%ptr.loc6_12.1, %const.loc6_15.1) [symbolic = %tuple (constants.%tuple)] // CHECK:STDOUT: %.loc6_22.3: type = converted %.loc6_22.2, constants.%tuple.type.2d0 [symbolic = %tuple.type (constants.%tuple.type.2d0)] // CHECK:STDOUT: } // CHECK:STDOUT: %u: ref @F.%tuple.type (%tuple.type.2d0) = ref_binding u, %u.var diff --git a/toolchain/check/testdata/facet/access.carbon b/toolchain/check/testdata/facet/access.carbon index 51e4d00f38aa..85d08114708b 100644 --- a/toolchain/check/testdata/facet/access.carbon +++ b/toolchain/check/testdata/facet/access.carbon @@ -698,6 +698,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.439 [symbolic_self] // CHECK:STDOUT: %A.lookup_impl_witness.1ce: = lookup_impl_witness %.Self.439, @A [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %A.lookup_impl_witness.1ce, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %A_where.type: type = facet_type <@A where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %AA: %A_where.type = symbolic_binding AA, 0 [symbolic] // CHECK:STDOUT: %pattern_type.4ea: type = pattern_type %A_where.type [concrete] @@ -706,7 +707,6 @@ fn F2(U:! Z) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -732,7 +732,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc6_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc6_19: type = impl_witness_access constants.%A.lookup_impl_witness.1ce, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_25.2: type = converted %.loc6_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc6_13.2: type = where_expr %.Self.2 [concrete = constants.%A_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%A.type @@ -754,7 +754,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_11.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12: init %empty_tuple.type = converted %.loc7_11.1, %.loc7_11.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc7_12 to %return @@ -790,9 +790,11 @@ fn F2(U:! Z) { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.e56 [symbolic_self] // CHECK:STDOUT: %A.lookup_impl_witness.3d0: = lookup_impl_witness %.Self.e56, @A [symbolic_self] // CHECK:STDOUT: %impl.elem0.3b1: type = impl_witness_access %A.lookup_impl_witness.3d0, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %B.lookup_impl_witness.bbb: = lookup_impl_witness %.Self.e56, @B [symbolic_self] // CHECK:STDOUT: %impl.elem0.b85: type = impl_witness_access %B.lookup_impl_witness.bbb, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %facet_type.189: type = facet_type <@A & @B where %impl.elem0.3b1 = %empty_tuple.type and %impl.elem0.b85 = %empty_struct_type> [concrete] // CHECK:STDOUT: %AB: %facet_type.189 = symbolic_binding AB, 0 [symbolic] // CHECK:STDOUT: %pattern_type.616: type = pattern_type %facet_type.189 [concrete] @@ -801,12 +803,10 @@ fn F2(U:! Z) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %B.lookup_impl_witness.dab: = lookup_impl_witness %AB, @B [symbolic] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -840,14 +840,14 @@ fn F2(U:! Z) { // CHECK:STDOUT: %.Self.as_type.loc14_23: type = facet_access_type %.Self.ref.loc14_23 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc14_23: type = converted %.Self.ref.loc14_23, %.Self.as_type.loc14_23 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc14_23: type = impl_witness_access constants.%A.lookup_impl_witness.3d0, element0 [symbolic_self = constants.%impl.elem0.3b1] -// CHECK:STDOUT: %.loc14_29.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_29.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_29.2: type = converted %.loc14_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.Self.ref.loc14_35: %facet_type.c5c = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self.e56] // CHECK:STDOUT: %Y.ref: %B.assoc_type = name_ref Y, @Y.%assoc0 [concrete = constants.%assoc0.081] // CHECK:STDOUT: %.Self.as_type.loc14_35: type = facet_access_type %.Self.ref.loc14_35 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc14_35: type = converted %.Self.ref.loc14_35, %.Self.as_type.loc14_35 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc14_35: type = impl_witness_access constants.%B.lookup_impl_witness.bbb, element0 [symbolic_self = constants.%impl.elem0.b85] -// CHECK:STDOUT: %.loc14_41.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_41.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_41.2: type = converted %.loc14_41.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc14_17.2: type = where_expr %.Self.2 [concrete = constants.%facet_type.189] { // CHECK:STDOUT: requirement_base_facet_type constants.%facet_type.c5c @@ -884,14 +884,14 @@ fn F2(U:! Z) { // CHECK:STDOUT: %.Self.as_type.loc18_23: type = facet_access_type %.Self.ref.loc18_23 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc18_23: type = converted %.Self.ref.loc18_23, %.Self.as_type.loc18_23 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc18_23: type = impl_witness_access constants.%A.lookup_impl_witness.3d0, element0 [symbolic_self = constants.%impl.elem0.3b1] -// CHECK:STDOUT: %.loc18_29.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_29.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_29.2: type = converted %.loc18_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.Self.ref.loc18_35: %facet_type.c5c = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self.e56] // CHECK:STDOUT: %Y.ref.loc18_35: %B.assoc_type = name_ref Y, @Y.%assoc0 [concrete = constants.%assoc0.081] // CHECK:STDOUT: %.Self.as_type.loc18_35: type = facet_access_type %.Self.ref.loc18_35 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc18_35: type = converted %.Self.ref.loc18_35, %.Self.as_type.loc18_35 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc18_35: type = impl_witness_access constants.%B.lookup_impl_witness.bbb, element0 [symbolic_self = constants.%impl.elem0.b85] -// CHECK:STDOUT: %.loc18_41.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc18_41.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc18_41.2: type = converted %.loc18_41.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc18_17.2: type = where_expr %.Self.2 [concrete = constants.%facet_type.189] { // CHECK:STDOUT: requirement_base_facet_type constants.%facet_type.c5c @@ -914,7 +914,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_11.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_12: init %empty_tuple.type = converted %.loc15_11.1, %.loc15_11.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc15_12 to %return @@ -930,7 +930,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_struct_type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_11.2: init %empty_struct_type = struct_init () to %return [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_12: init %empty_struct_type = converted %.loc19_11.1, %.loc19_11.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: return %.loc19_12 to %return diff --git a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon index 2d4fbb8e4af0..dbd3a348494e 100644 --- a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon +++ b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon @@ -109,6 +109,7 @@ fn F() { // CHECK:STDOUT: %specific_impl_fn.3a5: = specific_impl_function %impl.elem0.662, @B.BB(%B.facet.d95) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %facet_value.c74: %facet_type.b5f = facet_value %C, (%Empty.impl_witness, %A.impl_witness, %B.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] @@ -359,7 +360,7 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %.loc45_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc45_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc45_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc45_6.3: init %C = class_init (), %.loc45_6.2 [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon index 89b027396709..b235d760c536 100644 --- a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon @@ -405,6 +405,7 @@ fn G() { // CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %GenericParam.val: %GenericParam = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c4b: type = pattern_type %Generic.type.621 [concrete] // CHECK:STDOUT: %pattern_type.589: type = pattern_type %GenericParam [concrete] @@ -553,7 +554,7 @@ fn G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %CallGenericMethod.ref: %CallGenericMethod.type = name_ref CallGenericMethod, file.%CallGenericMethod.decl [concrete = constants.%CallGenericMethod] // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] -// CHECK:STDOUT: %.loc18_36.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc18_36.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %.loc18_36.2: ref %GenericParam = temporary_storage // CHECK:STDOUT: %.loc18_36.3: init %GenericParam = class_init (), %.loc18_36.2 [concrete = constants.%GenericParam.val] diff --git a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon index 1f0d22aef6cb..3d980914d077 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon @@ -44,6 +44,7 @@ fn F() { // CHECK:STDOUT: %Animal.impl_witness: = impl_witness file.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Goat.val: %Goat = struct_value () [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.ab7: type = pattern_type %Goat [concrete] @@ -144,7 +145,7 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %WalkAnimal.ref: %WalkAnimal.type = name_ref WalkAnimal, file.%WalkAnimal.decl [concrete = constants.%WalkAnimal] -// CHECK:STDOUT: %.loc23_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc23_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc23_15.2: ref %Goat = temporary_storage // CHECK:STDOUT: %.loc23_15.3: init %Goat = class_init (), %.loc23_15.2 [concrete = constants.%Goat.val] diff --git a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon index 8c6dc9f33da5..1e88edd48166 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon @@ -147,6 +147,7 @@ fn B() { // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Generic.F(%T, %U) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ImplsGeneric.val: %ImplsGeneric = struct_value () [concrete] // CHECK:STDOUT: %GenericParam.val: %GenericParam = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c4b: type = pattern_type %Generic.type.621 [concrete] @@ -331,13 +332,13 @@ fn B() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %CallGenericMethod.ref: %CallGenericMethod.type = name_ref CallGenericMethod, file.%CallGenericMethod.decl [concrete = constants.%CallGenericMethod] -// CHECK:STDOUT: %.loc20_22.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc20_22.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %.loc20_22.2: ref %ImplsGeneric = temporary_storage // CHECK:STDOUT: %.loc20_22.3: init %ImplsGeneric = class_init (), %.loc20_22.2 [concrete = constants.%ImplsGeneric.val] // CHECK:STDOUT: %.loc20_22.4: ref %ImplsGeneric = temporary %.loc20_22.2, %.loc20_22.3 // CHECK:STDOUT: %.loc20_24.1: ref %ImplsGeneric = converted %.loc20_22.1, %.loc20_22.4 -// CHECK:STDOUT: %.loc20_42.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc20_42.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %.loc20_42.2: ref %GenericParam = temporary_storage // CHECK:STDOUT: %.loc20_42.3: init %GenericParam = class_init (), %.loc20_42.2 [concrete = constants.%GenericParam.val] @@ -445,10 +446,12 @@ fn B() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.type.b47: type = facet_type <@I, @I(%T.d9f, %empty_tuple.type)> [symbolic] // CHECK:STDOUT: %Self.d52: %I.type.b47 = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %require_complete.0a6: = require_complete_type %I.type.b47 [symbolic] // CHECK:STDOUT: %I.impl_witness.65e: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.d9f) [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I.type.302: type = facet_type <@I, @I(%empty_struct_type, %empty_tuple.type)> [concrete] // CHECK:STDOUT: %T.b27: %I.type.302 = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.610: type = pattern_type %I.type.302 [concrete] @@ -509,7 +512,7 @@ fn B() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_14.1 [symbolic = %T.loc7_14.2 (constants.%T.d9f)] -// CHECK:STDOUT: %.loc7_35: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_36: type = converted %.loc7_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.type.loc7_36.1: type = facet_type <@I, @I(constants.%T.d9f, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.b47)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -525,8 +528,8 @@ fn B() { // CHECK:STDOUT: %.loc9_18.1: type = splice_block %I.type [concrete = constants.%I.type.302] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.loc9_13: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_17: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_13: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_17: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_18.2: type = converted %.loc9_13, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc9_18.3: type = converted %.loc9_17, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type, constants.%empty_tuple.type)> [concrete = constants.%I.type.302] @@ -601,7 +604,7 @@ fn B() { // CHECK:STDOUT: fn @B() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc12_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc12_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc12_6.3: init %C = class_init (), %.loc12_6.2 [concrete = constants.%C.val] @@ -693,10 +696,12 @@ fn B() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.type.b47: type = facet_type <@I, @I(%T.d9f, %empty_tuple.type)> [symbolic] // CHECK:STDOUT: %Self.d52: %I.type.b47 = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %require_complete.0a6: = require_complete_type %I.type.b47 [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.d9f) [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I.type.1c6: type = facet_type <@I, @I(%empty_struct_type, %empty_struct_type)> [concrete] // CHECK:STDOUT: %T.9c9: %I.type.1c6 = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.1f1: type = pattern_type %I.type.1c6 [concrete] @@ -752,7 +757,7 @@ fn B() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_14.1 [symbolic = %T.loc7_14.2 (constants.%T.d9f)] -// CHECK:STDOUT: %.loc7_35: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_36: type = converted %.loc7_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.type.loc7_36.1: type = facet_type <@I, @I(constants.%T.d9f, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.b47)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -768,8 +773,8 @@ fn B() { // CHECK:STDOUT: %.loc9_18.1: type = splice_block %I.type [concrete = constants.%I.type.1c6] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.loc9_13: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_17: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_13: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_17: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_18.2: type = converted %.loc9_13, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc9_18.3: type = converted %.loc9_17, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type, constants.%empty_struct_type)> [concrete = constants.%I.type.1c6] @@ -844,7 +849,7 @@ fn B() { // CHECK:STDOUT: fn @B() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc19_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc19_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc19_6.3: init %C = class_init (), %.loc19_6.2 [concrete = constants.%C.val] @@ -911,6 +916,7 @@ fn B() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.922: type = class_type @C, @C(%T.d9f, %empty_tuple.type) [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.d9f) [symbolic] // CHECK:STDOUT: %T.9f2: %I.type = symbolic_binding T, 0 [symbolic] @@ -922,6 +928,7 @@ fn B() { // CHECK:STDOUT: %require_complete.e1b: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.c74: type = class_type @C, @C(%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %C.val: %C.c74 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -966,7 +973,7 @@ fn B() { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_14.1 [symbolic = %T.loc7_14.2 (constants.%T.d9f)] -// CHECK:STDOUT: %.loc7_30: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_30: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_31: type = converted %.loc7_30, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.loc7_31.1: type = class_type @C, @C(constants.%T.d9f, constants.%empty_tuple.type) [symbolic = %C.loc7_31.2 (constants.%C.922)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -1051,10 +1058,10 @@ fn B() { // CHECK:STDOUT: fn @B() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc19_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc19_14: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc19_18: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_14: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc19_18: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_19.1: type = converted %.loc19_14, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc19_19.2: type = converted %.loc19_18, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type, constants.%empty_struct_type) [concrete = constants.%C.c74] diff --git a/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon b/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon index e3dff690ba33..331501ac9254 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon @@ -146,6 +146,7 @@ fn F[A:! J, B:! A](x: C(A, B)) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.ab7: type = pattern_type %Goat [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Goat.val: %Goat = struct_value () [concrete] // CHECK:STDOUT: %.843: type = fn_type_with_self_type %Eats.Eat.type, %Eats.facet [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -163,7 +164,7 @@ fn F[A:! J, B:! A](x: C(A, B)) { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %pattern_type.ab7 = value_binding_pattern x [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc22_28.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_28.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Goat.ref.loc22_33: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc22_28.2: ref %Goat = temporary_storage // CHECK:STDOUT: %.loc22_28.3: init %Goat = class_init (), %.loc22_28.2 [concrete = constants.%Goat.val] @@ -186,7 +187,7 @@ fn F[A:! J, B:! A](x: C(A, B)) { // CHECK:STDOUT: %Eat.ref.loc24: %Eats.assoc_type = name_ref Eat, @Eats.%assoc0 [concrete = constants.%assoc0.e43] // CHECK:STDOUT: %impl.elem0.loc24: %.843 = impl_witness_access constants.%Eats.impl_witness, element0 [concrete = constants.%Goat.as.Eats.impl.Eat] // CHECK:STDOUT: %Goat.as.Eats.impl.Eat.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() -// CHECK:STDOUT: %.loc26_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc26_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Goat.ref.loc26_11: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc26_6.2: ref %Goat = temporary_storage // CHECK:STDOUT: %.loc26_6.3: init %Goat = class_init (), %.loc26_6.2 [concrete = constants.%Goat.val] @@ -200,7 +201,7 @@ fn F[A:! J, B:! A](x: C(A, B)) { // CHECK:STDOUT: %.loc26_35: type = converted %.loc26_26, %as_type.loc26 [concrete = constants.%Goat] // CHECK:STDOUT: %Bleet.ref.loc26: %Goat.Bleet.type = name_ref Bleet, @Goat.%Goat.Bleet.decl [concrete = constants.%Goat.Bleet] // CHECK:STDOUT: %Goat.Bleet.call.loc26: init %empty_tuple.type = call %Bleet.ref.loc26() -// CHECK:STDOUT: %.loc27_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Goat.ref.loc27_11: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc27_6.2: ref %Goat = temporary_storage // CHECK:STDOUT: %.loc27_6.3: init %Goat = class_init (), %.loc27_6.2 [concrete = constants.%Goat.val] diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon index a373cab29964..9e09e3ca4bdd 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon @@ -99,6 +99,7 @@ fn F() { // CHECK:STDOUT: %Feed.specific_fn.8aa: = specific_function %Feed, @Feed(%Food.e7a, %Eats.facet.bda) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Goat.val: %Goat = struct_value () [concrete] // CHECK:STDOUT: %Grass.val: %Grass = struct_value () [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] @@ -404,13 +405,13 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %HandleAnimal.ref: %HandleAnimal.type = name_ref HandleAnimal, file.%HandleAnimal.decl [concrete = constants.%HandleAnimal] -// CHECK:STDOUT: %.loc35_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc35_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc35_17.2: ref %Goat = temporary_storage // CHECK:STDOUT: %.loc35_17.3: init %Goat = class_init (), %.loc35_17.2 [concrete = constants.%Goat.val] // CHECK:STDOUT: %.loc35_17.4: ref %Goat = temporary %.loc35_17.2, %.loc35_17.3 // CHECK:STDOUT: %.loc35_19.1: ref %Goat = converted %.loc35_17.1, %.loc35_17.4 -// CHECK:STDOUT: %.loc35_29.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc35_29.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Grass.ref: type = name_ref Grass, file.%Grass.decl [concrete = constants.%Grass] // CHECK:STDOUT: %.loc35_29.2: ref %Grass = temporary_storage // CHECK:STDOUT: %.loc35_29.3: init %Grass = class_init (), %.loc35_29.2 [concrete = constants.%Grass.val] diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon index c69b9b6c15bc..dbf6e8037e67 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon @@ -49,6 +49,7 @@ fn F() { // CHECK:STDOUT: %Animal.impl_witness: = impl_witness file.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Goat.val: %Goat = struct_value () [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.ab7: type = pattern_type %Goat [concrete] @@ -190,7 +191,7 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %HandleAnimal.ref: %HandleAnimal.type = name_ref HandleAnimal, file.%HandleAnimal.decl [concrete = constants.%HandleAnimal] -// CHECK:STDOUT: %.loc25_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc25_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc25_17.2: ref %Goat = temporary_storage // CHECK:STDOUT: %.loc25_17.3: init %Goat = class_init (), %.loc25_17.2 [concrete = constants.%Goat.val] diff --git a/toolchain/check/testdata/facet/facet_assoc_const.carbon b/toolchain/check/testdata/facet/facet_assoc_const.carbon index ccaaa40648e0..8be78b7467ea 100644 --- a/toolchain/check/testdata/facet/facet_assoc_const.carbon +++ b/toolchain/check/testdata/facet/facet_assoc_const.carbon @@ -691,6 +691,7 @@ fn F(T:! I & J where .I1 = .J1.I2) {} // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %M.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %M.lookup_impl_witness, element1 [symbolic_self] // CHECK:STDOUT: %impl.elem2: type = impl_witness_access %M.lookup_impl_witness, element2 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -732,7 +733,7 @@ fn F(T:! I & J where .I1 = .J1.I2) {} // CHECK:STDOUT: %.Self.as_type.loc13_42: type = facet_access_type %.Self.ref.loc13_42 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%M.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2] -// CHECK:STDOUT: %.loc13_48.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_48.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_48.2: type = converted %.loc13_48.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_12.2: type = where_expr %.Self.2 [concrete = ] { // CHECK:STDOUT: requirement_base_facet_type constants.%M.type diff --git a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon index d87088b6a5c3..44d49f7cc354 100644 --- a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon +++ b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon @@ -47,6 +47,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %tuple.type: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.0d2: %tuple.type = tuple_value (type) [concrete] // CHECK:STDOUT: %T: %tuple.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.f1e: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %HoldsType.type: type = generic_class_type @HoldsType [concrete] @@ -67,6 +68,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type: type = fn_type @RuntimeConvertFrom.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.b66 = facet_value %RuntimeConvertFrom, (%ImplicitAs.impl_witness) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %RuntimeConvertTo.val: %RuntimeConvertTo = struct_value () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %tuple.elem0: type = tuple_access %T, element0 [symbolic] @@ -76,8 +78,8 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.b27: = require_complete_type %HoldsType.239 [symbolic] -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%RuntimeConvertTo) [concrete] -// CHECK:STDOUT: %HoldsType.066: type = class_type @HoldsType, @HoldsType(%tuple) [concrete] +// CHECK:STDOUT: %tuple.c68: %tuple.type = tuple_value (%RuntimeConvertTo) [concrete] +// CHECK:STDOUT: %HoldsType.066: type = class_type @HoldsType, @HoldsType(%tuple.c68) [concrete] // CHECK:STDOUT: %pattern_type.a13: type = pattern_type %HoldsType.066 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -125,7 +127,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_28.1: type = splice_block %.loc17_28.3 [concrete = constants.%tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc17_28.2: %tuple.type = tuple_literal (type) +// CHECK:STDOUT: %.loc17_28.2: %tuple.type = tuple_literal (type) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc17_28.3: type = converted %.loc17_28.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc17_17.2: %tuple.type = symbolic_binding T, 0 [symbolic = %T.loc17_17.1 (constants.%T)] @@ -149,7 +151,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc27_17.1: type = splice_block %.loc27_17.3 [concrete = constants.%tuple.type] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc27_17.2: %tuple.type = tuple_literal (type) +// CHECK:STDOUT: %.loc27_17.2: %tuple.type = tuple_literal (type) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc27_17.3: type = converted %.loc27_17.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc27_6.2: %tuple.type = symbolic_binding T, 0 [symbolic = %T.loc27_6.1 (constants.%T)] @@ -176,10 +178,10 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %.loc29_46.1: type = splice_block %HoldsType [concrete = constants.%HoldsType.066] { // CHECK:STDOUT: %HoldsType.ref: %HoldsType.type = name_ref HoldsType, file.%HoldsType.decl [concrete = constants.%HoldsType.generic] // CHECK:STDOUT: %RuntimeConvertTo.ref: type = name_ref RuntimeConvertTo, file.%RuntimeConvertTo.decl [concrete = constants.%RuntimeConvertTo] -// CHECK:STDOUT: %.loc29_45: %tuple.type = tuple_literal (%RuntimeConvertTo.ref) -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%RuntimeConvertTo.ref) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc29_46.2: %tuple.type = converted %.loc29_45, %tuple [concrete = constants.%tuple] -// CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(constants.%tuple) [concrete = constants.%HoldsType.066] +// CHECK:STDOUT: %.loc29_45: %tuple.type = tuple_literal (%RuntimeConvertTo.ref) [concrete = constants.%tuple.c68] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%RuntimeConvertTo.ref) [concrete = constants.%tuple.c68] +// CHECK:STDOUT: %.loc29_46.2: %tuple.type = converted %.loc29_45, %tuple [concrete = constants.%tuple.c68] +// CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(constants.%tuple.c68) [concrete = constants.%HoldsType.066] // CHECK:STDOUT: } // CHECK:STDOUT: %holds_to: %HoldsType.066 = value_binding holds_to, %holds_to.param // CHECK:STDOUT: } @@ -238,7 +240,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: // CHECK:STDOUT: fn @RuntimeConvertFrom.as.ImplicitAs.impl.Convert(%self.param: %RuntimeConvertFrom) -> %return.param: %RuntimeConvertTo { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc24_58.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_58.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc24_58.2: init %RuntimeConvertTo = class_init (), %return [concrete = constants.%RuntimeConvertTo.val] // CHECK:STDOUT: %.loc24_59: init %RuntimeConvertTo = converted %.loc24_58.1, %.loc24_58.2 [concrete = constants.%RuntimeConvertTo.val] // CHECK:STDOUT: return %.loc24_59 to %return @@ -266,7 +268,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %from.patt: %pattern_type.f64 = symbolic_binding_pattern from, 0 [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc30_36.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc30_36.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %RuntimeConvertFrom.ref.loc30_41: type = name_ref RuntimeConvertFrom, file.%RuntimeConvertFrom.decl [concrete = constants.%RuntimeConvertFrom] // CHECK:STDOUT: %.loc30_36.2: ref %RuntimeConvertFrom = temporary_storage // CHECK:STDOUT: %.loc30_36.3: init %RuntimeConvertFrom = class_init (), %.loc30_36.2 [concrete = constants.%RuntimeConvertFrom.val] @@ -288,7 +290,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %.loc41_19.2: init %RuntimeConvertTo = converted constants.%from, %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %.loc41_19.3: ref %RuntimeConvertTo = temporary %.loc41_19.1, %.loc41_19.2 // CHECK:STDOUT: %.loc41_19.4: %RuntimeConvertTo = acquire_value %.loc41_19.3 -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%tuple, ) [concrete = ] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%tuple.c68, ) [concrete = ] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%holds_to.ref) // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.bound.loc41: = bound_method %.loc41_19.3, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.310 // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.310, @DestroyT.binding.as_type.as.Destroy.impl.Op(constants.%facet_value.d7d) [concrete = constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.748] @@ -318,14 +320,14 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %pattern_type.loc27_29 => constants.%pattern_type.af4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HoldsType(constants.%tuple) { -// CHECK:STDOUT: %T.loc17_17.1 => constants.%tuple +// CHECK:STDOUT: specific @HoldsType(constants.%tuple.c68) { +// CHECK:STDOUT: %T.loc17_17.1 => constants.%tuple.c68 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%tuple, ) { -// CHECK:STDOUT: %T.loc27_6.1 => constants.%tuple +// CHECK:STDOUT: specific @F(constants.%tuple.c68, ) { +// CHECK:STDOUT: %T.loc27_6.1 => constants.%tuple.c68 // CHECK:STDOUT: %tuple.elem0.loc27_25.1 => constants.%RuntimeConvertTo // CHECK:STDOUT: %A.loc27_20.1 => // CHECK:STDOUT: %pattern_type.loc27_20 => constants.%pattern_type.109 diff --git a/toolchain/check/testdata/facet/period_self.carbon b/toolchain/check/testdata/facet/period_self.carbon index 7c0c3f2a1b4c..abf8ba59daba 100644 --- a/toolchain/check/testdata/facet/period_self.carbon +++ b/toolchain/check/testdata/facet/period_self.carbon @@ -372,6 +372,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %.Self.binding.as_type.ce6: type = symbolic_binding_type .Self, %.Self.f26 [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness.c5b: = lookup_impl_witness %.Self.f26, @I, @I(%.Self.binding.as_type.5c8) [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness.c5b, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I, @I(%.Self.binding.as_type.5c8) where %impl.elem0 = %empty_tuple.type> [symbolic_self] // CHECK:STDOUT: %T.14f: %I_where.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.878: type = pattern_type %I_where.type [symbolic_self] @@ -381,7 +382,6 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -421,7 +421,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %.Self.as_type.loc8_25: type = facet_access_type %.Self.ref.loc8_25 [symbolic_self = constants.%.Self.binding.as_type.ce6] // CHECK:STDOUT: %.loc8_25.2: type = converted %.Self.ref.loc8_25, %.Self.as_type.loc8_25 [symbolic_self = constants.%.Self.binding.as_type.ce6] // CHECK:STDOUT: %impl.elem0.loc8_25: type = impl_witness_access constants.%I.lookup_impl_witness.c5b, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc8_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_32.2: type = converted %.loc8_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc8_19.2: type = where_expr %.Self.2 [symbolic_self = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type.cd0 @@ -457,7 +457,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %.Self.as_type.loc12_33: type = facet_access_type %.Self.ref.loc12_33 [symbolic_self = constants.%.Self.binding.as_type.ce6] // CHECK:STDOUT: %.loc12_33.2: type = converted %.Self.ref.loc12_33, %.Self.as_type.loc12_33 [symbolic_self = constants.%.Self.binding.as_type.ce6] // CHECK:STDOUT: %impl.elem0.loc12_33: type = impl_witness_access constants.%I.lookup_impl_witness.c5b, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc12_40.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_40.2: type = converted %.loc12_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc12_27.2: type = where_expr %.Self.2 [symbolic_self = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type.cd0 @@ -507,7 +507,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc9_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_11.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12: init %empty_tuple.type = converted %.loc9_11.1, %.loc9_11.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc9_12 to %return @@ -523,7 +523,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc13_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_11.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_12: init %empty_tuple.type = converted %.loc13_11.1, %.loc13_11.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc13_12 to %return diff --git a/toolchain/check/testdata/facet/self_in_interface_param.carbon b/toolchain/check/testdata/facet/self_in_interface_param.carbon index 7d4e799983a2..563c7b288d64 100644 --- a/toolchain/check/testdata/facet/self_in_interface_param.carbon +++ b/toolchain/check/testdata/facet/self_in_interface_param.carbon @@ -38,6 +38,7 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: %.Self.binding.as_type.ce6: type = symbolic_binding_type .Self, %.Self.f26 [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness.c5b: = lookup_impl_witness %.Self.f26, @I, @I(%.Self.binding.as_type.5c8) [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness.c5b, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I, @I(%.Self.binding.as_type.5c8) where %impl.elem0 = %empty_tuple.type> [symbolic_self] // CHECK:STDOUT: %T.14f: %I_where.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.878: type = pattern_type %I_where.type [symbolic_self] @@ -46,7 +47,6 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -75,7 +75,7 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: %.Self.as_type.loc18_25: type = facet_access_type %.Self.ref.loc18_25 [symbolic_self = constants.%.Self.binding.as_type.ce6] // CHECK:STDOUT: %.loc18_25.2: type = converted %.Self.ref.loc18_25, %.Self.as_type.loc18_25 [symbolic_self = constants.%.Self.binding.as_type.ce6] // CHECK:STDOUT: %impl.elem0.loc18_25: type = impl_witness_access constants.%I.lookup_impl_witness.c5b, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc18_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_32.2: type = converted %.loc18_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc18_19.2: type = where_expr %.Self.2 [symbolic_self = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type.cd0 @@ -97,7 +97,7 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_11.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_12: init %empty_tuple.type = converted %.loc19_11.1, %.loc19_11.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc19_12 to %return diff --git a/toolchain/check/testdata/facet/tuple_and_struct_type_literal.carbon b/toolchain/check/testdata/facet/tuple_and_struct_type_literal.carbon index 32ec0ad5b469..19165addb57f 100644 --- a/toolchain/check/testdata/facet/tuple_and_struct_type_literal.carbon +++ b/toolchain/check/testdata/facet/tuple_and_struct_type_literal.carbon @@ -97,3 +97,164 @@ impl {.a: (), .b: {}} as Y {} // CHECK:STDERR: ^~~~~~~~~~~~~~~~ // CHECK:STDERR: impl forall [T:! type] T as Z where .X = {.a: {}, .b: {}} {} + +// --- struct_literal_to_facet_type_parameter.carbon +library "[[@TEST_NAME]]"; + +interface Z {} +impl forall [U:! type] U as Z {} + +constraint N {} + +fn InterfaceParam(U:! Z) {} +fn ConstraintParam(U:! N) {} + +fn F() { + InterfaceParam({}); + ConstraintParam({}); +} + +// --- fail_struct_literal_with_field_to_facet_type_parameter.carbon +library "[[@TEST_NAME]]"; + +interface Z {} +impl forall [U:! type] U as Z {} + +constraint N {} + +fn InterfaceParam(U:! Z) {} +fn ConstraintParam(U:! N) {} + +fn F() { + // CHECK:STDERR: fail_struct_literal_with_field_to_facet_type_parameter.carbon:[[@LINE+10]]:3: error: cannot implicitly convert non-type value of type `{.a: ()}` into type implementing `Z` [ConversionFailureNonTypeToFacet] + // CHECK:STDERR: InterfaceParam({.a = ()}); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_literal_with_field_to_facet_type_parameter.carbon:[[@LINE+7]]:3: note: type `{.a: ()}` does not implement interface `Core.ImplicitAs(Z)` [MissingImplInMemberAccessNote] + // CHECK:STDERR: InterfaceParam({.a = ()}); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_literal_with_field_to_facet_type_parameter.carbon:[[@LINE-10]]:19: note: initializing generic parameter `U` declared here [InitializingGenericParam] + // CHECK:STDERR: fn InterfaceParam(U:! Z) {} + // CHECK:STDERR: ^ + // CHECK:STDERR: + InterfaceParam({.a = ()}); + // CHECK:STDERR: fail_struct_literal_with_field_to_facet_type_parameter.carbon:[[@LINE+10]]:3: error: cannot implicitly convert non-type value of type `{.a: ()}` into type implementing `N` [ConversionFailureNonTypeToFacet] + // CHECK:STDERR: ConstraintParam({.a = ()}); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_literal_with_field_to_facet_type_parameter.carbon:[[@LINE+7]]:3: note: type `{.a: ()}` does not implement interface `Core.ImplicitAs(N)` [MissingImplInMemberAccessNote] + // CHECK:STDERR: ConstraintParam({.a = ()}); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_literal_with_field_to_facet_type_parameter.carbon:[[@LINE-20]]:20: note: initializing generic parameter `U` declared here [InitializingGenericParam] + // CHECK:STDERR: fn ConstraintParam(U:! N) {} + // CHECK:STDERR: ^ + // CHECK:STDERR: + ConstraintParam({.a = ()}); +} + +// --- tuple_literal_to_facet_type_parameter.carbon +library "[[@TEST_NAME]]"; + +interface Z {} +impl forall [U:! type] U as Z {} + +constraint N {} + +fn InterfaceParam(U:! Z) {} +fn ConstraintParam(U:! N) {} + +fn F() { + InterfaceParam(()); + ConstraintParam(()); + + InterfaceParam(({}, )); + ConstraintParam(({}, )); + + class C; + InterfaceParam(({}, C)); + ConstraintParam(({}, C)); +} + +// --- struct_literal_to_generic_facet_type_parameter_with_concrete_specific.carbon +library "[[@TEST_NAME]]"; + +interface Z(U:! type) {} +impl forall [T:! type, U:! type] U as Z(T) {} + +constraint N(U:! type) {} + +class C; +fn InterfaceParam(U:! Z(C)) {} +fn ConstraintParam(U:! N(C)) {} + +fn F() { + InterfaceParam({}); + ConstraintParam({}); +} + +// --- tuple_literal_to_generic_facet_type_parameter_with_concrete_specific.carbon +library "[[@TEST_NAME]]"; + +interface Z(U:! type) {} +impl forall [T:! type, U:! type] U as Z(T) {} + +constraint N(U:! type) {} + +class C; +fn InterfaceParam(U:! Z(C)) {} +fn ConstraintParam(U:! N(C)) {} + +fn F() { + InterfaceParam(()); + ConstraintParam(()); + + InterfaceParam(({}, )); + ConstraintParam(({}, )); + + class C; + InterfaceParam(({}, C)); + ConstraintParam(({}, C)); +} + +// --- struct_literal_to_generic_facet_type_parameter_with_symbolic_specific.carbon +library "[[@TEST_NAME]]"; + +interface Z(U:! type) {} +impl forall [T:! type, U:! type] U as Z(T) {} + +constraint N(U:! type) {} + +fn InterfaceParam(T:! type, U:! Z(T)) {} +fn ConstraintParam(T:! type, U:! N(T)) {} + +fn F(T:! type) { + InterfaceParam((), {}); + ConstraintParam((), {}); + + InterfaceParam(T, {}); + ConstraintParam(T, {}); +} + +// --- tuple_literal_to_generic_facet_type_parameter_with_symbolic_specific.carbon +library "[[@TEST_NAME]]"; + +interface Z(U:! type) {} +impl forall [T:! type, U:! type] U as Z(T) {} + +constraint N(U:! type) {} + +fn InterfaceParam(T:! type, U:! Z(T)) {} +fn ConstraintParam(T:! type, U:! N(T)) {} + +fn F(T:! type) { + InterfaceParam({}, ()); + ConstraintParam({}, ()); + + InterfaceParam(T, ()); + ConstraintParam(T, ()); + + InterfaceParam(T, ({}, )); + ConstraintParam(T, ({}, )); + + class C; + InterfaceParam(T, ({}, C)); + ConstraintParam(T, ({}, C)); +} diff --git a/toolchain/check/testdata/facet/tuple_and_struct_type_value.carbon b/toolchain/check/testdata/facet/tuple_and_struct_type_value.carbon new file mode 100644 index 000000000000..730f74a50cce --- /dev/null +++ b/toolchain/check/testdata/facet/tuple_and_struct_type_value.carbon @@ -0,0 +1,94 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/facet/tuple_and_struct_type_value.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/facet/tuple_and_struct_type_value.carbon + +// --- tuple_value_to_facet_value.carbon +library "[[@TEST_NAME]]"; + +interface Z {} +impl forall [U:! type] U as Z {} + +constraint N {} + +fn InterfaceParam(U:! Z) {} +fn ConstraintParam(U:! N) {} + +fn F() { + let T:! (type, ) = ({}, ); + // Passes a symbolic binding of type TupleType. + InterfaceParam(T); + ConstraintParam(T); + + // Converts from a TupleLiteral with a symbolic type to a symbolic `type`. + let U:! type = (T.0, ); + // Passes a symbolic `type`. + InterfaceParam(U); + ConstraintParam(U); + + let Empty:! () = (); + InterfaceParam(Empty); + ConstraintParam(Empty); +} + +// --- struct_value_to_facet_value.carbon +library "[[@TEST_NAME]]"; + +interface Z {} +impl forall [U:! type] U as Z {} + +constraint N {} + +fn InterfaceParam(U:! Z) {} +fn ConstraintParam(U:! N) {} + +fn F() { + let T:! {} = {}; + // Passes a symbolic binding of type StructType. + InterfaceParam(T); + ConstraintParam(T); +} + +// --- fail_struct_value_with_field_to_facet_value.carbon +library "[[@TEST_NAME]]"; + +interface Z {} +impl forall [U:! type] U as Z {} + +constraint N {} + +fn InterfaceParam(U:! Z) {} +fn ConstraintParam(U:! N) {} + +fn F() { + let T:! {.a: type} = {.a = ()}; + // CHECK:STDERR: fail_struct_value_with_field_to_facet_value.carbon:[[@LINE+10]]:3: error: cannot implicitly convert non-type value of type `{.a: type}` into type implementing `Z` [ConversionFailureNonTypeToFacet] + // CHECK:STDERR: InterfaceParam(T); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_value_with_field_to_facet_value.carbon:[[@LINE+7]]:3: note: type `{.a: type}` does not implement interface `Core.ImplicitAs(Z)` [MissingImplInMemberAccessNote] + // CHECK:STDERR: InterfaceParam(T); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_value_with_field_to_facet_value.carbon:[[@LINE-11]]:19: note: initializing generic parameter `U` declared here [InitializingGenericParam] + // CHECK:STDERR: fn InterfaceParam(U:! Z) {} + // CHECK:STDERR: ^ + // CHECK:STDERR: + InterfaceParam(T); + // CHECK:STDERR: fail_struct_value_with_field_to_facet_value.carbon:[[@LINE+10]]:3: error: cannot implicitly convert non-type value of type `{.a: type}` into type implementing `N` [ConversionFailureNonTypeToFacet] + // CHECK:STDERR: ConstraintParam(T); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_value_with_field_to_facet_value.carbon:[[@LINE+7]]:3: note: type `{.a: type}` does not implement interface `Core.ImplicitAs(N)` [MissingImplInMemberAccessNote] + // CHECK:STDERR: ConstraintParam(T); + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_struct_value_with_field_to_facet_value.carbon:[[@LINE-21]]:20: note: initializing generic parameter `U` declared here [InitializingGenericParam] + // CHECK:STDERR: fn ConstraintParam(U:! N) {} + // CHECK:STDERR: ^ + // CHECK:STDERR: + ConstraintParam(T); +} diff --git a/toolchain/check/testdata/for/basic.carbon b/toolchain/check/testdata/for/basic.carbon index 043ded3768d0..a645d057d7e3 100644 --- a/toolchain/check/testdata/for/basic.carbon +++ b/toolchain/check/testdata/for/basic.carbon @@ -59,6 +59,7 @@ fn Run() { // CHECK:STDOUT: %TrivialRange: type = class_type @TrivialRange [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %T.417: %Copy.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Copy.impl_witness.c9a: = impl_witness imports.%Copy.impl_witness_table.955 [concrete] @@ -89,12 +90,12 @@ fn Run() { // CHECK:STDOUT: %Body: %Body.type = struct_value () [concrete] // CHECK:STDOUT: %AfterLoop.type: type = fn_type @AfterLoop [concrete] // CHECK:STDOUT: %AfterLoop: %AfterLoop.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %TrivialRange.val: %TrivialRange = struct_value () [concrete] // CHECK:STDOUT: %.799: type = fn_type_with_self_type %Iterate.NewCursor.type, %Iterate.facet [concrete] // CHECK:STDOUT: %.d92: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.5e3, @Optional.HasValue(%Copy.facet) [concrete] // CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.1d7, @Optional.Get(%Copy.facet) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value.ff9: %type_where = facet_value %empty_tuple.type, () [concrete] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.bb8: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.ff9) [concrete] @@ -123,7 +124,7 @@ fn Run() { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %_.patt: %pattern_type.cb1 = value_binding_pattern _ [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc18_18.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc18_18.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %TrivialRange.ref: type = name_ref TrivialRange, file.%TrivialRange.decl [concrete = constants.%TrivialRange] // CHECK:STDOUT: %.loc18_18.2: ref %TrivialRange = temporary_storage // CHECK:STDOUT: %.loc18_18.3: init %TrivialRange = class_init (), %.loc18_18.2 [concrete = constants.%TrivialRange.val] @@ -167,7 +168,7 @@ fn Run() { // CHECK:STDOUT: %.loc18_35.8: %Optional.68c = acquire_value %.loc18_35.2 // CHECK:STDOUT: %Optional.Get.call: init %empty_tuple.type = call %bound_method.loc18_35.4(%.loc18_35.8) // CHECK:STDOUT: %.loc18_12.1: type = splice_block %.loc18_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc18_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_12.3: type = converted %.loc18_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18_35.9: ref %empty_tuple.type = temporary_storage diff --git a/toolchain/check/testdata/for/pattern.carbon b/toolchain/check/testdata/for/pattern.carbon index 288f4fdd91c9..6e95b39c8e4d 100644 --- a/toolchain/check/testdata/for/pattern.carbon +++ b/toolchain/check/testdata/for/pattern.carbon @@ -486,6 +486,7 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.Make.type.bd3: type = fn_type @EmptyRange.Make, @EmptyRange(%T.604) [symbolic] // CHECK:STDOUT: %EmptyRange.Make.3a9: %EmptyRange.Make.type.bd3 = struct_value () [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.9fa: %tuple.type.24b = tuple_value (bool, bool) [concrete] // CHECK:STDOUT: %U: %Copy.type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %tuple.type.as.Copy.impl.Op.type.aa6: type = fn_type @tuple.type.as.Copy.impl.Op.1, @tuple.type.as.Copy.impl.6c5(%T.604, %U) [symbolic] // CHECK:STDOUT: %tuple.type.as.Copy.impl.Op.706: %tuple.type.as.Copy.impl.Op.type.aa6 = struct_value () [symbolic] @@ -572,13 +573,9 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.ref: %EmptyRange.type = name_ref EmptyRange, imports.%Main.EmptyRange [concrete = constants.%EmptyRange.generic] // CHECK:STDOUT: %Bool.call.loc10_42: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %Bool.call.loc10_48: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_52: %tuple.type.24b = tuple_literal (%Bool.call.loc10_42, %Bool.call.loc10_48) -// CHECK:STDOUT: %.loc10_53.1: type = value_of_initializer %Bool.call.loc10_42 [concrete = bool] -// CHECK:STDOUT: %.loc10_53.2: type = converted %Bool.call.loc10_42, %.loc10_53.1 [concrete = bool] -// CHECK:STDOUT: %.loc10_53.3: type = value_of_initializer %Bool.call.loc10_48 [concrete = bool] -// CHECK:STDOUT: %.loc10_53.4: type = converted %Bool.call.loc10_48, %.loc10_53.3 [concrete = bool] +// CHECK:STDOUT: %.loc10_52: %tuple.type.24b = tuple_literal (%Bool.call.loc10_42, %Bool.call.loc10_48) [concrete = constants.%tuple.9fa] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value constants.%tuple.type.784, (constants.%Copy.impl_witness.9a7) [concrete = constants.%Copy.facet.ba9] -// CHECK:STDOUT: %.loc10_53.5: %Copy.type = converted %.loc10_52, %Copy.facet [concrete = constants.%Copy.facet.ba9] +// CHECK:STDOUT: %.loc10_53: %Copy.type = converted %.loc10_52, %Copy.facet [concrete = constants.%Copy.facet.ba9] // CHECK:STDOUT: %EmptyRange: type = class_type @EmptyRange, @EmptyRange(constants.%Copy.facet.ba9) [concrete = constants.%EmptyRange.fee] // CHECK:STDOUT: %.loc10_54: %EmptyRange.Make.type.fee = specific_constant imports.%Main.import_ref.875, @EmptyRange(constants.%Copy.facet.ba9) [concrete = constants.%EmptyRange.Make.9ef] // CHECK:STDOUT: %Make.ref: %EmptyRange.Make.type.fee = name_ref Make, %.loc10_54 [concrete = constants.%EmptyRange.Make.9ef] @@ -692,6 +689,7 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.Make.type.bd3: type = fn_type @EmptyRange.Make, @EmptyRange(%T.604) [symbolic] // CHECK:STDOUT: %EmptyRange.Make.3a9: %EmptyRange.Make.type.bd3 = struct_value () [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.0d6: %tuple.type.24b = tuple_value (%C, %C) [concrete] // CHECK:STDOUT: %U: %Copy.type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %tuple.type.as.Copy.impl.Op.type.aa6: type = fn_type @tuple.type.as.Copy.impl.Op.1, @tuple.type.as.Copy.impl.6c5(%T.604, %U) [symbolic] // CHECK:STDOUT: %tuple.type.as.Copy.impl.Op.706: %tuple.type.as.Copy.impl.Op.type.aa6 = struct_value () [symbolic] @@ -778,7 +776,7 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.ref: %EmptyRange.type = name_ref EmptyRange, imports.%Main.EmptyRange [concrete = constants.%EmptyRange.generic] // CHECK:STDOUT: %C.ref.loc10_36: type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc10_39: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %.loc10_40: %tuple.type.24b = tuple_literal (%C.ref.loc10_36, %C.ref.loc10_39) +// CHECK:STDOUT: %.loc10_40: %tuple.type.24b = tuple_literal (%C.ref.loc10_36, %C.ref.loc10_39) [concrete = constants.%tuple.0d6] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value constants.%tuple.type.56b, (constants.%Copy.impl_witness.b4c) [concrete = constants.%Copy.facet.928] // CHECK:STDOUT: %.loc10_41: %Copy.type = converted %.loc10_40, %Copy.facet [concrete = constants.%Copy.facet.928] // CHECK:STDOUT: %EmptyRange: type = class_type @EmptyRange, @EmptyRange(constants.%Copy.facet.928) [concrete = constants.%EmptyRange.eb1] diff --git a/toolchain/check/testdata/function/builtin/adapted_type.carbon b/toolchain/check/testdata/function/builtin/adapted_type.carbon index 71471f6dbfc5..24aa84170898 100644 --- a/toolchain/check/testdata/function/builtin/adapted_type.carbon +++ b/toolchain/check/testdata/function/builtin/adapted_type.carbon @@ -237,6 +237,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %MyIntLiteral: type = class_type @MyIntLiteral [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.e22: type = pattern_type %MyIntLiteral [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] @@ -265,7 +266,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MyIntLiteral { -// CHECK:STDOUT: %.loc5_10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_11: type = converted %.loc5_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: adapt_decl %.loc5_11 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] diff --git a/toolchain/check/testdata/function/builtin/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/call_from_operator.carbon index 4638ab46dc7a..d606039049b1 100644 --- a/toolchain/check/testdata/function/builtin/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/call_from_operator.carbon @@ -750,6 +750,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.bound.81b: = bound_method %int_3.a0f, %i32.builtin.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %int_7: %i32.builtin = int_value 7 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, %i32.builtin) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_3.1ba, %int_4.0c1, %int_7) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c15: = impl_witness imports.%ImplicitAs.impl_witness_table.b46 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.2fc: %ImplicitAs.type.873 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c15) [concrete] @@ -1023,7 +1024,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %impl.elem0.loc4_66: %.f31 = impl_witness_access constants.%AddWith.impl_witness, element0 [concrete = constants.%i32.builtin.as.AddWith.impl.Op] // CHECK:STDOUT: %bound_method.loc4_66: = bound_method %.loc4_58.2, %impl.elem0.loc4_66 [concrete = constants.%i32.builtin.as.AddWith.impl.Op.bound.81b] // CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.call: init %i32.builtin = call %bound_method.loc4_66(%.loc4_58.2, %.loc4_71.2) [concrete = constants.%int_7] -// CHECK:STDOUT: %.loc4_78.1: %tuple.type = tuple_literal (%int_3.loc4_49, %int_4.loc4_52, %i32.builtin.as.AddWith.impl.Op.call) +// CHECK:STDOUT: %.loc4_78.1: %tuple.type = tuple_literal (%int_3.loc4_49, %int_4.loc4_52, %i32.builtin.as.AddWith.impl.Op.call) [concrete = constants.%tuple] // CHECK:STDOUT: %impl.elem0.loc4_78.1: %.63c = impl_witness_access constants.%ImplicitAs.impl_witness.c15, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc4_78.1: = bound_method %int_3.loc4_49, %impl.elem0.loc4_78.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.c88] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_78.1: init %i32.builtin = call %bound_method.loc4_78.1(%int_3.loc4_49) [concrete = constants.%int_3.a0f] diff --git a/toolchain/check/testdata/function/builtin/import.carbon b/toolchain/check/testdata/function/builtin/import.carbon index ae5481e394db..07cc545db38f 100644 --- a/toolchain/check/testdata/function/builtin/import.carbon +++ b/toolchain/check/testdata/function/builtin/import.carbon @@ -190,6 +190,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32.builtin [concrete] // CHECK:STDOUT: %pattern_type.9e2: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%i32.builtin, %i32.builtin, %i32.builtin) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_1.f38, %int_2.5a1, %int_3.a0f) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.f38, %int_2.5a1, %int_3.a0f) [concrete] // CHECK:STDOUT: } @@ -273,7 +274,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %AsI32.ref.loc4_121: %AsI32.type = name_ref AsI32, imports.%Core.AsI32 [concrete = constants.%AsI32] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %AsI32.call.loc4_129: init %i32.builtin = call %AsI32.ref.loc4_121(%int_3) [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_130.1: %tuple.type = tuple_literal (%AsI32.call.loc4_99, %AsI32.call.loc4_114, %AsI32.call.loc4_129) +// CHECK:STDOUT: %.loc4_130.1: %tuple.type = tuple_literal (%AsI32.call.loc4_99, %AsI32.call.loc4_114, %AsI32.call.loc4_129) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc4_130.2: ref %i32.builtin = array_index file.%arr.var, %int_0 // CHECK:STDOUT: %.loc4_130.3: init %i32.builtin = initialize_from %AsI32.call.loc4_99 to %.loc4_130.2 [concrete = constants.%int_1.f38] diff --git a/toolchain/check/testdata/function/call/alias.carbon b/toolchain/check/testdata/function/call/alias.carbon index ff1c095b595d..1b0e75fb2dc9 100644 --- a/toolchain/check/testdata/function/call/alias.carbon +++ b/toolchain/check/testdata/function/call/alias.carbon @@ -24,10 +24,10 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -60,7 +60,7 @@ fn Main() { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -72,7 +72,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_24.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_24.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_24.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_25: init %empty_tuple.type = converted %.loc15_24.1, %.loc15_24.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc15_25 to %return @@ -89,7 +89,7 @@ fn Main() { // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %B.ref() // CHECK:STDOUT: assign %b.var, %A.call // CHECK:STDOUT: %.loc20_11.1: type = splice_block %.loc20_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc20_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc20_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc20_11.3: type = converted %.loc20_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var diff --git a/toolchain/check/testdata/function/call/empty_struct.carbon b/toolchain/check/testdata/function/call/empty_struct.carbon index 230d41ea5366..09ef31bd4973 100644 --- a/toolchain/check/testdata/function/call/empty_struct.carbon +++ b/toolchain/check/testdata/function/call/empty_struct.carbon @@ -24,10 +24,10 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete] // CHECK:STDOUT: %Echo: %Echo.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -43,11 +43,11 @@ fn Main() { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_20.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_20.2: type = converted %.loc15_20.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %a.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc15_13.1: type = splice_block %.loc15_13.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc15_13.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_13.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_13.3: type = converted %.loc15_13.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: %empty_struct_type = value_binding a, %a.param @@ -68,7 +68,7 @@ fn Main() { // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Echo.ref: %Echo.type = name_ref Echo, file.%Echo.decl [concrete = constants.%Echo] -// CHECK:STDOUT: %.loc20_9.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc20_9.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc20_9.2: %empty_struct_type = converted %.loc20_9.1, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %Echo.call: init %empty_struct_type = call %Echo.ref(%.loc20_9.2) diff --git a/toolchain/check/testdata/function/call/empty_tuple.carbon b/toolchain/check/testdata/function/call/empty_tuple.carbon index 9197eb860631..0170f89fd420 100644 --- a/toolchain/check/testdata/function/call/empty_tuple.carbon +++ b/toolchain/check/testdata/function/call/empty_tuple.carbon @@ -24,10 +24,10 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete] // CHECK:STDOUT: %Echo: %Echo.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -43,11 +43,11 @@ fn Main() { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_20.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_20.2: type = converted %.loc15_20.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %a.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc15_13.1: type = splice_block %.loc15_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc15_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_13.3: type = converted %.loc15_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: %empty_tuple.type = value_binding a, %a.param @@ -68,7 +68,7 @@ fn Main() { // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Echo.ref: %Echo.type = name_ref Echo, file.%Echo.decl [concrete = constants.%Echo] -// CHECK:STDOUT: %.loc20_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc20_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc20_9.2: %empty_tuple.type = converted %.loc20_9.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Echo.call: init %empty_tuple.type = call %Echo.ref(%.loc20_9.2) diff --git a/toolchain/check/testdata/function/call/fail_explicit_self_param.carbon b/toolchain/check/testdata/function/call/fail_explicit_self_param.carbon index d7e20e784d57..9a6bd2d3edb4 100644 --- a/toolchain/check/testdata/function/call/fail_explicit_self_param.carbon +++ b/toolchain/check/testdata/function/call/fail_explicit_self_param.carbon @@ -26,12 +26,12 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -45,7 +45,7 @@ fn Run() { // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc19_13.1: type = splice_block %.loc19_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc19_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_13.3: type = converted %.loc19_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param @@ -58,7 +58,7 @@ fn Run() { // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc22_6.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc22_6.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_6.2: %empty_tuple.type = converted %.loc22_6.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc22_6.2) diff --git a/toolchain/check/testdata/function/call/more_param_ir.carbon b/toolchain/check/testdata/function/call/more_param_ir.carbon index 2c75e61f2c8f..7c850e5ee865 100644 --- a/toolchain/check/testdata/function/call/more_param_ir.carbon +++ b/toolchain/check/testdata/function/call/more_param_ir.carbon @@ -34,10 +34,12 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.896: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -54,7 +56,7 @@ fn Main() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.dfc: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.a4a: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] @@ -126,20 +128,20 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %tuple.type.a1c = var %x.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc18_22.1: %tuple.type.985 = tuple_literal (%int_1) +// CHECK:STDOUT: %.loc18_22.1: %tuple.type.985 = tuple_literal (%int_1) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc18: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc18_22.1: = bound_method %int_1, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_22.2: = bound_method %int_1, %specific_fn.loc18 [concrete = constants.%bound_method.dfc] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %i32 = call %bound_method.loc18_22.2(%int_1) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_22.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_22.3: init %tuple.type.a1c = tuple_init (%.loc18_22.2) to %x.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc18_3: init %tuple.type.a1c = converted %.loc18_22.1, %.loc18_22.3 [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc18_22.3: init %tuple.type.a1c = tuple_init (%.loc18_22.2) to %x.var [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc18_3: init %tuple.type.a1c = converted %.loc18_22.1, %.loc18_22.3 [concrete = constants.%tuple.246] // CHECK:STDOUT: assign %x.var, %.loc18_3 // CHECK:STDOUT: %.loc18_15.1: type = splice_block %.loc18_15.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18_15.2: %tuple.type.85c = tuple_literal (%i32) +// CHECK:STDOUT: %.loc18_15.2: %tuple.type.85c = tuple_literal (%i32) [concrete = constants.%tuple.896] // CHECK:STDOUT: %.loc18_15.3: type = converted %.loc18_15.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %tuple.type.a1c = ref_binding x, %x.var diff --git a/toolchain/check/testdata/function/call/return_implicit.carbon b/toolchain/check/testdata/function/call/return_implicit.carbon index facbdcd6266e..5d186ccfc6de 100644 --- a/toolchain/check/testdata/function/call/return_implicit.carbon +++ b/toolchain/check/testdata/function/call/return_implicit.carbon @@ -27,6 +27,7 @@ fn Main() { // CHECK:STDOUT: %MakeImplicitEmptyTuple: %MakeImplicitEmptyTuple.type = struct_value () [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -73,7 +74,7 @@ fn Main() { // CHECK:STDOUT: %MakeImplicitEmptyTuple.call: init %empty_tuple.type = call %MakeImplicitEmptyTuple.ref() // CHECK:STDOUT: assign %b.var, %MakeImplicitEmptyTuple.call // CHECK:STDOUT: %.loc19_11.1: type = splice_block %.loc19_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc19_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_11.3: type = converted %.loc19_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var diff --git a/toolchain/check/testdata/function/declaration/export_name.carbon b/toolchain/check/testdata/function/declaration/export_name.carbon index fa70723e90d4..458eba4137d4 100644 --- a/toolchain/check/testdata/function/declaration/export_name.carbon +++ b/toolchain/check/testdata/function/declaration/export_name.carbon @@ -83,6 +83,7 @@ var f: () = F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -104,7 +105,7 @@ var f: () = F(); // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] diff --git a/toolchain/check/testdata/function/declaration/extern.carbon b/toolchain/check/testdata/function/declaration/extern.carbon index 8e9a594be93d..c3a45b5910de 100644 --- a/toolchain/check/testdata/function/declaration/extern.carbon +++ b/toolchain/check/testdata/function/declaration/extern.carbon @@ -105,6 +105,7 @@ extern library "basic" fn F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -126,7 +127,7 @@ extern library "basic" fn F(); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] diff --git a/toolchain/check/testdata/function/declaration/fail_pattern_in_signature.carbon b/toolchain/check/testdata/function/declaration/fail_pattern_in_signature.carbon index 13c5bf09fd1b..fb2a675aeba0 100644 --- a/toolchain/check/testdata/function/declaration/fail_pattern_in_signature.carbon +++ b/toolchain/check/testdata/function/declaration/fail_pattern_in_signature.carbon @@ -22,6 +22,7 @@ fn F((a: {}, b: {}), c: {}); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type [concrete] @@ -44,7 +45,7 @@ fn F((a: {}, b: {}), c: {}); // CHECK:STDOUT: } { // CHECK:STDOUT: %c.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc19_26.1: type = splice_block %.loc19_26.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc19_26.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_26.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_26.3: type = converted %.loc19_26.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %empty_struct_type = value_binding c, %c.param diff --git a/toolchain/check/testdata/function/declaration/fail_redecl.carbon b/toolchain/check/testdata/function/declaration/fail_redecl.carbon index f9fd4f1a3817..64e22a568e20 100644 --- a/toolchain/check/testdata/function/declaration/fail_redecl.carbon +++ b/toolchain/check/testdata/function/declaration/fail_redecl.carbon @@ -68,6 +68,7 @@ fn E() {} // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] @@ -99,7 +100,7 @@ fn E() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param.loc25: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc25_10.1: type = splice_block %.loc25_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc25_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc25_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc25_10.3: type = converted %.loc25_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc25: %empty_tuple.type = value_binding x, %x.param.loc25 @@ -110,7 +111,7 @@ fn E() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param.loc33: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc33_10.1: type = splice_block %.loc33_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc33_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc33_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc33_10.3: type = converted %.loc33_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc33: %empty_tuple.type = value_binding x, %x.param.loc33 @@ -122,7 +123,7 @@ fn E() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc43_10.1: type = splice_block %.loc43_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc43_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc43_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc43_10.3: type = converted %.loc43_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param diff --git a/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon b/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon index 7dac758639b0..ceedebb114b8 100644 --- a/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon +++ b/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon @@ -120,6 +120,7 @@ fn A { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -133,7 +134,7 @@ fn A { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc7_10.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_10.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_10.2: type = converted %.loc7_10.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -146,6 +147,7 @@ fn A { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -159,7 +161,7 @@ fn A { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index 396fcaa21f61..ccad877de9f6 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -273,6 +273,7 @@ import library "extern_api"; // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] @@ -335,7 +336,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_14.2: %tuple.type.85c = tuple_literal (%i32.loc6_10) +// CHECK:STDOUT: %.loc6_14.2: %tuple.type.85c = tuple_literal (%i32.loc6_10) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_14.3: type = converted %.loc6_14.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.a1c = value_binding c, %c.param @@ -372,6 +373,7 @@ import library "extern_api"; // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] @@ -434,7 +436,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc6_49.1: type = splice_block %.loc6_49.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc6_45: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_45: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_49.2: %tuple.type.85c = tuple_literal (%i32.loc6_45) +// CHECK:STDOUT: %.loc6_49.2: %tuple.type.85c = tuple_literal (%i32.loc6_45) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_49.3: type = converted %.loc6_49.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.a1c = value_binding c, %c.param @@ -462,6 +464,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -495,7 +498,8 @@ import library "extern_api"; // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %D.type: type = fn_type @D [concrete] // CHECK:STDOUT: %D: %D.type = struct_value () [concrete] // CHECK:STDOUT: %E.type: type = fn_type @E [concrete] @@ -546,7 +550,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -577,7 +581,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete] // CHECK:STDOUT: %.loc9_9.1: type = splice_block %.loc9_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc9_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_9.3: type = converted %.loc9_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var] @@ -587,7 +591,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] @@ -621,7 +625,7 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) +// CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc8: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -629,8 +633,8 @@ import library "extern_api"; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_25.2(%int_1.loc8) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc8_25.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc8_25.4: %tuple.type.a1c = converted %.loc8_25.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc8_25.3) [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc8_25.4: %tuple.type.a1c = converted %.loc8_25.1, %tuple [concrete = constants.%tuple.246] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc8_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%Main.D [concrete = constants.%D] @@ -657,6 +661,7 @@ import library "extern_api"; // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.896: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] @@ -666,6 +671,7 @@ import library "extern_api"; // CHECK:STDOUT: %D: %D.type = struct_value () [concrete] // CHECK:STDOUT: %E.type: type = fn_type @E [concrete] // CHECK:STDOUT: %E: %E.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] @@ -685,7 +691,8 @@ import library "extern_api"; // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -742,7 +749,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc32_21.1: type = splice_block %.loc32_21.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc32_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc32_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc32_21.2: %tuple.type.85c = tuple_literal (%i32.loc32_17) +// CHECK:STDOUT: %.loc32_21.2: %tuple.type.85c = tuple_literal (%i32.loc32_17) [concrete = constants.%tuple.896] // CHECK:STDOUT: %.loc32_21.3: type = converted %.loc32_21.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.a1c = value_binding c, %c.param @@ -757,7 +764,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -788,7 +795,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete] // CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var] @@ -798,7 +805,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] @@ -832,7 +839,7 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) +// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc54: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -840,8 +847,8 @@ import library "extern_api"; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple.246] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc54_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, file.%D.decl [concrete = constants.%D] @@ -877,6 +884,8 @@ import library "extern_api"; // CHECK:STDOUT: %E.type: type = fn_type @E [concrete] // CHECK:STDOUT: %E: %E.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.38e: %tuple.type.85c = tuple_value (%i32) [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] @@ -896,7 +905,8 @@ import library "extern_api"; // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.dd4 = tuple_value (%int_1.47b) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] +// CHECK:STDOUT: %tuple.7dd: %tuple.type.dd4 = tuple_value (%int_1.47b) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -953,7 +963,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc8_21.1: type = splice_block %.loc8_21.3 [concrete = constants.%tuple.type.dd4] { // CHECK:STDOUT: %int_32.loc8_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8_21.2: %tuple.type.85c = tuple_literal (%i32.loc8_17) +// CHECK:STDOUT: %.loc8_21.2: %tuple.type.85c = tuple_literal (%i32.loc8_17) [concrete = constants.%tuple.38e] // CHECK:STDOUT: %.loc8_21.3: type = converted %.loc8_21.2, constants.%tuple.type.dd4 [concrete = constants.%tuple.type.dd4] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.dd4 = value_binding c, %c.param @@ -968,7 +978,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc12_9.1: type = splice_block %.loc12_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -999,7 +1009,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete] // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc15_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var] @@ -1009,7 +1019,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc16_9.1: type = splice_block %.loc16_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc16_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_9.3: type = converted %.loc16_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] @@ -1043,7 +1053,7 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc14_25.1: %tuple.type.985 = tuple_literal (%int_1.loc14) +// CHECK:STDOUT: %.loc14_25.1: %tuple.type.985 = tuple_literal (%int_1.loc14) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc14: %.1a5 = impl_witness_access constants.%ImplicitAs.impl_witness.09b, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.13e] // CHECK:STDOUT: %bound_method.loc14_25.1: = bound_method %int_1.loc14, %impl.elem0.loc14 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -1051,8 +1061,8 @@ import library "extern_api"; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14: init %i32 = call %bound_method.loc14_25.2(%int_1.loc14) [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc14_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc14_25.3: %i32 = converted %int_1.loc14, %.loc14_25.2 [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %tuple: %tuple.type.dd4 = tuple_value (%.loc14_25.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc14_25.4: %tuple.type.dd4 = converted %.loc14_25.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.dd4 = tuple_value (%.loc14_25.3) [concrete = constants.%tuple.7dd] +// CHECK:STDOUT: %.loc14_25.4: %tuple.type.dd4 = converted %.loc14_25.1, %tuple [concrete = constants.%tuple.7dd] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc14_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, file.%D.decl [concrete = constants.%D] @@ -1069,6 +1079,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -1102,7 +1113,8 @@ import library "extern_api"; // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %D.type: type = fn_type @D [concrete] // CHECK:STDOUT: %D: %D.type = struct_value () [concrete] // CHECK:STDOUT: %E.type: type = fn_type @E [concrete] @@ -1153,7 +1165,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -1184,7 +1196,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete] // CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var] @@ -1194,7 +1206,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] @@ -1228,7 +1240,7 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) +// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc54: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -1236,8 +1248,8 @@ import library "extern_api"; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple.246] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc54_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%Main.D [concrete = constants.%D] @@ -1254,6 +1266,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -1287,7 +1300,8 @@ import library "extern_api"; // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %D.type: type = fn_type @D [concrete] // CHECK:STDOUT: %D: %D.type = struct_value () [concrete] // CHECK:STDOUT: %E.type: type = fn_type @E [concrete] @@ -1338,7 +1352,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -1369,7 +1383,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete] // CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var] @@ -1379,7 +1393,7 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] @@ -1413,7 +1427,7 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) +// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc54: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -1421,8 +1435,8 @@ import library "extern_api"; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple.246] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc54_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%Main.D [concrete = constants.%D] diff --git a/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon b/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon index 46c682a32eae..08f2c05e33fb 100644 --- a/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon +++ b/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon @@ -75,6 +75,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %F.type.b25846.1: type = fn_type @F.loc15 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F.c41931.1: %F.type.b25846.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type.b25846.2: type = fn_type @F.loc23 [concrete] // CHECK:STDOUT: %F.c41931.2: %F.type.b25846.2 = struct_value () [concrete] @@ -90,7 +91,6 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %I.58e4ec.1: %I.type.af49c4.1 = struct_value () [concrete] // CHECK:STDOUT: %I.type.af49c4.2: type = fn_type @I.loc50 [concrete] // CHECK:STDOUT: %I.58e4ec.2: %I.type.af49c4.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %J.type.8e2c84.1: type = fn_type @J.loc52 [concrete] // CHECK:STDOUT: %J.3662e8.1: %J.type.8e2c84.1 = struct_value () [concrete] // CHECK:STDOUT: %J.type.8e2c84.2: type = fn_type @J.loc60 [concrete] @@ -98,10 +98,10 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %K.type.6cc1c5.1: type = fn_type @K.loc62 [concrete] // CHECK:STDOUT: %K.460d95.1: %K.type.6cc1c5.1 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %K.type.6cc1c5.2: type = fn_type @K.loc70 [concrete] // CHECK:STDOUT: %K.460d95.2: %K.type.6cc1c5.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -120,7 +120,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc23_10.1: type = splice_block %.loc23_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc23_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_10.3: type = converted %.loc23_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param @@ -131,7 +131,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc25_10.1: type = splice_block %.loc25_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc25_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc25_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc25_10.3: type = converted %.loc25_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param @@ -143,7 +143,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc35_10.1: type = splice_block %.loc35_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc35_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc35_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc35_10.3: type = converted %.loc35_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param @@ -160,7 +160,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc50_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc50_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc50_12.2: type = converted %.loc50_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -169,7 +169,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc52_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc52_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc52_12.2: type = converted %.loc52_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -179,7 +179,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc62_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc62_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc62_12.2: type = converted %.loc62_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -188,7 +188,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc70_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc70_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc70_12.2: type = converted %.loc70_12.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param @@ -220,7 +220,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: // CHECK:STDOUT: fn @I.loc50() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc50_24.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc50_24.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc50_24.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc50_25: init %empty_tuple.type = converted %.loc50_24.1, %.loc50_24.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc50_25 to %return @@ -237,7 +237,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: // CHECK:STDOUT: fn @K.loc70() -> %empty_struct_type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc70_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc70_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc70_24.2: init %empty_struct_type = struct_init () to %return [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc70_25: init %empty_struct_type = converted %.loc70_24.1, %.loc70_24.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: return %.loc70_25 to %return diff --git a/toolchain/check/testdata/function/definition/fail_local_decl.carbon b/toolchain/check/testdata/function/definition/fail_local_decl.carbon index 6cdf3ab52154..e15bfb28139f 100644 --- a/toolchain/check/testdata/function/definition/fail_local_decl.carbon +++ b/toolchain/check/testdata/function/definition/fail_local_decl.carbon @@ -101,6 +101,7 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -137,7 +138,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %empty_struct_type = var %v.var_patt // CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc9_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_19.3: type = converted %.loc9_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_struct_type = ref_binding v, %v.var @@ -147,7 +148,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %empty_struct_type = var %w.var_patt // CHECK:STDOUT: %.loc14_21.1: type = splice_block %.loc14_21.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc14_21.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_21.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_21.3: type = converted %.loc14_21.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %w: ref %empty_struct_type = ref_binding w, %w.var diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index 3d1fdf4f3e7a..99a2ab33859c 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -138,6 +138,7 @@ fn D() {} // CHECK:STDOUT: %.65f: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.dfd, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.896: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] @@ -202,7 +203,7 @@ fn D() {} // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_14.2: %tuple.type.85c = tuple_literal (%i32.loc6_10) +// CHECK:STDOUT: %.loc6_14.2: %tuple.type.85c = tuple_literal (%i32.loc6_10) [concrete = constants.%tuple.896] // CHECK:STDOUT: %.loc6_14.3: type = converted %.loc6_14.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %tuple.type.a1c = value_binding c, %c.param @@ -275,6 +276,7 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -308,7 +310,8 @@ fn D() {} // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] +// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -347,7 +350,7 @@ fn D() {} // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -398,7 +401,7 @@ fn D() {} // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) +// CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) [concrete = constants.%tuple.378] // CHECK:STDOUT: %impl.elem0.loc8: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -406,8 +409,8 @@ fn D() {} // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_25.2(%int_1.loc8) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc8_25.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc8_25.4: %tuple.type.a1c = converted %.loc8_25.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc8_25.3) [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc8_25.4: %tuple.type.a1c = converted %.loc8_25.1, %tuple [concrete = constants.%tuple.246] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc8_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/definition/import_access.carbon b/toolchain/check/testdata/function/definition/import_access.carbon index 368fe64e8a45..f3d678041be4 100644 --- a/toolchain/check/testdata/function/definition/import_access.carbon +++ b/toolchain/check/testdata/function/definition/import_access.carbon @@ -199,6 +199,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Def.type: type = fn_type @Def [concrete] // CHECK:STDOUT: %Def: %Def.type = struct_value () [concrete] @@ -221,7 +222,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -241,6 +242,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -256,7 +258,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -273,6 +275,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -295,7 +298,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -313,6 +316,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %ForwardWithDef.type: type = fn_type @ForwardWithDef [concrete] // CHECK:STDOUT: %ForwardWithDef: %ForwardWithDef.type = struct_value () [concrete] @@ -335,7 +339,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -355,6 +359,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,7 +375,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -387,6 +392,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -409,7 +415,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -427,6 +433,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Forward.type: type = fn_type @Forward [concrete] // CHECK:STDOUT: %Forward: %Forward.type = struct_value () [concrete] @@ -449,7 +456,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -473,6 +480,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -488,7 +496,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] @@ -505,6 +513,7 @@ private fn Redecl() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -527,7 +536,7 @@ private fn Redecl() {} // CHECK:STDOUT: } // CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %f: ref %empty_tuple.type = ref_binding f, %f.var [concrete = %f.var] diff --git a/toolchain/check/testdata/function/definition/syntactic_merge.carbon b/toolchain/check/testdata/function/definition/syntactic_merge.carbon index 102932303d02..dffd6aa96876 100644 --- a/toolchain/check/testdata/function/definition/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/syntactic_merge.carbon @@ -772,6 +772,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -812,7 +813,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo() -> %return.param.loc8: %C { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_25.2: init %C = class_init (), %return.loc8 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_26: init %C = converted %.loc8_25.1, %.loc8_25.2 [concrete = constants.%C.val] // CHECK:STDOUT: return %.loc8_26 to %return.loc8 diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 3e9cca6b1a88..6100db26a05b 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -528,6 +528,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.5f8: type = pattern_type %ptr.6db [concrete] // CHECK:STDOUT: %CallExplicitAndAlsoDeduced.type: type = fn_type @CallExplicitAndAlsoDeduced [concrete] // CHECK:STDOUT: %CallExplicitAndAlsoDeduced: %CallExplicitAndAlsoDeduced.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] // CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.720: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%A) [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] @@ -620,7 +621,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ExplicitAndAlsoDeduced.ref: %ExplicitAndAlsoDeduced.type = name_ref ExplicitAndAlsoDeduced, file.%ExplicitAndAlsoDeduced.decl [concrete = constants.%ExplicitAndAlsoDeduced] // CHECK:STDOUT: %A.ref.loc11: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc11_37.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_37.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn: = specific_function %ExplicitAndAlsoDeduced.ref, @ExplicitAndAlsoDeduced(constants.%A) [concrete = constants.%ExplicitAndAlsoDeduced.specific_fn.720] // CHECK:STDOUT: %.loc11_37.2: ref %A = temporary_storage // CHECK:STDOUT: %.loc11_37.3: init %A = class_init (), %.loc11_37.2 [concrete = constants.%A.val] @@ -810,6 +811,7 @@ fn F() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.8db: %tuple.type.24b = tuple_value (%T, %i32) [symbolic] // CHECK:STDOUT: %tuple.type.621: type = tuple_type (%T, %i32) [symbolic] // CHECK:STDOUT: %pattern_type.c1e: type = pattern_type %tuple.type.621 [symbolic] // CHECK:STDOUT: %TupleParam.type: type = fn_type @TupleParam [concrete] @@ -820,6 +822,8 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1, %int_2.ecc) [concrete] +// CHECK:STDOUT: %tuple.ae9: %tuple.type.24b = tuple_value (Core.IntLiteral, %i32) [concrete] // CHECK:STDOUT: %tuple.type.4c8: type = tuple_type (Core.IntLiteral, %i32) [concrete] // CHECK:STDOUT: %pattern_type.6f2: type = pattern_type %tuple.type.4c8 [concrete] // CHECK:STDOUT: %TupleParam.specific_fn: = specific_function %TupleParam, @TupleParam(Core.IntLiteral) [concrete] @@ -839,7 +843,7 @@ fn F() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %int_2.ef8) [concrete] +// CHECK:STDOUT: %tuple.c87: %tuple.type.4c8 = tuple_value (%int_1, %int_2.ef8) [concrete] // CHECK:STDOUT: %complete_type.c49: = complete_type_witness %tuple.type.4c8 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -875,7 +879,7 @@ fn F() { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_15.2 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_35.2: %tuple.type.24b = tuple_literal (%T.ref, %i32) +// CHECK:STDOUT: %.loc4_35.2: %tuple.type.24b = tuple_literal (%T.ref, %i32) [symbolic = %tuple (constants.%tuple.8db)] // CHECK:STDOUT: %.loc4_35.3: type = converted %.loc4_35.2, constants.%tuple.type.621 [symbolic = %tuple.type (constants.%tuple.type.621)] // CHECK:STDOUT: } // CHECK:STDOUT: %x: @TupleParam.%tuple.type (%tuple.type.621) = value_binding x, %x.param @@ -885,6 +889,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @TupleParam(%T.loc4_15.2: type) { // CHECK:STDOUT: %T.loc4_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc4_15.1, constants.%i32) [symbolic = %tuple (constants.%tuple.8db)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc4_15.1, constants.%i32) [symbolic = %tuple.type (constants.%tuple.type.621)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.c1e)] // CHECK:STDOUT: @@ -902,7 +907,7 @@ fn F() { // CHECK:STDOUT: %TupleParam.ref: %TupleParam.type = name_ref TupleParam, file.%TupleParam.decl [concrete = constants.%TupleParam] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc7_19.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc7_19.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %TupleParam.specific_fn: = specific_function %TupleParam.ref, @TupleParam(Core.IntLiteral) [concrete = constants.%TupleParam.specific_fn] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc7_19.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] @@ -911,20 +916,22 @@ fn F() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_19.2(%int_2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_19.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_19.3: %i32 = converted %int_2, %.loc7_19.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %.loc7_19.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc7_19.4: %tuple.type.4c8 = converted %.loc7_19.1, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %.loc7_19.3) [concrete = constants.%tuple.c87] +// CHECK:STDOUT: %.loc7_19.4: %tuple.type.4c8 = converted %.loc7_19.1, %tuple [concrete = constants.%tuple.c87] // CHECK:STDOUT: %TupleParam.call: init %empty_tuple.type = call %TupleParam.specific_fn(%.loc7_19.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @TupleParam(constants.%T) { // CHECK:STDOUT: %T.loc4_15.1 => constants.%T +// CHECK:STDOUT: %tuple => constants.%tuple.8db // CHECK:STDOUT: %tuple.type => constants.%tuple.type.621 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c1e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @TupleParam(Core.IntLiteral) { // CHECK:STDOUT: %T.loc4_15.1 => Core.IntLiteral +// CHECK:STDOUT: %tuple => constants.%tuple.ae9 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.4c8 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6f2 // CHECK:STDOUT: @@ -954,6 +961,7 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1, %int_2.ecc) [concrete] // CHECK:STDOUT: %struct_type.a.b.a13: type = struct_type {.a: Core.IntLiteral, .b: %i32} [concrete] // CHECK:STDOUT: %pattern_type.cfa: type = pattern_type %struct_type.a.b.a13 [concrete] // CHECK:STDOUT: %StructParam.specific_fn: = specific_function %StructParam, @StructParam(Core.IntLiteral) [concrete] @@ -973,7 +981,7 @@ fn F() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.e87: %struct_type.a.b.a13 = struct_value (%int_1, %int_2.ef8) [concrete] // CHECK:STDOUT: %complete_type.a4a: = complete_type_witness %struct_type.a.b.a13 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1035,7 +1043,7 @@ fn F() { // CHECK:STDOUT: %StructParam.ref: %StructParam.type = name_ref StructParam, file.%StructParam.decl [concrete = constants.%StructParam] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc7_30.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc7_30.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %StructParam.specific_fn: = specific_function %StructParam.ref, @StructParam(Core.IntLiteral) [concrete = constants.%StructParam.specific_fn] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc7_30.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] @@ -1044,8 +1052,8 @@ fn F() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_30.2(%int_2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_30.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_30.3: %i32 = converted %int_2, %.loc7_30.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %.loc7_30.3) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc7_30.4: %struct_type.a.b.a13 = converted %.loc7_30.1, %struct [concrete = constants.%struct] +// CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %.loc7_30.3) [concrete = constants.%struct.e87] +// CHECK:STDOUT: %.loc7_30.4: %struct_type.a.b.a13 = converted %.loc7_30.1, %struct [concrete = constants.%struct.e87] // CHECK:STDOUT: %StructParam.call: init %empty_tuple.type = call %StructParam.specific_fn(%.loc7_30.4) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1086,6 +1094,7 @@ fn F() { // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.c.d: type = struct_type {.c: Core.IntLiteral, .d: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.c.d = struct_value (%int_3, %int_4) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1144,7 +1153,7 @@ fn F() { // CHECK:STDOUT: %BigStructParam.ref: %BigStructParam.type = name_ref BigStructParam, file.%BigStructParam.decl [concrete = constants.%BigStructParam] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] -// CHECK:STDOUT: %.loc14: %struct_type.c.d = struct_literal (%int_3, %int_4) +// CHECK:STDOUT: %.loc14: %struct_type.c.d = struct_literal (%int_3, %int_4) [concrete = constants.%struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1176,6 +1185,7 @@ fn F() { // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete] // CHECK:STDOUT: %struct_type.f.g.h: type = struct_type {.f: Core.IntLiteral, .g: Core.IntLiteral, .h: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.f.g.h = struct_value (%int_5, %int_6, %int_7) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1233,7 +1243,7 @@ fn F() { // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7] -// CHECK:STDOUT: %.loc14: %struct_type.f.g.h = struct_literal (%int_5, %int_6, %int_7) +// CHECK:STDOUT: %.loc14: %struct_type.f.g.h = struct_literal (%int_5, %int_6, %int_7) [concrete = constants.%struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1264,6 +1274,7 @@ fn F() { // CHECK:STDOUT: %int_8: Core.IntLiteral = int_value 8 [concrete] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete] // CHECK:STDOUT: %struct_type.i.j: type = struct_type {.i: Core.IntLiteral, .j: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.i.j = struct_value (%int_8, %int_9) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1320,7 +1331,7 @@ fn F() { // CHECK:STDOUT: %WrongNameStructParam.ref: %WrongNameStructParam.type = name_ref WrongNameStructParam, file.%WrongNameStructParam.decl [concrete = constants.%WrongNameStructParam] // CHECK:STDOUT: %int_8: Core.IntLiteral = int_value 8 [concrete = constants.%int_8] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete = constants.%int_9] -// CHECK:STDOUT: %.loc14: %struct_type.i.j = struct_literal (%int_8, %int_9) +// CHECK:STDOUT: %.loc14: %struct_type.i.j = struct_literal (%int_8, %int_9) [concrete = constants.%struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1351,6 +1362,7 @@ fn F() { // CHECK:STDOUT: %int_11: Core.IntLiteral = int_value 11 [concrete] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete] // CHECK:STDOUT: %struct_type.second.first: type = struct_type {.second: Core.IntLiteral, .first: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.second.first = struct_value (%int_11, %int_10) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1407,7 +1419,7 @@ fn F() { // CHECK:STDOUT: %WrongOrderStructParam.ref: %WrongOrderStructParam.type = name_ref WrongOrderStructParam, file.%WrongOrderStructParam.decl [concrete = constants.%WrongOrderStructParam] // CHECK:STDOUT: %int_11: Core.IntLiteral = int_value 11 [concrete = constants.%int_11] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10] -// CHECK:STDOUT: %.loc14: %struct_type.second.first = struct_literal (%int_11, %int_10) +// CHECK:STDOUT: %.loc14: %struct_type.second.first = struct_literal (%int_11, %int_10) [concrete = constants.%struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1508,6 +1520,7 @@ fn F() { // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete] // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%int_12) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1560,7 +1573,7 @@ fn F() { // CHECK:STDOUT: %ImplicitNotDeducible.ref: %ImplicitNotDeducible.type = name_ref ImplicitNotDeducible, file.%ImplicitNotDeducible.decl [concrete = constants.%ImplicitNotDeducible] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42] // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12] -// CHECK:STDOUT: %.loc14: %struct_type.x = struct_literal (%int_12) +// CHECK:STDOUT: %.loc14: %struct_type.x = struct_literal (%int_12) [concrete = constants.%struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon b/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon index 76fb508b383c..3063b9c74a8c 100644 --- a/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon +++ b/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon @@ -138,7 +138,9 @@ fn B() { // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [concrete] +// CHECK:STDOUT: %struct: %struct_type.b = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: %A.type.fad: type = fn_type @A.1 [concrete] // CHECK:STDOUT: %A.7a0: %A.type.fad = struct_value () [concrete] // CHECK:STDOUT: } @@ -211,12 +213,12 @@ fn B() { // CHECK:STDOUT: fn @B() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref.loc14: %A.type.00d = name_ref A, file.%A.decl [concrete = constants.%A.1db] -// CHECK:STDOUT: %.loc14_12: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc14_13: %struct_type.b = struct_literal (%.loc14_12) +// CHECK:STDOUT: %.loc14_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc14_13: %struct_type.b = struct_literal (%.loc14_12) [concrete = constants.%struct] // CHECK:STDOUT: %Lib.ref: = name_ref Lib, imports.%Lib [concrete = imports.%Lib] // CHECK:STDOUT: %A.ref.loc24: %A.type.fad = name_ref A, imports.%Lib.A [concrete = constants.%A.7a0] -// CHECK:STDOUT: %.loc24_16: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc24_17: %struct_type.b = struct_literal (%.loc24_16) +// CHECK:STDOUT: %.loc24_16: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc24_17: %struct_type.b = struct_literal (%.loc24_16) [concrete = constants.%struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 6bc167eae980..92045bfc4054 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -61,6 +61,7 @@ fn G() { // CHECK:STDOUT: %Wrap.Make.type.572: type = fn_type @Wrap.Make, @Wrap(%i32) [concrete] // CHECK:STDOUT: %Wrap.Make.2c5: %Wrap.Make.type.572 = struct_value () [concrete] // CHECK:STDOUT: %Wrap.Make.specific_fn.783: = specific_function %Wrap.Make.2c5, @Wrap.Make(%i32) [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Wrap.1aa: type = class_type @Wrap, @Wrap(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Wrap.Make.type.20e: type = fn_type @Wrap.Make, @Wrap(%empty_tuple.type) [concrete] @@ -208,7 +209,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt // CHECK:STDOUT: %Wrap.ref.loc23: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] -// CHECK:STDOUT: %.loc23_21: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_21: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_22: type = converted %.loc23_21, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Wrap.loc23: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Wrap.1aa] // CHECK:STDOUT: %.loc23_23: %Wrap.Make.type.20e = specific_constant @Wrap.%Wrap.Make.decl, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Wrap.Make.de0] @@ -217,7 +218,7 @@ fn G() { // CHECK:STDOUT: %Wrap.Make.call.loc23: init %empty_tuple.type = call %Wrap.Make.specific_fn.loc23() // CHECK:STDOUT: assign %b.var, %Wrap.Make.call.loc23 // CHECK:STDOUT: %.loc23_11.1: type = splice_block %.loc23_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc23_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_11.3: type = converted %.loc23_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var diff --git a/toolchain/check/testdata/function/generic/template_param.carbon b/toolchain/check/testdata/function/generic/template_param.carbon index d756ac23d519..08d1958e0ece 100644 --- a/toolchain/check/testdata/function/generic/template_param.carbon +++ b/toolchain/check/testdata/function/generic/template_param.carbon @@ -36,6 +36,7 @@ fn G() { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -67,7 +68,7 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc8_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_7: type = converted %.loc8_6, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() diff --git a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon index 72d7fb1de00c..4576b29e032b 100644 --- a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon +++ b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon @@ -323,6 +323,7 @@ fn H(T:! type) { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.e2fb60.1 [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness.1d97ca.1: = lookup_impl_witness %.Self.e2fb60.1, @A, @A(%AA) [symbolic] // CHECK:STDOUT: %impl.elem0.99ca8d.1: type = impl_witness_access %A.lookup_impl_witness.1d97ca.1, element0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %A_where.type.67761a.1: type = facet_type <@A, @A(%AA) where %impl.elem0.99ca8d.1 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %BB.407: %A_where.type.67761a.1 = symbolic_binding BB, 1 [symbolic] // CHECK:STDOUT: %pattern_type.ea1: type = pattern_type %A_where.type.67761a.1 [symbolic] @@ -376,7 +377,7 @@ fn H(T:! type) { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type)] // CHECK:STDOUT: %.loc9_42.2: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc9_42.1: type = impl_witness_access constants.%A.lookup_impl_witness.1d97ca.1, element0 [symbolic = %impl.elem0.loc9_42.2 (constants.%impl.elem0.99ca8d.1)] -// CHECK:STDOUT: %.loc9_48.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_48.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_48.2: type = converted %.loc9_48.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc9_36.2: type = where_expr %.Self.3 [symbolic = %A_where.type (constants.%A_where.type.67761a.1)] { // CHECK:STDOUT: requirement_base_facet_type constants.%A.type.c1cde2.1 diff --git a/toolchain/check/testdata/generic/local.carbon b/toolchain/check/testdata/generic/local.carbon index bbbbb15934f3..c30a1af33950 100644 --- a/toolchain/check/testdata/generic/local.carbon +++ b/toolchain/check/testdata/generic/local.carbon @@ -77,6 +77,7 @@ class C(C:! type) { // CHECK:STDOUT: %pattern_type.7db: type = pattern_type %C.d45 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.x.c96 = struct_value (%int_1.5b8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -164,7 +165,7 @@ class C(C:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %C.d45 = var %v.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc8_26.1: %struct_type.x.c96 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc8_26.1: %struct_type.x.c96 = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc8_26.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/generic/template_dependence.carbon b/toolchain/check/testdata/generic/template_dependence.carbon index 8cf36d23af6e..5da707c9ae97 100644 --- a/toolchain/check/testdata/generic/template_dependence.carbon +++ b/toolchain/check/testdata/generic/template_dependence.carbon @@ -124,6 +124,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T, %U) [template] // CHECK:STDOUT: %tuple.type.d18: type = tuple_type (%T, %U) [template] // CHECK:STDOUT: %pattern_type.b8b: type = pattern_type %tuple.type.d18 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -144,7 +145,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5: type = name_ref T, %T.loc5_15.2 [template = %T.loc5_15.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc5: type = name_ref U, %U.loc5_25.2 [symbolic = %U.loc5_25.1 (constants.%U)] -// CHECK:STDOUT: %.loc5_43.1: %tuple.type.24b = tuple_literal (%T.ref.loc5, %U.ref.loc5) +// CHECK:STDOUT: %.loc5_43.1: %tuple.type.24b = tuple_literal (%T.ref.loc5, %U.ref.loc5) [template = %tuple (constants.%tuple)] // CHECK:STDOUT: %.loc5_43.2: type = converted %.loc5_43.1, constants.%tuple.type.d18 [template = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: // CHECK:STDOUT: %T.loc5_15.2: type = symbolic_binding T, 0, template [template = %T.loc5_15.1 (constants.%T)] @@ -158,6 +159,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: generic fn @F(%T.loc5_15.2: type, %U.loc5_25.2: type) { // CHECK:STDOUT: %T.loc5_15.1: type = symbolic_binding T, 0, template [template = %T.loc5_15.1 (constants.%T)] // CHECK:STDOUT: %U.loc5_25.1: type = symbolic_binding U, 1 [symbolic = %U.loc5_25.1 (constants.%U)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc5_15.1, %U.loc5_25.1) [template = %tuple (constants.%tuple)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc5_15.1, %U.loc5_25.1) [template = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [template = %pattern_type (constants.%pattern_type.b8b)] // CHECK:STDOUT: @@ -180,6 +182,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: specific @F(constants.%T, constants.%U) { // CHECK:STDOUT: %T.loc5_15.1 => constants.%T // CHECK:STDOUT: %U.loc5_25.1 => constants.%U +// CHECK:STDOUT: %tuple => constants.%tuple // CHECK:STDOUT: %tuple.type => constants.%tuple.type.d18 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b8b // CHECK:STDOUT: diff --git a/toolchain/check/testdata/global/basics.carbon b/toolchain/check/testdata/global/basics.carbon index b186d36b1d10..bf2126b54d8e 100644 --- a/toolchain/check/testdata/global/basics.carbon +++ b/toolchain/check/testdata/global/basics.carbon @@ -57,6 +57,7 @@ var a: A = Make(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -67,7 +68,7 @@ var a: A = Make(); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_struct_type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_struct_type = ref_binding a, %a.var [concrete = %a.var] @@ -77,8 +78,8 @@ var a: A = Make(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -88,7 +89,7 @@ var a: A = Make(); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_struct_type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_struct_type = ref_binding a, %a.var [concrete = %a.var] @@ -96,7 +97,7 @@ var a: A = Make(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_14.2: init %empty_struct_type = struct_init () to file.%a.var [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_1: init %empty_struct_type = converted %.loc4_14.1, %.loc4_14.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%a.var, %.loc4_1 @@ -107,6 +108,7 @@ var a: A = Make(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -119,7 +121,7 @@ var a: A = Make(); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_struct_type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_struct_type = ref_binding a, %a.var [concrete = %a.var] @@ -139,6 +141,7 @@ var a: A = Make(); // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %A [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -154,7 +157,7 @@ var a: A = Make(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_13.2: init %A = class_init (), file.%a.var [concrete = constants.%A.val] // CHECK:STDOUT: %.loc6_1: init %A = converted %.loc6_13.1, %.loc6_13.2 [concrete = constants.%A.val] // CHECK:STDOUT: assign file.%a.var, %.loc6_1 diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index 6ee527987f31..b05929c7f004 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -38,6 +38,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %pattern_type.a98: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.4f2: %tuple.type.985 = tuple_value (%int_0.5c6) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -144,7 +145,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %array_type = var %x.var_patt // CHECK:STDOUT: %int_0.loc16_27: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc16_29.1: %tuple.type.985 = tuple_literal (%int_0.loc16_27) +// CHECK:STDOUT: %.loc16_29.1: %tuple.type.985 = tuple_literal (%int_0.loc16_27) [concrete = constants.%tuple.4f2] // CHECK:STDOUT: %impl.elem0.loc16: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc16_29.1: = bound_method %int_0.loc16_27, %impl.elem0.loc16 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/if_expr/struct.carbon b/toolchain/check/testdata/if_expr/struct.carbon index 3ecb513431a7..e86939ac4c3c 100644 --- a/toolchain/check/testdata/if_expr/struct.carbon +++ b/toolchain/check/testdata/if_expr/struct.carbon @@ -40,6 +40,7 @@ fn F(cond: bool) { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -59,7 +60,7 @@ fn F(cond: bool) { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.ed5: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %struct_type.a.b.501, () [concrete] @@ -131,7 +132,7 @@ fn F(cond: bool) { // CHECK:STDOUT: %a.var: ref %struct_type.a.b.501 = var %a.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc18_46.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc18_46.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %impl.elem0.loc18_46.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc18_46.1: = bound_method %int_1, %impl.elem0.loc18_46.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc18_46.1: = specific_function %impl.elem0.loc18_46.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -148,8 +149,8 @@ fn F(cond: bool) { // CHECK:STDOUT: %.loc18_46.5: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_46.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_46.6: ref %i32 = struct_access %a.var, element1 // CHECK:STDOUT: %.loc18_46.7: init %i32 = initialize_from %.loc18_46.5 to %.loc18_46.6 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_46.8: init %struct_type.a.b.501 = struct_init (%.loc18_46.4, %.loc18_46.7) to %a.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc18_3: init %struct_type.a.b.501 = converted %.loc18_46.1, %.loc18_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc18_46.8: init %struct_type.a.b.501 = struct_init (%.loc18_46.4, %.loc18_46.7) to %a.var [concrete = constants.%struct.ed5] +// CHECK:STDOUT: %.loc18_3: init %struct_type.a.b.501 = converted %.loc18_46.1, %.loc18_46.8 [concrete = constants.%struct.ed5] // CHECK:STDOUT: assign %a.var, %.loc18_3 // CHECK:STDOUT: %.loc18_27: type = splice_block %struct_type.a.b [concrete = constants.%struct_type.a.b.501] { // CHECK:STDOUT: %int_32.loc18_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/impl/assoc_const_self.carbon b/toolchain/check/testdata/impl/assoc_const_self.carbon index 6d6d9e90d125..7922217af81c 100644 --- a/toolchain/check/testdata/impl/assoc_const_self.carbon +++ b/toolchain/check/testdata/impl/assoc_const_self.carbon @@ -110,12 +110,12 @@ fn CallF() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.1aa: %I.assoc_type = assoc_entity element0, @I.%V [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %require_complete.d2d: = require_complete_type %.Self.binding.as_type [symbolic_self] // CHECK:STDOUT: %impl.elem0: %.Self.binding.as_type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type.df2: type = facet_type <@I where %impl.elem0 = %empty_struct> [concrete] // CHECK:STDOUT: %I.impl_witness.0bd: = impl_witness file.%I.impl_witness_table.loc8 [concrete] // CHECK:STDOUT: %I.facet.c9b: %I.type = facet_value %empty_struct_type, (%I.impl_witness.0bd) [concrete] @@ -169,7 +169,7 @@ fn CallF() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -178,7 +178,7 @@ fn CallF() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %.Self.binding.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_26.2: %empty_struct_type = converted %.loc8_26.1, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%I_where.type.df2] { @@ -283,6 +283,7 @@ fn CallF() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.1aa: %I.assoc_type = assoc_entity element0, @I.%V [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] @@ -314,7 +315,7 @@ fn CallF() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -393,6 +394,7 @@ fn CallF() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.396: type = facet_type <@ImplicitAs, @ImplicitAs(%C)> [concrete] @@ -403,13 +405,13 @@ fn CallF() { // CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.type: type = fn_type @empty_tuple.type.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert: %empty_tuple.type.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.396 = facet_value %empty_tuple.type, (%ImplicitAs.impl_witness) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %require_complete.d2d: = require_complete_type %.Self.binding.as_type [symbolic_self] // CHECK:STDOUT: %impl.elem0: %.Self.binding.as_type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] @@ -436,7 +438,7 @@ fn CallF() { // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.ImplicitAs.impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] @@ -454,7 +456,7 @@ fn CallF() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %.Self.binding.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_25.2: %empty_tuple.type = converted %.loc18_25.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_13: type = where_expr %.Self [concrete = constants.%I_where.type] { @@ -506,7 +508,7 @@ fn CallF() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc11_21.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_21.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_21.3: type = converted %.loc11_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param @@ -535,7 +537,7 @@ fn CallF() { // CHECK:STDOUT: // CHECK:STDOUT: fn @empty_tuple.type.as.ImplicitAs.impl.Convert(%self.param: %empty_tuple.type) -> %return.param: %C { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc11_41.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_41.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc11_41.2: init %C = class_init (), %return [concrete = constants.%C.val] // CHECK:STDOUT: %.loc11_42: init %C = converted %.loc11_41.1, %.loc11_41.2 [concrete = constants.%C.val] // CHECK:STDOUT: return %.loc11_42 to %return @@ -579,6 +581,7 @@ fn CallF() { // CHECK:STDOUT: %I.assoc_type.44f: type = assoc_entity_type @I, @I(%N) [symbolic] // CHECK:STDOUT: %assoc0.8bd: %I.assoc_type.44f = assoc_entity element0, @I.%V [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] @@ -596,6 +599,7 @@ fn CallF() { // CHECK:STDOUT: %assoc0.63a: %I.assoc_type.247 = assoc_entity element0, @I.%V [concrete] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.687 [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.687, @I, @I(%int_-1) [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -632,7 +636,7 @@ fn CallF() { // CHECK:STDOUT: %N.loc4_13.2: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N.loc4_13.1 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @empty_struct_type.as..impl [concrete] {} { -// CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] @@ -649,7 +653,7 @@ fn CallF() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc15_24.2: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: = impl_witness_access constants.%I.lookup_impl_witness, element0 [concrete = ] -// CHECK:STDOUT: %.loc15_30: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_30: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_18: type = where_expr %.Self [concrete = ] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type.f11 // CHECK:STDOUT: requirement_rewrite %impl.elem0, @@ -743,6 +747,7 @@ fn CallF() { // CHECK:STDOUT: %.Self.3b7: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.420: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.420 [symbolic_self] @@ -750,7 +755,6 @@ fn CallF() { // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.420, @I [symbolic_self] // CHECK:STDOUT: %require_complete.d2d: = require_complete_type %.Self.binding.as_type [symbolic_self] // CHECK:STDOUT: %impl.elem0: %.Self.binding.as_type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct and TODO> [concrete] // CHECK:STDOUT: %T: %I_where.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.a47: type = pattern_type %I_where.type [concrete] @@ -785,7 +789,7 @@ fn CallF() { // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.3b7] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self.2: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.420] -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %.Self.ref.loc8_43: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self.420] @@ -798,7 +802,7 @@ fn CallF() { // CHECK:STDOUT: %.Self.as_type.loc8_54: type = facet_access_type %.Self.ref.loc8_54 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc8_54: type = converted %.Self.ref.loc8_54, %.Self.as_type.loc8_54 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %.Self.binding.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc8_60.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_60.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_60.2: %empty_struct_type = converted %.loc8_60.1, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_12.2: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { @@ -843,7 +847,7 @@ fn CallF() { // CHECK:STDOUT: fn @CallF() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc19: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index 79f9d94d611e..0c3a7309336f 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -229,6 +229,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %NonInstance1.F1: %NonInstance1.F1.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance1.assoc_type: type = assoc_entity_type @NonInstance1 [concrete] // CHECK:STDOUT: %assoc0: %NonInstance1.assoc_type = assoc_entity element0, @NonInstance1.%NonInstance1.F1.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance1.impl_witness: = impl_witness file.%NonInstance1.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1.type: type = fn_type @struct_type.a.as.NonInstance1.impl.F1 [concrete] @@ -246,7 +247,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: %NonInstance1.decl: type = interface_decl @NonInstance1 [concrete = constants.%NonInstance1.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.a.as.NonInstance1.impl [concrete] {} { -// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %NonInstance1.ref: type = name_ref NonInstance1, file.%NonInstance1.decl [concrete = constants.%NonInstance1.type] @@ -288,7 +289,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: // CHECK:STDOUT: fn @NonInstanceCall1() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc12_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_9.2: type = converted %.loc12_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %NonInstance1.ref: type = name_ref NonInstance1, file.%NonInstance1.decl [concrete = constants.%NonInstance1.type] @@ -314,6 +315,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %NonInstance2.F2: %NonInstance2.F2.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance2.assoc_type: type = assoc_entity_type @NonInstance2 [concrete] // CHECK:STDOUT: %assoc0.92e: %NonInstance2.assoc_type = assoc_entity element0, @NonInstance2.%NonInstance2.F2.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance2.impl_witness: = impl_witness file.%NonInstance2.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.b.as.NonInstance2.impl.F2.type: type = fn_type @struct_type.b.as.NonInstance2.impl.F2 [concrete] @@ -368,7 +370,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NonInstance2.decl: type = interface_decl @NonInstance2 [concrete = constants.%NonInstance2.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.b.as.NonInstance2.impl [concrete] {} { -// CHECK:STDOUT: %.loc9_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.2: type = converted %.loc9_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete = constants.%struct_type.b] // CHECK:STDOUT: %NonInstance2.ref: type = name_ref NonInstance2, file.%NonInstance2.decl [concrete = constants.%NonInstance2.type] @@ -381,7 +383,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %n.param: %struct_type.b = value_param call_param0 // CHECK:STDOUT: %.loc13_31: type = splice_block %struct_type.b [concrete = constants.%struct_type.b] { -// CHECK:STDOUT: %.loc13_30.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_30.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_30.2: type = converted %.loc13_30.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete = constants.%struct_type.b] // CHECK:STDOUT: } @@ -499,6 +501,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %NonInstance3.F3: %NonInstance3.F3.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance3.assoc_type: type = assoc_entity_type @NonInstance3 [concrete] // CHECK:STDOUT: %assoc0.2f5: %NonInstance3.assoc_type = assoc_entity element0, @NonInstance3.%NonInstance3.F3.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance3.impl_witness: = impl_witness file.%NonInstance3.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.c.as.NonInstance3.impl.F3.type: type = fn_type @struct_type.c.as.NonInstance3.impl.F3 [concrete] @@ -554,7 +557,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NonInstance3.decl: type = interface_decl @NonInstance3 [concrete = constants.%NonInstance3.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.c.as.NonInstance3.impl [concrete] {} { -// CHECK:STDOUT: %.loc9_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.2: type = converted %.loc9_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete = constants.%struct_type.c] // CHECK:STDOUT: %NonInstance3.ref: type = name_ref NonInstance3, file.%NonInstance3.decl [concrete = constants.%NonInstance3.type] @@ -567,7 +570,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %p.param: %ptr = value_param call_param0 // CHECK:STDOUT: %.loc13_39: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %.loc13_37.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_37.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_37.2: type = converted %.loc13_37.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete = constants.%struct_type.c] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.c [concrete = constants.%ptr] @@ -689,6 +692,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Instance1.G1: %Instance1.G1.type = struct_value () [concrete] // CHECK:STDOUT: %Instance1.assoc_type: type = assoc_entity_type @Instance1 [concrete] // CHECK:STDOUT: %assoc0: %Instance1.assoc_type = assoc_entity element0, @Instance1.%Instance1.G1.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete] // CHECK:STDOUT: %Instance1.impl_witness: = impl_witness file.%Instance1.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.515: type = pattern_type %struct_type.d [concrete] @@ -702,7 +706,6 @@ fn InstanceCallFail() { // CHECK:STDOUT: %pattern_type.8d6: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %InstanceCallIndirect.type: type = fn_type @InstanceCallIndirect [concrete] // CHECK:STDOUT: %InstanceCallIndirect: %InstanceCallIndirect.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.d = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -714,7 +717,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: %Instance1.decl: type = interface_decl @Instance1 [concrete = constants.%Instance1.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.d.as.Instance1.impl [concrete] {} { -// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete = constants.%struct_type.d] // CHECK:STDOUT: %Instance1.ref: type = name_ref Instance1, file.%Instance1.decl [concrete = constants.%Instance1.type] @@ -727,7 +730,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %n.param: %struct_type.d = value_param call_param0 // CHECK:STDOUT: %.loc11_27: type = splice_block %struct_type.d [concrete = constants.%struct_type.d] { -// CHECK:STDOUT: %.loc11_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_26.2: type = converted %.loc11_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete = constants.%struct_type.d] // CHECK:STDOUT: } @@ -739,7 +742,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %p.param: %ptr = value_param call_param0 // CHECK:STDOUT: %.loc15_36: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %.loc15_34.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_34.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_34.2: type = converted %.loc15_34.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete = constants.%struct_type.d] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.d [concrete = constants.%ptr] @@ -852,6 +855,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Instance2.G2: %Instance2.G2.type = struct_value () [concrete] // CHECK:STDOUT: %Instance2.assoc_type: type = assoc_entity_type @Instance2 [concrete] // CHECK:STDOUT: %assoc0: %Instance2.assoc_type = assoc_entity element0, @Instance2.%Instance2.G2.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete] // CHECK:STDOUT: %Instance2.impl_witness: = impl_witness file.%Instance2.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.efd: type = pattern_type %struct_type.e [concrete] @@ -869,7 +873,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: %Instance2.decl: type = interface_decl @Instance2 [concrete = constants.%Instance2.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.e.as.Instance2.impl [concrete] {} { -// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete = constants.%struct_type.e] // CHECK:STDOUT: %Instance2.ref: type = name_ref Instance2, file.%Instance2.decl [concrete = constants.%Instance2.type] @@ -933,7 +937,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: // CHECK:STDOUT: fn @InstanceCallFail() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc16_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_9.2: type = converted %.loc16_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete = constants.%struct_type.e] // CHECK:STDOUT: %Instance2.ref: type = name_ref Instance2, file.%Instance2.decl [concrete = constants.%Instance2.type] diff --git a/toolchain/check/testdata/impl/error_recovery.carbon b/toolchain/check/testdata/impl/error_recovery.carbon index 61b0353601d1..978752b81226 100644 --- a/toolchain/check/testdata/impl/error_recovery.carbon +++ b/toolchain/check/testdata/impl/error_recovery.carbon @@ -243,6 +243,7 @@ fn G() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Z.impl_witness.b07: = impl_witness file.%Z.impl_witness_table, @T.as.Z.impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %empty_tuple.type, (%Z.impl_witness.b07) [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%Z.facet) [concrete] @@ -251,7 +252,7 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc18_6: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_6: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value constants.%empty_tuple.type, (constants.%Z.impl_witness.b07) [concrete = constants.%Z.facet] // CHECK:STDOUT: %.loc18_7: %Z.type = converted %.loc18_6, %Z.facet [concrete = constants.%Z.facet] // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%Z.facet) [concrete = constants.%F.specific_fn] diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index c39c199f118e..d9848b4e0c1d 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -93,6 +93,7 @@ class X(U:! type) { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.x.c96 = struct_value (%int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -277,7 +278,7 @@ class X(U:! type) { // CHECK:STDOUT: fn @C.as.HasF.impl.F() -> %return.param: %Param { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc15_21.1: %struct_type.x.c96 = struct_literal (%int_2) +// CHECK:STDOUT: %.loc15_21.1: %struct_type.x.c96 = struct_literal (%int_2) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_21.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon index cf6b28aac75e..5cb9076de49b 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -70,6 +70,7 @@ fn F() { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -88,7 +89,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc9_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -119,6 +120,7 @@ fn F() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @F.%J.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -158,7 +160,7 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: impl_decl @empty_struct_type.as.J.impl [concrete] {} { -// CHECK:STDOUT: %.loc10_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_16.2: type = converted %.loc10_16.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } @@ -188,6 +190,7 @@ fn F() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Point.val: %Point = struct_value () [concrete] // CHECK:STDOUT: %.672: type = fn_type_with_self_type %Z.Zero.type, %Z.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -298,7 +301,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc25_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc25_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Point.ref: type = name_ref Point, file.%Point.decl [concrete = constants.%Point] // CHECK:STDOUT: %.loc25_5.2: ref %Point = temporary_storage // CHECK:STDOUT: %.loc25_5.3: init %Point = class_init (), %.loc25_5.2 [concrete = constants.%Point.val] diff --git a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon index 5a5e4d801dc1..fb1267dffec0 100644 --- a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon +++ b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon @@ -256,6 +256,7 @@ class X { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %.1d8: type = fn_type_with_self_type %Z.Zero.type, %Z.facet [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Point.val: %Point = struct_value () [concrete] // CHECK:STDOUT: %.142: type = fn_type_with_self_type %Z.Method.type, %Z.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -436,7 +437,7 @@ class X { // CHECK:STDOUT: %.loc28: %Z.type = converted %Point.ref.loc28, %Z.facet [concrete = constants.%Z.facet] // CHECK:STDOUT: %impl.elem0: %.1d8 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%Point.as.Z.impl.Zero] // CHECK:STDOUT: %Point.as.Z.impl.Zero.call: init %empty_tuple.type = call %impl.elem0() -// CHECK:STDOUT: %.loc29_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc29_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Point.ref.loc29: type = name_ref Point, file.%Point.decl [concrete = constants.%Point] // CHECK:STDOUT: %.loc29_5.2: ref %Point = temporary_storage // CHECK:STDOUT: %.loc29_5.3: init %Point = class_init (), %.loc29_5.2 [concrete = constants.%Point.val] diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon index b3038efad6d6..610eb0162982 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon @@ -31,6 +31,7 @@ impl () as I {} // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -40,7 +41,7 @@ impl () as I {} // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc24_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc24_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_7.2: type = converted %.loc24_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon index 4f990d735bcb..fdae72b816b5 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -347,6 +347,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %struct_type.x.y.c4d: type = struct_type {.x: %Self.binding.as_type.49d, .y: %i32} [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.d1f: %tuple.type.24b = tuple_value (%ptr.e7a, %struct_type.x.y.c4d) [symbolic] // CHECK:STDOUT: %tuple.type.82c: type = tuple_type (%ptr.e7a, %struct_type.x.y.c4d) [symbolic] // CHECK:STDOUT: %pattern_type.b78: type = pattern_type %tuple.type.82c [symbolic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] @@ -360,6 +361,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNested.impl_witness.eb9: = impl_witness @SelfNestedBadParam.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.4cd: type = ptr_type %SelfNestedBadParam [concrete] // CHECK:STDOUT: %struct_type.x.y.871: type = struct_type {.x: %i32, .y: %i32} [concrete] +// CHECK:STDOUT: %tuple.660: %tuple.type.24b = tuple_value (%ptr.4cd, %struct_type.x.y.871) [concrete] // CHECK:STDOUT: %tuple.type.a7d: type = tuple_type (%ptr.4cd, %struct_type.x.y.871) [concrete] // CHECK:STDOUT: %pattern_type.714: type = pattern_type %tuple.type.a7d [concrete] // CHECK:STDOUT: %array_type.a41: type = array_type %int_4, %SelfNestedBadParam [concrete] @@ -368,6 +370,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.72ff49.1: %SelfNestedBadParam.as.SelfNested.impl.F.type.56b7c1.1 = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.facet.182: %SelfNested.type = facet_value %SelfNestedBadParam, (%SelfNested.impl_witness.eb9) [concrete] // CHECK:STDOUT: %struct_type.x.y.a89: type = struct_type {.x: %SelfNestedBadParam, .y: %i32} [concrete] +// CHECK:STDOUT: %tuple.bce: %tuple.type.24b = tuple_value (%ptr.4cd, %struct_type.x.y.a89) [concrete] // CHECK:STDOUT: %tuple.type.9c9: type = tuple_type (%ptr.4cd, %struct_type.x.y.a89) [concrete] // CHECK:STDOUT: %pattern_type.a5c: type = pattern_type %tuple.type.9c9 [concrete] // CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.type.56b7c1.2: type = fn_type @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.2 [concrete] @@ -376,6 +379,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNested.impl_witness.c55: = impl_witness @SelfNestedBadReturnType.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.612: type = ptr_type %SelfNestedBadReturnType [concrete] // CHECK:STDOUT: %struct_type.x.y.ac5: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [concrete] +// CHECK:STDOUT: %tuple.034: %tuple.type.24b = tuple_value (%ptr.612, %struct_type.x.y.ac5) [concrete] // CHECK:STDOUT: %tuple.type.eb9: type = tuple_type (%ptr.612, %struct_type.x.y.ac5) [concrete] // CHECK:STDOUT: %pattern_type.23f: type = pattern_type %tuple.type.eb9 [concrete] // CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.054b04.1: type = fn_type @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.1 [concrete] @@ -521,7 +525,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.x.y.loc211_37.2: type = struct_type {.x: @SelfNested.F.%Self.binding.as_type (%Self.binding.as_type.49d), .y: %i32} [symbolic = %struct_type.x.y.loc211_37.1 (constants.%struct_type.x.y.c4d)] -// CHECK:STDOUT: %.loc211_38.2: %tuple.type.24b = tuple_literal (%ptr.loc211_16.2, %struct_type.x.y.loc211_37.2) +// CHECK:STDOUT: %.loc211_38.2: %tuple.type.24b = tuple_literal (%ptr.loc211_16.2, %struct_type.x.y.loc211_37.2) [symbolic = %tuple (constants.%tuple.d1f)] // CHECK:STDOUT: %.loc211_38.3: type = converted %.loc211_38.2, constants.%tuple.type.82c [symbolic = %tuple.type (constants.%tuple.type.82c)] // CHECK:STDOUT: } // CHECK:STDOUT: %x: @SelfNested.F.%tuple.type (%tuple.type.82c) = value_binding x, %x.param @@ -899,7 +903,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %int_32.loc223_49: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc223_49: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %i32, .y: %i32} [concrete = constants.%struct_type.x.y.871] -// CHECK:STDOUT: %.loc223_53.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc223_53.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) [concrete = constants.%tuple.660] // CHECK:STDOUT: %.loc223_53.3: type = converted %.loc223_53.2, constants.%tuple.type.a7d [concrete = constants.%tuple.type.a7d] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %tuple.type.a7d = value_binding x, %x.param @@ -942,7 +946,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [concrete = constants.%struct_type.x.y.ac5] -// CHECK:STDOUT: %.loc239_78.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc239_78.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) [concrete = constants.%tuple.034] // CHECK:STDOUT: %.loc239_78.3: type = converted %.loc239_78.2, constants.%tuple.type.eb9 [concrete = constants.%tuple.type.eb9] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %tuple.type.eb9 = value_binding x, %x.param @@ -1299,6 +1303,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.49d)] // CHECK:STDOUT: %ptr.loc211_16.1: type = ptr_type %Self.binding.as_type [symbolic = %ptr.loc211_16.1 (constants.%ptr.e7a)] // CHECK:STDOUT: %struct_type.x.y.loc211_37.1: type = struct_type {.x: @SelfNested.F.%Self.binding.as_type (%Self.binding.as_type.49d), .y: %i32} [symbolic = %struct_type.x.y.loc211_37.1 (constants.%struct_type.x.y.c4d)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%ptr.loc211_16.1, %struct_type.x.y.loc211_37.1) [symbolic = %tuple (constants.%tuple.d1f)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc211_16.1, %struct_type.x.y.loc211_37.1) [symbolic = %tuple.type (constants.%tuple.type.82c)] // CHECK:STDOUT: %pattern_type.loc211_8: type = pattern_type %tuple.type [symbolic = %pattern_type.loc211_8 (constants.%pattern_type.b78)] // CHECK:STDOUT: %array_type.loc211_57.1: type = array_type constants.%int_4, %Self.binding.as_type [symbolic = %array_type.loc211_57.1 (constants.%array_type.023)] @@ -1363,6 +1368,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.49d // CHECK:STDOUT: %ptr.loc211_16.1 => constants.%ptr.e7a // CHECK:STDOUT: %struct_type.x.y.loc211_37.1 => constants.%struct_type.x.y.c4d +// CHECK:STDOUT: %tuple => constants.%tuple.d1f // CHECK:STDOUT: %tuple.type => constants.%tuple.type.82c // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.b78 // CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.023 @@ -1374,6 +1380,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.binding.as_type => constants.%SelfNestedBadParam // CHECK:STDOUT: %ptr.loc211_16.1 => constants.%ptr.4cd // CHECK:STDOUT: %struct_type.x.y.loc211_37.1 => constants.%struct_type.x.y.a89 +// CHECK:STDOUT: %tuple => constants.%tuple.bce // CHECK:STDOUT: %tuple.type => constants.%tuple.type.9c9 // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.a5c // CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.a41 @@ -1385,6 +1392,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.binding.as_type => constants.%SelfNestedBadReturnType // CHECK:STDOUT: %ptr.loc211_16.1 => constants.%ptr.612 // CHECK:STDOUT: %struct_type.x.y.loc211_37.1 => constants.%struct_type.x.y.ac5 +// CHECK:STDOUT: %tuple => constants.%tuple.034 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.eb9 // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.23f // CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.126 diff --git a/toolchain/check/testdata/impl/fail_undefined_interface.carbon b/toolchain/check/testdata/impl/fail_undefined_interface.carbon index 3779f0bc8bce..b93ce2af5d23 100644 --- a/toolchain/check/testdata/impl/fail_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_undefined_interface.carbon @@ -80,6 +80,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -88,7 +89,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc12_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_7.2: type = converted %.loc12_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -217,6 +218,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %.Self, @J [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %J_where.type: type = facet_type <@J where .Self impls @Incomplete and %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -242,7 +244,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: %.Self.as_type.loc15_46: type = facet_access_type %.Self.ref.loc15_46 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc15_46: type = converted %.Self.ref.loc15_46, %.Self.as_type.loc15_46 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc15_52.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_52.2: type = converted %.loc15_52.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc15_13: type = where_expr %.Self [concrete = constants.%J_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%J.type diff --git a/toolchain/check/testdata/impl/forward_decls.carbon b/toolchain/check/testdata/impl/forward_decls.carbon index d628dbc6dbd7..56e5c4664ac3 100644 --- a/toolchain/check/testdata/impl/forward_decls.carbon +++ b/toolchain/check/testdata/impl/forward_decls.carbon @@ -284,6 +284,7 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: } @@ -303,7 +304,7 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -311,7 +312,7 @@ interface I { // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -337,6 +338,7 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %I.G.type: type = fn_type @I.G [concrete] @@ -363,7 +365,7 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -371,7 +373,7 @@ interface I { // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc9_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_7.2: type = converted %.loc9_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc9: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -416,6 +418,7 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.8a6: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] @@ -451,7 +454,7 @@ interface I { // CHECK:STDOUT: %.loc4_14.1: type = value_of_initializer @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc4 [concrete = constants.%I.type] // CHECK:STDOUT: %.loc4_14.2: type = converted @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc4, %.loc4_14.1 [concrete = constants.%I.type] // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4_12: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: %I.ref.loc4_16: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] @@ -465,7 +468,7 @@ interface I { // CHECK:STDOUT: %.loc7_14.1: type = value_of_initializer @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc7 [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_14.2: type = converted @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc7, %.loc7_14.1 [concrete = constants.%I.type] // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc7_12: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: %I.ref.loc7_16: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] @@ -498,11 +501,13 @@ interface I { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } @@ -522,7 +527,7 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc6_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self.2: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -531,7 +536,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc6_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -542,7 +547,7 @@ interface I { // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc8: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self.1: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -551,7 +556,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_26.2: type = converted %.loc8_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc8_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -602,11 +607,11 @@ interface I { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -635,7 +640,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -668,7 +673,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -710,7 +715,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc9: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -735,11 +740,11 @@ interface I { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -768,7 +773,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -803,7 +808,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -845,7 +850,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc9: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -868,6 +873,7 @@ interface I { // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -946,7 +952,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc13: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1362,6 +1368,7 @@ interface I { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.8a6: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] @@ -1400,7 +1407,7 @@ interface I { // CHECK:STDOUT: %.loc10_14.1: type = value_of_initializer @empty_struct_type.as..impl.%type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type] // CHECK:STDOUT: %.loc10_14.2: type = converted @empty_struct_type.as..impl.%type.as.BitAndWith.impl.Op.call, %.loc10_14.1 [concrete = constants.%facet_type] // CHECK:STDOUT: impl_decl @empty_struct_type.as..impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl.loc4 [concrete = constants.%J.type] @@ -1450,6 +1457,7 @@ interface I { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } @@ -1479,7 +1487,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc9: type = facet_access_type %.Self.ref.loc9 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc9_19: type = converted %.Self.ref.loc9, %.Self.as_type.loc9 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc9_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_25.2: type = converted %.loc9_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc9_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -1498,7 +1506,7 @@ interface I { // CHECK:STDOUT: %.Self.as_type.loc18: type = facet_access_type %.Self.ref.loc18 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref.loc18, %.Self.as_type.loc18 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc18: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_25.2: type = converted %.loc18_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc18_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type diff --git a/toolchain/check/testdata/impl/generic_redeclaration.carbon b/toolchain/check/testdata/impl/generic_redeclaration.carbon index 5e67e730ad02..4f103b99cf16 100644 --- a/toolchain/check/testdata/impl/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/generic_redeclaration.carbon @@ -538,8 +538,8 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %I.impl_witness.f6038c.1: = impl_witness file.%I.impl_witness_table.loc9 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (type, type) [concrete] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C, %C) [concrete] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %I.impl_witness.f6038c.2: = impl_witness file.%I.impl_witness_table.loc17 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -568,7 +568,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: impl_decl @C.as.I.impl.7de31e.2 [concrete] {} { // CHECK:STDOUT: %C.ref.loc17_7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc17_10: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc17_11.1: %tuple.type = tuple_literal (%C.ref.loc17_7, %C.ref.loc17_10) +// CHECK:STDOUT: %.loc17_11.1: %tuple.type = tuple_literal (%C.ref.loc17_7, %C.ref.loc17_10) [concrete = constants.%tuple] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C.ref.loc17_7, %C.ref.loc17_10) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc17_11.2: %tuple.type = converted %.loc17_11.1, %tuple [concrete = constants.%tuple] @@ -616,12 +616,12 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %T.as.I.impl.A: %T.as.I.impl.A.type = struct_value () [symbolic] // CHECK:STDOUT: %T.as.I.impl.B.type: type = fn_type @T.as.I.impl.B, @T.as.I.impl.381c92.2(%T) [symbolic] // CHECK:STDOUT: %T.as.I.impl.B: %T.as.I.impl.B.type = struct_value () [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %T.as.I.impl.C.type: type = fn_type @T.as.I.impl.C, @T.as.I.impl.381c92.2(%T) [symbolic] // CHECK:STDOUT: %T.as.I.impl.C: %T.as.I.impl.C.type = struct_value () [symbolic] // CHECK:STDOUT: %T.as.I.impl.D.type: type = fn_type @T.as.I.impl.D, @T.as.I.impl.381c92.2(%T) [symbolic] // CHECK:STDOUT: %T.as.I.impl.D: %T.as.I.impl.D.type = struct_value () [symbolic] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %T.as.I.impl.C.specific_fn: = specific_function %T.as.I.impl.C, @T.as.I.impl.C(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -703,7 +703,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc19_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_14.2: type = converted %.loc19_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -712,7 +712,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc20_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc20_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc20_14.2: type = converted %.loc20_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -749,7 +749,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_26.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_27: init %empty_tuple.type = converted %.loc19_26.1, %.loc19_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc19_27 to %return diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index 6fc8a2d408b0..fd6d159896d4 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -43,6 +43,7 @@ class C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -122,7 +123,7 @@ class C { // CHECK:STDOUT: %c.var_patt: %pattern_type.c48 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt -// CHECK:STDOUT: %.loc23_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc23_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc23_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc23_7: init %C = converted %.loc23_19.1, %.loc23_19.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign %c.var, %.loc23_7 diff --git a/toolchain/check/testdata/impl/impl_assoc_const.carbon b/toolchain/check/testdata/impl/impl_assoc_const.carbon index 402a5a21974d..39ade144b7f3 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const.carbon @@ -404,20 +404,26 @@ fn G() { // CHECK:STDOUT: %L.assoc_type: type = assoc_entity_type @L [concrete] // CHECK:STDOUT: %assoc0: %L.assoc_type = assoc_entity element0, @L.%W [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %L.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %L.lookup_impl_witness: = lookup_impl_witness %.Self, @L [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %L.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.e5a: type = tuple_type (%empty_struct_type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.b36: %tuple.type.e5a = tuple_value (%empty_struct, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %tuple.type.d7e: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.8ed: %tuple.type.d7e = tuple_value (%empty_struct, %empty_struct, %empty_tuple) [concrete] // CHECK:STDOUT: %tuple.type.bd8: type = tuple_type (%empty_struct_type, %empty_tuple.type, %empty_struct_type) [concrete] +// CHECK:STDOUT: %tuple.d90: %tuple.type.bd8 = tuple_value (%empty_struct, %empty_tuple, %empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: impl_decl @empty_tuple.type.as..impl [concrete] {} { -// CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_7.2: type = converted %.loc13_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %L.ref: type = name_ref L, file.%L.decl [concrete = constants.%L.type] // CHECK:STDOUT: @@ -426,13 +432,13 @@ fn G() { // CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc13_20: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc13_27: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_31: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_35: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_36.1: %tuple.type.2d5 = tuple_literal (%.loc13_27, %.loc13_31, %.loc13_35) -// CHECK:STDOUT: %.loc13_36.2: type = converted %.loc13_27, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc13_36.3: type = converted %.loc13_31, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc13_36.4: type = converted %.loc13_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_27: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_31: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_36.1: %tuple.type.2d5 = tuple_literal (%.loc13_27, %.loc13_31, %.loc13_35) [concrete = constants.%tuple.7e4] +// CHECK:STDOUT: %.loc13_36.2: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_36.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_36.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_36.5: type = converted %.loc13_36.1, constants.%tuple.type.2d5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: %.Self.ref.loc13_42: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %W.ref.loc13_42: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] @@ -440,13 +446,13 @@ fn G() { // CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc13_42: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %impl.elem0.subst.loc13_42: type = impl_witness_access_substituted %impl.elem0.loc13_42, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] -// CHECK:STDOUT: %.loc13_49: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_53: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_57: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_58.1: %tuple.type.e5a = tuple_literal (%.loc13_49, %.loc13_53, %.loc13_57) -// CHECK:STDOUT: %.loc13_58.2: type = converted %.loc13_49, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc13_58.3: type = converted %.loc13_53, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc13_58.4: type = converted %.loc13_57, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_49: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_53: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_57: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_58.1: %tuple.type.e5a = tuple_literal (%.loc13_49, %.loc13_53, %.loc13_57) [concrete = constants.%tuple.b36] +// CHECK:STDOUT: %.loc13_58.2: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_58.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_58.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_58.5: type = converted %.loc13_58.1, constants.%tuple.type.e5a [concrete = constants.%tuple.type.e5a] // CHECK:STDOUT: %.Self.ref.loc13_64: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %W.ref.loc13_64: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] @@ -454,13 +460,13 @@ fn G() { // CHECK:STDOUT: %.loc13_64: type = converted %.Self.ref.loc13_64, %.Self.as_type.loc13_64 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc13_64: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %impl.elem0.subst.loc13_64: type = impl_witness_access_substituted %impl.elem0.loc13_64, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] -// CHECK:STDOUT: %.loc13_71: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_75: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_79: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_80.1: %tuple.type.d7e = tuple_literal (%.loc13_71, %.loc13_75, %.loc13_79) -// CHECK:STDOUT: %.loc13_80.2: type = converted %.loc13_71, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc13_80.3: type = converted %.loc13_75, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc13_80.4: type = converted %.loc13_79, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_71: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_75: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_79: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_80.1: %tuple.type.d7e = tuple_literal (%.loc13_71, %.loc13_75, %.loc13_79) [concrete = constants.%tuple.8ed] +// CHECK:STDOUT: %.loc13_80.2: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_80.3: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_80.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_80.5: type = converted %.loc13_80.1, constants.%tuple.type.d7e [concrete = constants.%tuple.type.d7e] // CHECK:STDOUT: %.Self.ref.loc13_86: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %W.ref.loc13_86: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] @@ -468,13 +474,13 @@ fn G() { // CHECK:STDOUT: %.loc13_86: type = converted %.Self.ref.loc13_86, %.Self.as_type.loc13_86 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc13_86: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %impl.elem0.subst.loc13_86: type = impl_witness_access_substituted %impl.elem0.loc13_86, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] -// CHECK:STDOUT: %.loc13_93: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_97: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_101: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_102.1: %tuple.type.bd8 = tuple_literal (%.loc13_93, %.loc13_97, %.loc13_101) -// CHECK:STDOUT: %.loc13_102.2: type = converted %.loc13_93, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc13_102.3: type = converted %.loc13_97, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc13_102.4: type = converted %.loc13_101, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_93: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_97: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_101: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_102.1: %tuple.type.bd8 = tuple_literal (%.loc13_93, %.loc13_97, %.loc13_101) [concrete = constants.%tuple.d90] +// CHECK:STDOUT: %.loc13_102.2: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_102.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc13_102.4: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_102.5: type = converted %.loc13_102.1, constants.%tuple.type.bd8 [concrete = constants.%tuple.type.bd8] // CHECK:STDOUT: %.loc13_14: type = where_expr %.Self [concrete = ] { // CHECK:STDOUT: requirement_base_facet_type constants.%L.type @@ -500,6 +506,7 @@ fn G() { // CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%Y [concrete] // CHECK:STDOUT: %assoc2: %M.assoc_type = assoc_entity element2, @M.%Z [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %M.lookup_impl_witness: = lookup_impl_witness %.Self, @M [symbolic_self] @@ -510,7 +517,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: impl_decl @empty_tuple.type.as..impl [concrete] {} { -// CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_7.2: type = converted %.loc13_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] // CHECK:STDOUT: @@ -540,7 +547,7 @@ fn G() { // CHECK:STDOUT: %.Self.as_type.loc13_44: type = facet_access_type %.Self.ref.loc13_44 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc13_44: type = converted %.Self.ref.loc13_44, %.Self.as_type.loc13_44 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%M.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2] -// CHECK:STDOUT: %.loc13_50.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_50.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_50.2: type = converted %.loc13_50.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_14: type = where_expr %.Self [concrete = ] { // CHECK:STDOUT: requirement_base_facet_type constants.%M.type diff --git a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon index a72d291b86a2..74367c606390 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon @@ -48,6 +48,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %struct_type.a.b.fe2: type = struct_type {.a: bool, .b: %tuple.type.d07} [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.e7f: %I.assoc_type = assoc_entity element0, @I.%X [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self.420: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.420 [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.420, @I [symbolic_self] @@ -56,7 +57,9 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %struct_type.a.b.aa4: type = struct_type {.a: bool, .b: %tuple.type.f94} [concrete] +// CHECK:STDOUT: %struct.e57: %struct_type.a.b.aa4 = struct_value (%true, %tuple.ad8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -76,8 +79,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.fe2 = struct_value (%true, %tuple) [concrete] +// CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.682: %struct_type.a.b.fe2 = struct_value (%true, %tuple.21c) [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %SubWith.type.378: type = generic_interface_type @SubWith [concrete] @@ -101,7 +104,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.DivWith.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op: %Core.IntLiteral.as.DivWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.bound: = bound_method %int_4, %Core.IntLiteral.as.DivWith.impl.Op [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.8b1 = %struct> [concrete] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.8b1 = %struct.682> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -138,7 +141,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.420] @@ -150,8 +153,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc6_46: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc6_47.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2.loc6_46) -// CHECK:STDOUT: %.loc6_48.1: %struct_type.a.b.aa4 = struct_literal (%true, %.loc6_47.1) +// CHECK:STDOUT: %.loc6_47.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2.loc6_46) [concrete = constants.%tuple.ad8] +// CHECK:STDOUT: %.loc6_48.1: %struct_type.a.b.aa4 = struct_literal (%true, %.loc6_47.1) [concrete = constants.%struct.e57] // CHECK:STDOUT: %impl.elem0.loc6_47.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc6_47.1: = bound_method %int_1, %impl.elem0.loc6_47.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc6_47.1: = specific_function %impl.elem0.loc6_47.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -166,16 +169,16 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_47.2: init %i32 = call %bound_method.loc6_47.4(%int_2.loc6_46) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_47.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_47.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_47.5: %i32 = converted %int_2.loc6_46, %.loc6_47.4 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %tuple.loc6_47: %tuple.type.d07 = tuple_value (%.loc6_47.3, %.loc6_47.5) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc6_48.2: %tuple.type.d07 = converted %.loc6_47.1, %tuple.loc6_47 [concrete = constants.%tuple] -// CHECK:STDOUT: %struct.loc6_48: %struct_type.a.b.fe2 = struct_value (%true, %.loc6_48.2) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc6_48.3: %struct_type.a.b.fe2 = converted %.loc6_48.1, %struct.loc6_48 [concrete = constants.%struct] +// CHECK:STDOUT: %tuple.loc6_47: %tuple.type.d07 = tuple_value (%.loc6_47.3, %.loc6_47.5) [concrete = constants.%tuple.21c] +// CHECK:STDOUT: %.loc6_48.2: %tuple.type.d07 = converted %.loc6_47.1, %tuple.loc6_47 [concrete = constants.%tuple.21c] +// CHECK:STDOUT: %struct.loc6_48: %struct_type.a.b.fe2 = struct_value (%true, %.loc6_48.2) [concrete = constants.%struct.682] +// CHECK:STDOUT: %.loc6_48.3: %struct_type.a.b.fe2 = converted %.loc6_48.1, %struct.loc6_48 [concrete = constants.%struct.682] // CHECK:STDOUT: %.Self.ref.loc6_54: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.420] // CHECK:STDOUT: %X.ref.loc6_54: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.e7f] // CHECK:STDOUT: %.Self.as_type.loc6_54: type = facet_access_type %.Self.ref.loc6_54 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc6_54: type = converted %.Self.ref.loc6_54, %.Self.as_type.loc6_54 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc6_54: %struct_type.a.b.fe2 = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.8b1] -// CHECK:STDOUT: %impl.elem0.subst: %struct_type.a.b.fe2 = impl_witness_access_substituted %impl.elem0.loc6_54, %.loc6_48.3 [concrete = constants.%struct] +// CHECK:STDOUT: %impl.elem0.subst: %struct_type.a.b.fe2 = impl_witness_access_substituted %impl.elem0.loc6_54, %.loc6_48.3 [concrete = constants.%struct.682] // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] // CHECK:STDOUT: %.loc6_65: bool = not %false [concrete = constants.%true] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] @@ -188,8 +191,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %impl.elem1.loc6_91: %.888 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op] // CHECK:STDOUT: %bound_method.loc6_91: = bound_method %int_4, %impl.elem1.loc6_91 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_91(%int_4, %int_2.loc6_93) [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc6_94.1: %tuple.type.f94 = tuple_literal (%Core.IntLiteral.as.SubWith.impl.Op.call, %Core.IntLiteral.as.DivWith.impl.Op.call) -// CHECK:STDOUT: %.loc6_95.1: %struct_type.a.b.aa4 = struct_literal (%.loc6_65, %.loc6_94.1) +// CHECK:STDOUT: %.loc6_94.1: %tuple.type.f94 = tuple_literal (%Core.IntLiteral.as.SubWith.impl.Op.call, %Core.IntLiteral.as.DivWith.impl.Op.call) [concrete = constants.%tuple.ad8] +// CHECK:STDOUT: %.loc6_95.1: %struct_type.a.b.aa4 = struct_literal (%.loc6_65, %.loc6_94.1) [concrete = constants.%struct.e57] // CHECK:STDOUT: %impl.elem0.loc6_94.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc6_94.1: = bound_method %Core.IntLiteral.as.SubWith.impl.Op.call, %impl.elem0.loc6_94.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc6_94.1: = specific_function %impl.elem0.loc6_94.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -208,10 +211,10 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_94.2: init %i32 = call %bound_method.loc6_94.4(%.loc6_91.2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_94.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_94.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_94.5: %i32 = converted %Core.IntLiteral.as.DivWith.impl.Op.call, %.loc6_94.4 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %tuple.loc6_94: %tuple.type.d07 = tuple_value (%.loc6_94.3, %.loc6_94.5) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc6_95.2: %tuple.type.d07 = converted %.loc6_94.1, %tuple.loc6_94 [concrete = constants.%tuple] -// CHECK:STDOUT: %struct.loc6_95: %struct_type.a.b.fe2 = struct_value (%.loc6_65, %.loc6_95.2) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc6_95.3: %struct_type.a.b.fe2 = converted %.loc6_95.1, %struct.loc6_95 [concrete = constants.%struct] +// CHECK:STDOUT: %tuple.loc6_94: %tuple.type.d07 = tuple_value (%.loc6_94.3, %.loc6_94.5) [concrete = constants.%tuple.21c] +// CHECK:STDOUT: %.loc6_95.2: %tuple.type.d07 = converted %.loc6_94.1, %tuple.loc6_94 [concrete = constants.%tuple.21c] +// CHECK:STDOUT: %struct.loc6_95: %struct_type.a.b.fe2 = struct_value (%.loc6_65, %.loc6_95.2) [concrete = constants.%struct.682] +// CHECK:STDOUT: %.loc6_95.3: %struct_type.a.b.fe2 = converted %.loc6_95.1, %struct.loc6_95 [concrete = constants.%struct.682] // CHECK:STDOUT: %.loc6_14: type = where_expr %.Self [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_20, %.loc6_48.3 @@ -220,7 +223,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: } // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.b.fe2 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct] +// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.b.fe2 = impl_witness_assoc_constant constants.%struct.682 [concrete = constants.%struct.682] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -266,6 +269,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %struct_type.a.b.fe2: type = struct_type {.a: bool, .b: %tuple.type.d07} [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.e7f: %I.assoc_type = assoc_entity element0, @I.%X [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] @@ -274,7 +278,9 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %struct_type.a.b.aa4: type = struct_type {.a: bool, .b: %tuple.type.f94} [concrete] +// CHECK:STDOUT: %struct.e57: %struct_type.a.b.aa4 = struct_value (%true, %tuple.ad8) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -299,6 +305,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] +// CHECK:STDOUT: %tuple.302: %tuple.type.f94 = tuple_value (%int_3.1ba, %int_4.0c1) [concrete] +// CHECK:STDOUT: %struct.1ec: %struct_type.a.b.aa4 = struct_value (%false, %tuple.302) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.def: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] @@ -332,7 +340,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as..impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -344,8 +352,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc10_47.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) -// CHECK:STDOUT: %.loc10_48.1: %struct_type.a.b.aa4 = struct_literal (%true, %.loc10_47.1) +// CHECK:STDOUT: %.loc10_47.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) [concrete = constants.%tuple.ad8] +// CHECK:STDOUT: %.loc10_48.1: %struct_type.a.b.aa4 = struct_literal (%true, %.loc10_47.1) [concrete = constants.%struct.e57] // CHECK:STDOUT: %impl.elem0.loc10_47.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc10_47.1: = bound_method %int_1, %impl.elem0.loc10_47.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc10_47.1: = specific_function %impl.elem0.loc10_47.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -373,8 +381,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc10_82.1: %tuple.type.f94 = tuple_literal (%int_3, %int_4) -// CHECK:STDOUT: %.loc10_83.1: %struct_type.a.b.aa4 = struct_literal (%false, %.loc10_82.1) +// CHECK:STDOUT: %.loc10_82.1: %tuple.type.f94 = tuple_literal (%int_3, %int_4) [concrete = constants.%tuple.302] +// CHECK:STDOUT: %.loc10_83.1: %struct_type.a.b.aa4 = struct_literal (%false, %.loc10_82.1) [concrete = constants.%struct.1ec] // CHECK:STDOUT: %impl.elem0.loc10_82.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc10_82.1: = bound_method %int_3, %impl.elem0.loc10_82.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d] // CHECK:STDOUT: %specific_fn.loc10_82.1: = specific_function %impl.elem0.loc10_82.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/impl/impl_thunk.carbon b/toolchain/check/testdata/impl/impl_thunk.carbon index 64c5c6f56e6e..102238ad1f90 100644 --- a/toolchain/check/testdata/impl/impl_thunk.carbon +++ b/toolchain/check/testdata/impl/impl_thunk.carbon @@ -345,7 +345,9 @@ impl () as I({}) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a.b.391: type = struct_type {.a: %empty_tuple.type, .b: %empty_struct_type} [concrete] // CHECK:STDOUT: %struct_type.c.d.15a: type = struct_type {.c: %empty_tuple.type, .d: %empty_struct_type} [concrete] // CHECK:STDOUT: %struct_type.b.a.40c: type = struct_type {.b: %empty_struct_type, .a: %empty_tuple.type} [concrete] @@ -356,8 +358,6 @@ impl () as I({}) { // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.f1aebb.1: %empty_tuple.type.as.I.impl.F.type.e6fdf8.1 = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.e6fdf8.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_48.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.f1aebb.2: %empty_tuple.type.as.I.impl.F.type.e6fdf8.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.c.d.15a = struct_value (%empty_tuple, %empty_struct) [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %struct_type.d.c.b36, () [concrete] @@ -376,16 +376,16 @@ impl () as I({}) { // CHECK:STDOUT: %return.patt: %pattern_type.844 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.844 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10_38.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_38.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_38.2: type = converted %.loc10_38.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc10_46.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_46.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_46.2: type = converted %.loc10_46.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.d.c: type = struct_type {.d: %empty_struct_type, .c: %empty_tuple.type} [concrete = constants.%struct_type.d.c.b36] // CHECK:STDOUT: %y.param: %struct_type.b.a.40c = value_param call_param0 // CHECK:STDOUT: %.loc10_26: type = splice_block %struct_type.b.a [concrete = constants.%struct_type.b.a.40c] { -// CHECK:STDOUT: %.loc10_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_17.2: type = converted %.loc10_17.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc10_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_25.2: type = converted %.loc10_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.b.a: type = struct_type {.b: %empty_struct_type, .a: %empty_tuple.type} [concrete = constants.%struct_type.b.a.40c] // CHECK:STDOUT: } @@ -1082,6 +1082,7 @@ impl () as I({}) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %U.417: %Copy.type = symbolic_binding U, 0 [symbolic] @@ -1134,7 +1135,7 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_42: type = converted %U.ref.loc10_42, %U.as_type.loc10_42 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.225)] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc10_15.1: type = splice_block %.loc10_15.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_15.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_15.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_15.3: type = converted %.loc10_15.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param @@ -1245,6 +1246,7 @@ impl () as I({}) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.b.a.1b0: type = struct_type {.b: %empty_struct_type, .a: %empty_struct_type} [concrete] // CHECK:STDOUT: %pattern_type.914: type = pattern_type %struct_type.b.a.1b0 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.109800.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.1 [concrete] @@ -1252,7 +1254,6 @@ impl () as I({}) { // CHECK:STDOUT: %struct_type.a.b.f95: type = struct_type {.a: %empty_struct_type, .b: %empty_struct_type} [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.109800.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.3e8bab.2: %empty_tuple.type.as.I.impl.F.type.109800.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.f95 = struct_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %struct_type.b.a.1b0, () [concrete] @@ -1269,9 +1270,9 @@ impl () as I({}) { // CHECK:STDOUT: %return.patt: %pattern_type.914 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.914 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_19.2: type = converted %.loc10_19.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc10_27.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_27.2: type = converted %.loc10_27.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.b.a: type = struct_type {.b: %empty_struct_type, .a: %empty_struct_type} [concrete = constants.%struct_type.b.a.1b0] // CHECK:STDOUT: %return.param: ref %struct_type.b.a.1b0 = out_param call_param0 diff --git a/toolchain/check/testdata/impl/import_compound.carbon b/toolchain/check/testdata/impl/import_compound.carbon index 06afaf6eb01a..e2f89c700e14 100644 --- a/toolchain/check/testdata/impl/import_compound.carbon +++ b/toolchain/check/testdata/impl/import_compound.carbon @@ -108,6 +108,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %NonInstance.F: %NonInstance.F.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance.assoc_type: type = assoc_entity_type @NonInstance [concrete] // CHECK:STDOUT: %assoc0.525: %NonInstance.assoc_type = assoc_entity element0, @NonInstance.%NonInstance.F.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance.impl_witness: = impl_witness file.%NonInstance.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F.type: type = fn_type @struct_type.i.as.NonInstance.impl.F [concrete] @@ -144,7 +145,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NonInstance.decl: type = interface_decl @NonInstance [concrete = constants.%NonInstance.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.i.as.NonInstance.impl [concrete] {} { -// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %NonInstance.ref: type = name_ref NonInstance, file.%NonInstance.decl [concrete = constants.%NonInstance.type] @@ -153,7 +154,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %NonInstance.impl_witness: = impl_witness %NonInstance.impl_witness_table [concrete = constants.%NonInstance.impl_witness] // CHECK:STDOUT: %Instance.decl: type = interface_decl @Instance [concrete = constants.%Instance.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.i.as.Instance.impl [concrete] {} { -// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %Instance.ref: type = name_ref Instance, file.%Instance.decl [concrete = constants.%Instance.type] @@ -266,6 +267,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %NonInstanceCallImport.type: type = fn_type @NonInstanceCallImport [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %NonInstanceCallImport: %NonInstanceCallImport.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance.type: type = facet_type <@NonInstance> [concrete] // CHECK:STDOUT: %Self: %NonInstance.type = symbolic_binding Self, 0 [symbolic] @@ -327,7 +329,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: // CHECK:STDOUT: fn @NonInstanceCallImport() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %NonInstance.ref: type = name_ref NonInstance, imports.%Main.NonInstance [concrete = constants.%NonInstance.type] @@ -351,6 +353,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.9b2: type = pattern_type %struct_type.i [concrete] // CHECK:STDOUT: %NonInstanceCallImportFail.type: type = fn_type @NonInstanceCallImportFail [concrete] @@ -396,7 +399,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %n.param: %struct_type.i = value_param call_param0 // CHECK:STDOUT: %.loc5_40: type = splice_block %struct_type.i [concrete = constants.%struct_type.i] { -// CHECK:STDOUT: %.loc5_39.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_39.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_39.2: type = converted %.loc5_39.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: } @@ -432,6 +435,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.i [concrete] // CHECK:STDOUT: %pattern_type.72c: type = pattern_type %ptr [concrete] @@ -478,7 +482,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %p.param: %ptr = value_param call_param0 // CHECK:STDOUT: %.loc5_45: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %.loc5_43.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_43.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_43.2: type = converted %.loc5_43.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.i [concrete = constants.%ptr] @@ -516,6 +520,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.9b2: type = pattern_type %struct_type.i [concrete] // CHECK:STDOUT: %InstanceCallImport.type: type = fn_type @InstanceCallImport [concrete] @@ -537,7 +542,6 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %pattern_type.72c: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %InstanceCallIndirectImport.type: type = fn_type @InstanceCallIndirectImport [concrete] // CHECK:STDOUT: %InstanceCallIndirectImport: %InstanceCallIndirectImport.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.i = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -576,7 +580,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %n.param: %struct_type.i = value_param call_param0 // CHECK:STDOUT: %.loc5_33: type = splice_block %struct_type.i [concrete = constants.%struct_type.i] { -// CHECK:STDOUT: %.loc5_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_32.2: type = converted %.loc5_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: } @@ -588,7 +592,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: } { // CHECK:STDOUT: %p.param: %ptr = value_param call_param0 // CHECK:STDOUT: %.loc9_42: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %.loc9_40.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_40.2: type = converted %.loc9_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.i [concrete = constants.%ptr] @@ -661,6 +665,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %InstanceCallImportFail.type: type = fn_type @InstanceCallImportFail [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %InstanceCallImportFail: %InstanceCallImportFail.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %Instance.type: type = facet_type <@Instance> [concrete] // CHECK:STDOUT: %Self: %Instance.type = symbolic_binding Self, 0 [symbolic] @@ -717,7 +722,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: // CHECK:STDOUT: fn @InstanceCallImportFail() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.2: type = converted %.loc10_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %Instance.ref: type = name_ref Instance, imports.%Main.Instance [concrete = constants.%Instance.type] diff --git a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon index 4d6d40bc2195..0811dcf64b25 100644 --- a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon +++ b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon @@ -328,6 +328,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } @@ -362,7 +363,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc5_14: type = where_expr %.Self [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -418,6 +419,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } @@ -452,7 +454,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc5: type = facet_access_type %.Self.ref.loc5 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref.loc5, %.Self.as_type.loc5 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc5: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc5_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -471,7 +473,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -525,6 +527,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness.1f0: = impl_witness file.%I.impl_witness_table.loc10 [concrete] // CHECK:STDOUT: } @@ -565,7 +568,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -624,8 +627,10 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type.a9b: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness.36c: = impl_witness file.%I.impl_witness_table.loc9 [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type.08a: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I.impl_witness.9f1: = impl_witness file.%I.impl_witness_table.loc10 [concrete] // CHECK:STDOUT: } @@ -660,7 +665,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc9_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_26.2: type = converted %.loc9_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc9_14: type = where_expr %.Self [concrete = constants.%I_where.type.a9b] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -679,7 +684,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc10_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = constants.%I_where.type.08a] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -739,6 +744,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I3.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %assoc1: %I3.assoc_type = assoc_entity element1, imports.%Main.import_ref.e26 [concrete] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %I3.lookup_impl_witness, element1 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete] // CHECK:STDOUT: %assoc2: %I3.assoc_type = assoc_entity element2, imports.%Main.import_ref.e32 [concrete] // CHECK:STDOUT: %impl.elem2: type = impl_witness_access %I3.lookup_impl_witness, element2 [symbolic_self] @@ -795,7 +801,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc17_36: type = facet_access_type %.Self.ref.loc17_36 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc17_36: type = converted %.Self.ref.loc17_36, %.Self.as_type.loc17_36 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%I3.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.loc17_48.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc17_48.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc17_48.2: type = converted %.loc17_48.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %.Self.ref.loc17_55: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] @@ -820,7 +826,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc27_21: type = facet_access_type %.Self.ref.loc27_21 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc27_21: type = converted %.Self.ref.loc27_21, %.Self.as_type.loc27_21 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I3.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc27_33.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc27_33.2: type = converted %.loc27_33.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [concrete = constants.%struct_type.b] // CHECK:STDOUT: %.Self.ref.loc27_40: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] @@ -908,6 +914,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness.c4e: = impl_witness file.%I.impl_witness_table.loc5 [concrete] // CHECK:STDOUT: %I.impl_witness.0fe: = impl_witness file.%I.impl_witness_table.loc18 [concrete] @@ -943,7 +950,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc5_14: type = where_expr %.Self [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -1008,6 +1015,8 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1040,7 +1049,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc10_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.Self.ref.loc10_32: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc10_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.4fb [concrete = constants.%assoc0] @@ -1048,7 +1057,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc10_32: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_32, %.loc10_26.2 [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc10_38.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_38.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_38.2: type = converted %.loc10_38.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = ] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -1103,6 +1112,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1143,7 +1153,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.loc10_34: type = converted %.Self.ref.loc10_34, %.Self.as_type.loc10_34 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc10_34: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_34, [concrete = ] -// CHECK:STDOUT: %.loc10_40.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_40.2: type = converted %.loc10_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = ] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -1197,6 +1207,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1230,7 +1241,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc10_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.Self.ref.loc10_32: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc10_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.4fb [concrete = constants.%assoc0] @@ -1385,6 +1396,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } @@ -1419,7 +1431,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc6_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.Self.ref.loc6_32: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc6_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.4fb [concrete = constants.%assoc0] @@ -1427,7 +1439,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.loc6_32: type = converted %.Self.ref.loc6_32, %.Self.as_type.loc6_32 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0.loc6_32: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc6_32, %.loc6_26.2 [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc6_38.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_38.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_38.2: type = converted %.loc6_38.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc6_14: type = where_expr %.Self [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type @@ -1521,8 +1533,8 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc6_26: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %struct_type.a.225 = impl_witness_access constants.%NonType.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc6_38: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_39.1: %struct_type.a.225 = struct_literal (%.loc6_38) +// CHECK:STDOUT: %.loc6_38: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_39.1: %struct_type.a.225 = struct_literal (%.loc6_38) [concrete = constants.%struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_39.2: %empty_struct_type = converted %.loc6_38, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %struct: %struct_type.a.225 = struct_value (%.loc6_39.2) [concrete = constants.%struct] diff --git a/toolchain/check/testdata/impl/import_self.carbon b/toolchain/check/testdata/impl/import_self.carbon index 606f3994001a..f61b3d399335 100644 --- a/toolchain/check/testdata/impl/import_self.carbon +++ b/toolchain/check/testdata/impl/import_self.carbon @@ -121,6 +121,7 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete] // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] @@ -132,7 +133,6 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %empty_tuple.type.as.Add.impl.Op.type: type = fn_type @empty_tuple.type.as.Add.impl.Op [concrete] // CHECK:STDOUT: %empty_tuple.type.as.Add.impl.Op: %empty_tuple.type.as.Add.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %empty_tuple.type, (%Add.impl_witness) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] @@ -162,7 +162,7 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: impl_decl @empty_tuple.type.as.Add.impl [concrete] {} { -// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type] // CHECK:STDOUT: } @@ -176,17 +176,17 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10_24.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_24.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_24.2: type = converted %.loc10_24.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param // CHECK:STDOUT: %y.param: %empty_tuple.type = value_param call_param1 // CHECK:STDOUT: %.loc10_17.1: type = splice_block %.loc10_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_17.3: type = converted %.loc10_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: %empty_tuple.type = value_binding y, %y.param @@ -239,7 +239,7 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: fn @empty_tuple.type.as.Add.impl.Op(%self.param: %empty_tuple.type, %other.param: %empty_tuple.type) -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_52.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_52.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_53: init %empty_tuple.type = converted %.loc7_52.1, %.loc7_52.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc7_53 to %return diff --git a/toolchain/check/testdata/impl/import_self_specific.carbon b/toolchain/check/testdata/impl/import_self_specific.carbon index b51a9c2ec45c..dd1cc97eb3ee 100644 --- a/toolchain/check/testdata/impl/import_self_specific.carbon +++ b/toolchain/check/testdata/impl/import_self_specific.carbon @@ -82,6 +82,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.4af: type = class_type @C, @C(%V) [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_tuple.type [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self.9f2: %I.type = symbolic_binding Self, 0 [symbolic] @@ -229,7 +230,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc12_10: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_11: type = converted %.loc12_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: adapt_decl %.loc12_11 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_tuple.type [concrete = constants.%complete_type] @@ -314,6 +315,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %I.lookup_impl_witness.fd8: = lookup_impl_witness %.Self.420, @I [symbolic_self] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %impl.elem0.c51: %Y.type = impl_witness_access %I.lookup_impl_witness.fd8, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Y.impl_witness.278: = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%T) [symbolic] // CHECK:STDOUT: %Y.impl_witness.8d4: = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%empty_tuple.type) [concrete] @@ -410,7 +412,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc20_37: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %Y.type = impl_witness_access constants.%I.lookup_impl_witness.fd8, element0 [symbolic_self = constants.%impl.elem0.c51] -// CHECK:STDOUT: %.loc20_47.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc20_47.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value constants.%empty_tuple.type, (constants.%Y.impl_witness.8d4) [concrete = constants.%Y.facet] // CHECK:STDOUT: %.loc20_47.2: %Y.type = converted %.loc20_47.1, %Y.facet [concrete = constants.%Y.facet] // CHECK:STDOUT: %.loc20_31: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { @@ -499,7 +501,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %c.param: %C.3c2 = value_param call_param0 // CHECK:STDOUT: %.loc21_15.1: type = splice_block %C [concrete = constants.%C.3c2] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc21_14: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc21_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value constants.%empty_tuple.type, (constants.%Z.impl_witness.b07) [concrete = constants.%Z.facet.996] // CHECK:STDOUT: %.loc21_15.2: %Z.type = converted %.loc21_14, %Z.facet [concrete = constants.%Z.facet.996] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%Z.facet.996) [concrete = constants.%C.3c2] diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index 34ca73825ccc..3c09ec294395 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -47,6 +47,7 @@ fn G() { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] @@ -78,7 +79,7 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc5_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %x.param @@ -105,6 +106,7 @@ fn G() { // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %X: %empty_tuple.type = symbolic_binding X, 0 [symbolic] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] @@ -180,7 +182,7 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc5_14.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_14.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_14.3: type = converted %.loc5_14.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %X.loc5_9.2: %empty_tuple.type = symbolic_binding X, 0 [symbolic = %X.loc5_9.1 (constants.%X)] @@ -194,7 +196,7 @@ fn G() { // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc7_19.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_19.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %Y.loc7_14.2: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y.loc7_14.1 (constants.%Y)] @@ -515,7 +517,7 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc7_6: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_6: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_7: %empty_tuple.type = converted %.loc7_6, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_tuple) [concrete = constants.%C.607] @@ -524,7 +526,7 @@ fn G() { // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (constants.%I.impl_witness.2f0) [concrete = constants.%I.facet] // CHECK:STDOUT: %.loc7_8: %I.type = converted %C, %I.facet [concrete = constants.%I.facet] // CHECK:STDOUT: %impl.elem0: %.5c3 = impl_witness_access constants.%I.impl_witness.2f0, element0 [concrete = constants.%C.as.I.impl.F.bb5d01.2] -// CHECK:STDOUT: %.loc7_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct.loc7_16.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_17.1: %empty_struct_type = converted %.loc7_16.1, %empty_struct.loc7_16.1 [concrete = constants.%empty_struct] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.I.impl.F.2(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.specific_fn.d33299.1] diff --git a/toolchain/check/testdata/impl/import_use_generic.carbon b/toolchain/check/testdata/impl/import_use_generic.carbon index 8a40e93ff875..24073afd4bee 100644 --- a/toolchain/check/testdata/impl/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/import_use_generic.carbon @@ -191,6 +191,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %C.3f0: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.99a: type = pattern_type %C.7a7 [concrete] // CHECK:STDOUT: %C.val: %C.7a7 = struct_value () [concrete] @@ -251,7 +252,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %c.var: ref %C.7a7 = var %c.var_patt [concrete] // CHECK:STDOUT: %.loc6_12.1: type = splice_block %C [concrete = constants.%C.7a7] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc6_11: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_11: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_12.2: type = converted %.loc6_11, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7] // CHECK:STDOUT: } @@ -272,7 +273,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc25_14: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc25_14: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc25_15: type = converted %.loc25_14, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] @@ -345,7 +346,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_17.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_17.2: init %C.7a7 = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc6_1: init %C.7a7 = converted %.loc6_17.1, %.loc6_17.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc6_1 diff --git a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon index c25972e76e19..e88485e9843e 100644 --- a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon +++ b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon @@ -107,6 +107,7 @@ fn G() { // CHECK:STDOUT: %J.facet.5ad: %J.type = facet_value %C, (%J.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.be8: type = fn_type_with_self_type %J.JJ.type, %J.facet.5ad [concrete] // CHECK:STDOUT: %facet_value.d36: %facet_type = facet_value %C, (%I.impl_witness, %J.impl_witness) [concrete] @@ -345,7 +346,7 @@ fn G() { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %.loc40_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc40_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc40_11: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc40_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc40_6.3: init %C = class_init (), %.loc40_6.2 [concrete = constants.%C.val] @@ -379,7 +380,7 @@ fn G() { // CHECK:STDOUT: %C.as.J.impl.JJ.call: init %empty_tuple.type = call %bound_method.loc40_77(%.loc40_8.2) // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %C.ref.loc46_5: type = name_ref C, %C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc46_9.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc46_9.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc46_14: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc46_9.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc46_9.3: init %C = class_init (), %.loc46_9.2 [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index 9ce22a9e1ebc..558653461ada 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -150,6 +150,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.facet.aaf: %HasF.type = facet_value %T, (%HasF.impl_witness.bdb) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -193,7 +194,7 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %x.param @@ -357,6 +358,7 @@ fn G(x: A) { // CHECK:STDOUT: %impl.elem0.928: %.89d = impl_witness_access %Copy.lookup_impl_witness.c66, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.6a1: = specific_impl_function %impl.elem0.928, @Copy.Op(%Copy.facet.747) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.1cc: type = pattern_type %ptr.c28 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -412,12 +414,12 @@ fn G(x: A) { // CHECK:STDOUT: %return.patt: %pattern_type.1cc = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.1cc = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc12_18: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_18: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_19: type = converted %.loc12_18, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc12_19: type = ptr_type %.loc12_19 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %x.param: %ptr.c28 = value_param call_param0 // CHECK:STDOUT: %.loc12_11.1: type = splice_block %ptr.loc12_11 [concrete = constants.%ptr.c28] { -// CHECK:STDOUT: %.loc12_10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_11.2: type = converted %.loc12_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc12_11: type = ptr_type %.loc12_11.2 [concrete = constants.%ptr.c28] // CHECK:STDOUT: } @@ -615,6 +617,7 @@ fn G(x: A) { // CHECK:STDOUT: %C.as.HasF.impl.F.019: %C.as.HasF.impl.F.type.ce1 = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet.e4a: %HasF.type = facet_value %C.3f0, (%HasF.impl_witness.94c) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %C.3f0 [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.99a: type = pattern_type %C.7a7 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -668,7 +671,7 @@ fn G(x: A) { // CHECK:STDOUT: %x.param: %C.7a7 = value_param call_param0 // CHECK:STDOUT: %.loc14_13.1: type = splice_block %C [concrete = constants.%C.7a7] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc14_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_13.2: type = converted %.loc14_12, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7] // CHECK:STDOUT: } @@ -852,6 +855,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.assoc_type.1aa: type = assoc_entity_type @HasF, @HasF(%T) [symbolic] // CHECK:STDOUT: %assoc0.bd3: %HasF.assoc_type.1aa = assoc_entity element0, @HasF.%HasF.F.decl [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.59b [symbolic] // CHECK:STDOUT: %HasF.impl_witness.350: = impl_witness file.%HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] @@ -898,7 +902,7 @@ fn G(x: A) { // CHECK:STDOUT: impl_decl @empty_struct_type.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.2 [symbolic = %T.loc8_14.1 (constants.%T)] @@ -914,7 +918,7 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %x.param @@ -1007,7 +1011,7 @@ fn G(x: A) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x // CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic] -// CHECK:STDOUT: %.loc13_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_13: type = converted %.loc13_12, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%empty_struct_type)> [concrete = constants.%HasF.type.48b] // CHECK:STDOUT: %.loc13_14: %HasF.assoc_type.9e4 = specific_constant @HasF.%assoc0.loc5_21.1, @HasF(constants.%empty_struct_type) [concrete = constants.%assoc0.95d] @@ -1110,6 +1114,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.as.HasF.impl.F: %T.as.HasF.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -1149,7 +1154,7 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc16_10.1: type = splice_block %.loc16_10.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc16_10.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc16_10.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc16_10.3: type = converted %.loc16_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %x.param diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index cfcbb0426a37..0f4b3296281c 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -93,6 +93,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %specific_impl_fn.2e3: = specific_impl_function %impl.elem0.a9e, @I.F(%W, %I.facet.84d) [symbolic] // CHECK:STDOUT: %require_complete.f6b5ff.2: = require_complete_type %A.2ddf89.3 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %A.235: type = class_type @A, @A(%empty_struct_type) [concrete] // CHECK:STDOUT: %ptr.197: type = ptr_type %A.235 [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] @@ -248,7 +249,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %ptr.197 = name_ref a, %a // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.loc27_17: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_17: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc27_18: type = converted %.loc27_17, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [concrete = constants.%I.type.399] // CHECK:STDOUT: %.loc27_19: %I.assoc_type.22c = specific_constant @I.%assoc0.loc8_31.1, @I(constants.%empty_struct_type) [concrete = constants.%assoc0.a7f] diff --git a/toolchain/check/testdata/impl/lookup/impl_forall_addr.carbon b/toolchain/check/testdata/impl/lookup/impl_forall_addr.carbon index 0973cc4724a7..208ea73f2c6b 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall_addr.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall_addr.carbon @@ -96,6 +96,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %specific_impl_fn.2e3: = specific_impl_function %impl.elem0.a9e, @I.F(%W, %I.facet.84d) [symbolic] // CHECK:STDOUT: %require_complete.f6b5ff.2: = require_complete_type %A.2ddf89.3 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %A.235: type = class_type @A, @A(%empty_struct_type) [concrete] // CHECK:STDOUT: %ptr.197: type = ptr_type %A.235 [concrete] // CHECK:STDOUT: %pattern_type.e47: type = pattern_type %ptr.197 [concrete] @@ -260,7 +261,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %ptr.197 = name_ref a, %a // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.loc27_17: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_17: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc27_18: type = converted %.loc27_17, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [concrete = constants.%I.type.399] // CHECK:STDOUT: %.loc27_19: %I.assoc_type.22c = specific_constant @I.%assoc0.loc8_33.1, @I(constants.%empty_struct_type) [concrete = constants.%assoc0.a7f] diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 5449a83db057..3b0af7ac63bf 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -1144,6 +1144,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Z.H: %Z.H.type = struct_value () [concrete] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] // CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, @Z.%Z.H.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.type: type = fn_type @empty_tuple.type.as.Z.impl.H [concrete] @@ -1166,7 +1167,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z.impl [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } @@ -1244,6 +1245,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %J.type: type = fn_type @J [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %J: %J.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] @@ -1257,7 +1259,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %.a1b: type = fn_type_with_self_type %Z.H.type, %Z.facet [concrete] // CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.type: type = fn_type @empty_tuple.type.as.Z.impl.H [concrete] // CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H: %empty_tuple.type.as.Z.impl.H.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.bound: = bound_method %empty_tuple, %empty_tuple.type.as.Z.impl.H [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1309,12 +1311,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: fn @J() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_4.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_4.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %PackageAssociatedInterface.ref: = name_ref PackageAssociatedInterface, imports.%PackageAssociatedInterface [concrete = imports.%PackageAssociatedInterface] // CHECK:STDOUT: %Z.ref: type = name_ref Z, imports.%PackageAssociatedInterface.Z [concrete = constants.%Z.type] // CHECK:STDOUT: %H.ref: %Z.assoc_type = name_ref H, imports.%PackageAssociatedInterface.import_ref.609 [concrete = constants.%assoc0] // CHECK:STDOUT: %impl.elem0: %.a1b = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.Z.impl.H] -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_4.1, %impl.elem0 +// CHECK:STDOUT: %bound_method: = bound_method %.loc7_4.1, %impl.elem0 [concrete = constants.%empty_tuple.type.as.Z.impl.H.bound] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_4.2: %empty_tuple.type = converted %.loc7_4.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.call: init %empty_tuple.type = call %bound_method(%.loc7_4.2) @@ -1492,6 +1494,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.241, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %L.type: type = fn_type @L [concrete] // CHECK:STDOUT: %L: %L.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %AnyParam.val: %AnyParam.241 = struct_value () [concrete] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] // CHECK:STDOUT: %assoc0.494: %Y.assoc_type = assoc_entity element0, imports.%PackageHasParam.import_ref.ce2 [concrete] @@ -1638,7 +1641,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var_patt: %pattern_type.004 = var_pattern %obj.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %obj.var: ref %AnyParam.241 = var %obj.var_patt -// CHECK:STDOUT: %.loc13_58.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_58.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_58.2: init %AnyParam.241 = class_init (), %obj.var [concrete = constants.%AnyParam.val] // CHECK:STDOUT: %.loc13_3: init %AnyParam.241 = converted %.loc13_58.1, %.loc13_58.2 [concrete = constants.%AnyParam.val] // CHECK:STDOUT: assign %obj.var, %.loc13_3 @@ -1716,6 +1719,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %pattern_type.a64: type = pattern_type %GenericInterface.type.0da [concrete] // CHECK:STDOUT: %AnyParam.861: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.0da, %GenericInterface.generic) [concrete] // CHECK:STDOUT: %pattern_type.3ad: type = pattern_type %AnyParam.861 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %AnyParam.val: %AnyParam.861 = struct_value () [concrete] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %Self.ad2: %Y.type = symbolic_binding Self, 0 [symbolic] @@ -1842,7 +1846,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var_patt: %pattern_type.3ad = var_pattern %obj.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %obj.var: ref %AnyParam.861 = var %obj.var_patt -// CHECK:STDOUT: %.loc9_50.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_50.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_50.2: init %AnyParam.861 = class_init (), %obj.var [concrete = constants.%AnyParam.val] // CHECK:STDOUT: %.loc8: init %AnyParam.861 = converted %.loc9_50.1, %.loc9_50.2 [concrete = constants.%AnyParam.val] // CHECK:STDOUT: assign %obj.var, %.loc8 @@ -1941,6 +1945,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.0dd, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %L.type: type = fn_type @L [concrete] // CHECK:STDOUT: %L: %L.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %AnyParam.val: %AnyParam.0dd = struct_value () [concrete] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] // CHECK:STDOUT: %assoc0.494: %Y.assoc_type = assoc_entity element0, imports.%PackageHasParam.import_ref.ce2 [concrete] @@ -2083,7 +2088,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var_patt: %pattern_type.64f = var_pattern %obj.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %obj.var: ref %AnyParam.0dd = var %obj.var_patt -// CHECK:STDOUT: %.loc13_54.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_54.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_54.2: init %AnyParam.0dd = class_init (), %obj.var [concrete = constants.%AnyParam.val] // CHECK:STDOUT: %.loc13_3: init %AnyParam.0dd = converted %.loc13_54.1, %.loc13_54.2 [concrete = constants.%AnyParam.val] // CHECK:STDOUT: assign %obj.var, %.loc13_3 @@ -2159,6 +2164,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %pattern_type.17a: type = pattern_type %GenericClass.type [concrete] // CHECK:STDOUT: %AnyParam.d71: type = class_type @AnyParam, @AnyParam(%GenericClass.type, %GenericClass.generic) [concrete] // CHECK:STDOUT: %pattern_type.312: type = pattern_type %AnyParam.d71 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %AnyParam.val: %AnyParam.d71 = struct_value () [concrete] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %Self.ad2: %Y.type = symbolic_binding Self, 0 [symbolic] @@ -2283,7 +2289,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var_patt: %pattern_type.312 = var_pattern %obj.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %obj.var: ref %AnyParam.d71 = var %obj.var_patt -// CHECK:STDOUT: %.loc8_74.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_74.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_74.2: init %AnyParam.d71 = class_init (), %obj.var [concrete = constants.%AnyParam.val] // CHECK:STDOUT: %.loc8_3: init %AnyParam.d71 = converted %.loc8_74.1, %.loc8_74.2 [concrete = constants.%AnyParam.val] // CHECK:STDOUT: assign %obj.var, %.loc8_3 @@ -2385,6 +2391,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %tuple.type.c53: type = tuple_type (type, type, type, type, type, type, type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.c53 = tuple_value (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [concrete] // CHECK:STDOUT: %tuple.type.f7c: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [concrete] // CHECK:STDOUT: %C.763: type = class_type @C, @C(%tuple.type.f7c) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] @@ -2441,7 +2448,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Extra6.ref: type = name_ref Extra6, file.%Extra6.decl [concrete = constants.%Extra6.type] // CHECK:STDOUT: %Extra7.ref: type = name_ref Extra7, file.%Extra7.decl [concrete = constants.%Extra7.type] // CHECK:STDOUT: %Extra8.ref: type = name_ref Extra8, file.%Extra8.decl [concrete = constants.%Extra8.type] -// CHECK:STDOUT: %.loc16_71: %tuple.type.c53 = tuple_literal (%Extra1.ref, %Extra2.ref, %Extra3.ref, %Extra4.ref, %Extra5.ref, %Extra6.ref, %Extra7.ref, %Extra8.ref) +// CHECK:STDOUT: %.loc16_71: %tuple.type.c53 = tuple_literal (%Extra1.ref, %Extra2.ref, %Extra3.ref, %Extra4.ref, %Extra5.ref, %Extra6.ref, %Extra7.ref, %Extra8.ref) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc16_72: type = converted %.loc16_71, constants.%tuple.type.f7c [concrete = constants.%tuple.type.f7c] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.type.f7c) [concrete = constants.%C.763] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] diff --git a/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon b/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon index dc5bed2be51d..96f1aea914f2 100644 --- a/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon +++ b/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon @@ -120,6 +120,7 @@ fn F() { // CHECK:STDOUT: %.Self.binding.as_type.ba5: type = symbolic_binding_type .Self, %.Self.81f [symbolic] // CHECK:STDOUT: %Y.lookup_impl_witness.336: = lookup_impl_witness %.Self.81f, @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %impl.elem0.696: type = impl_witness_access %Y.lookup_impl_witness.336, element0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Y_where.type.3f4: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.696 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %H: %Y_where.type.3f4 = symbolic_binding H, 1 [symbolic] // CHECK:STDOUT: %pattern_type.e48: type = pattern_type %Y_where.type.3f4 [symbolic] @@ -174,7 +175,7 @@ fn F() { // CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %.loc58_18: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc58_18: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc58_19: type = converted %.loc58_18, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Outer: type = class_type @Outer, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.8f5] // CHECK:STDOUT: %.loc58_20: type = specific_constant @Outer.%Y.decl, @Outer(constants.%empty_tuple.type) [concrete = constants.%Y.type.c91] @@ -186,7 +187,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type.79e] // CHECK:STDOUT: %.loc58_29.2: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type.79e] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness.a60, element0 [symbolic_self = constants.%impl.elem0.92d] -// CHECK:STDOUT: %.loc58_35.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc58_35.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc58_35.2: type = converted %.loc58_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc58_23: type = where_expr %.Self [concrete = constants.%Y_where.type.8f9] { // CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.c91 @@ -255,7 +256,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.ba5)] // CHECK:STDOUT: %.loc54_20.2: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.ba5)] // CHECK:STDOUT: %impl.elem0.loc54_20.2: type = impl_witness_access constants.%Y.lookup_impl_witness.336, element0 [symbolic = %impl.elem0.loc54_20.1 (constants.%impl.elem0.696)] -// CHECK:STDOUT: %.loc54_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc54_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc54_26.2: type = converted %.loc54_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc54_14.2: type = where_expr %.Self.3 [symbolic = %Y_where.type (constants.%Y_where.type.3f4)] { // CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.c70 @@ -301,7 +302,7 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %.loc61_10: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc61_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc61_11: type = converted %.loc61_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Outer: type = class_type @Outer, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.8f5] // CHECK:STDOUT: %.loc61_12: %Outer.G.type.96c = specific_constant @Outer.%Outer.G.decl, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.G.510] @@ -412,6 +413,7 @@ fn F() { // CHECK:STDOUT: %.Self.binding.as_type.be3: type = symbolic_binding_type .Self, %.Self.927 [symbolic] // CHECK:STDOUT: %Y.lookup_impl_witness.134: = lookup_impl_witness %.Self.927, @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %impl.elem0.73b: type = impl_witness_access %Y.lookup_impl_witness.134, element0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Y_where.type.2a8: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.73b = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %H: %Y_where.type.2a8 = symbolic_binding H, 1 [symbolic] // CHECK:STDOUT: %pattern_type.f20: type = pattern_type %Y_where.type.2a8 [symbolic] @@ -492,14 +494,14 @@ fn F() { // CHECK:STDOUT: %OuterParam.loc6_13.2: %Z1.type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam.loc6_13.1 (constants.%OuterParam)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z1.impl [concrete] {} { -// CHECK:STDOUT: %.loc17_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc17_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc17_7.2: type = converted %.loc17_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z1.ref: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: } // CHECK:STDOUT: %Z1.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.Z1.impl [concrete] // CHECK:STDOUT: %Z1.impl_witness: = impl_witness %Z1.impl_witness_table [concrete = constants.%Z1.impl_witness] // CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z2.impl [concrete] {} { -// CHECK:STDOUT: %.loc18_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_7.2: type = converted %.loc18_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z2.ref: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] // CHECK:STDOUT: } @@ -613,7 +615,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.be3)] // CHECK:STDOUT: %.loc11_20.2: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.be3)] // CHECK:STDOUT: %impl.elem0.loc11_20.2: type = impl_witness_access constants.%Y.lookup_impl_witness.134, element0 [symbolic = %impl.elem0.loc11_20.1 (constants.%impl.elem0.73b)] -// CHECK:STDOUT: %.loc11_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_26.2: type = converted %.loc11_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc11_14.2: type = where_expr %.Self.3 [symbolic = %Y_where.type (constants.%Y_where.type.2a8)] { // CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.bfe @@ -635,7 +637,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.be3)] // CHECK:STDOUT: %.loc14_21.2: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.be3)] // CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%Y.lookup_impl_witness.134, element0 [symbolic = %impl.elem0.loc14_21.2 (constants.%impl.elem0.73b)] -// CHECK:STDOUT: %.loc14_27.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_27.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_27.2: type = converted %.loc14_27.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc14_15: type = where_expr %.Self.1 [symbolic = %Y_where.type (constants.%Y_where.type.2a8)] { // CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.bfe @@ -685,7 +687,7 @@ fn F() { // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Outer.ref.loc21_3: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %.loc21_10: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc21_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Z1.ref.loc21_16: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: %Z2.ref.loc21_21: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] // CHECK:STDOUT: %impl.elem0.loc21_19: %.fa7 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -702,7 +704,7 @@ fn F() { // CHECK:STDOUT: %.loc21_25: %Outer.G.type.2b7 = specific_constant @Outer.%Outer.G.decl, @Outer(constants.%Z1.facet) [concrete = constants.%Outer.G.2d7] // CHECK:STDOUT: %G.ref: %Outer.G.type.2b7 = name_ref G, %.loc21_25 [concrete = constants.%Outer.G.2d7] // CHECK:STDOUT: %Outer.ref.loc21_28: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %.loc21_35: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc21_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Z1.ref.loc21_41: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: %Z2.ref.loc21_46: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] // CHECK:STDOUT: %impl.elem0.loc21_44: %.fa7 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] diff --git a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon index 1580f54d55e0..a713c910eae9 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -121,6 +121,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.Self.binding.as_type.7e8: type = symbolic_binding_type .Self, %.Self.fe7 [symbolic] // CHECK:STDOUT: %Z.lookup_impl_witness.c15: = lookup_impl_witness %.Self.fe7, @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %impl.elem0.b31: type = impl_witness_access %Z.lookup_impl_witness.c15, element0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Z_where.type.d64: type = facet_type <@Z, @Z(%S) where %impl.elem0.b31 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %require_complete.d2e: = require_complete_type %Z_where.type.d64 [symbolic] // CHECK:STDOUT: %Z.impl_witness.aba: = impl_witness file.%Z.impl_witness_table.loc9, @T.as.Z.impl.008(%T.d9f, %S) [symbolic] @@ -184,7 +185,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.7e8)] // CHECK:STDOUT: %.loc9_50.2: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.7e8)] // CHECK:STDOUT: %impl.elem0.loc9_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.c15, element0 [symbolic = %impl.elem0.loc9_50.2 (constants.%impl.elem0.b31)] -// CHECK:STDOUT: %.loc9_56.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_56.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_56.2: type = converted %.loc9_56.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc9_44: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.d64)] { // CHECK:STDOUT: requirement_base_facet_type constants.%Z.type.c56 @@ -445,6 +446,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.Self.binding.as_type.7e8: type = symbolic_binding_type .Self, %.Self.fe7 [symbolic] // CHECK:STDOUT: %Z.lookup_impl_witness.c15: = lookup_impl_witness %.Self.fe7, @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %impl.elem0.b31: type = impl_witness_access %Z.lookup_impl_witness.c15, element0 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Z_where.type.d64: type = facet_type <@Z, @Z(%S) where %impl.elem0.b31 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %require_complete.d2e: = require_complete_type %Z_where.type.d64 [symbolic] // CHECK:STDOUT: %Z.impl_witness.aba: = impl_witness file.%Z.impl_witness_table.loc10, @T.as.Z.impl.008(%T.d9f, %S) [symbolic] @@ -527,7 +529,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.7e8)] // CHECK:STDOUT: %.loc10_50.2: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.binding.as_type (constants.%.Self.binding.as_type.7e8)] // CHECK:STDOUT: %impl.elem0.loc10_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.c15, element0 [symbolic = %impl.elem0.loc10_50.2 (constants.%impl.elem0.b31)] -// CHECK:STDOUT: %.loc10_56.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_56.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_56.2: type = converted %.loc10_56.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_44: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.d64)] { // CHECK:STDOUT: requirement_base_facet_type constants.%Z.type.c56 diff --git a/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon b/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon index c5669e5be370..48cae6ff8655 100644 --- a/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon +++ b/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon @@ -110,6 +110,7 @@ impl () as D; // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self: %A.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -119,7 +120,7 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } @@ -144,6 +145,7 @@ impl () as D; // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -160,12 +162,12 @@ impl () as D; // CHECK:STDOUT: %default.import.loc2_46.1 = import // CHECK:STDOUT: %default.import.loc2_46.2 = import // CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl.766c6e.2 [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl.766c6e.3 [concrete] {} { -// CHECK:STDOUT: %.loc14_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_7.2: type = converted %.loc14_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type] // CHECK:STDOUT: } @@ -214,6 +216,7 @@ impl () as D; // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %B.impl_witness: = impl_witness file.%B.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -223,7 +226,7 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: type = interface_decl @B [concrete = constants.%B.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.B.impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } @@ -281,6 +284,7 @@ impl () as D; // CHECK:STDOUT: %C.type: type = facet_type <@C> [concrete] // CHECK:STDOUT: %Self: %C.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.impl_witness: = impl_witness file.%C.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -290,7 +294,7 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = interface_decl @C [concrete = constants.%C.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.C.impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } @@ -315,6 +319,7 @@ impl () as D; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C.type: type = facet_type <@C> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -331,7 +336,7 @@ impl () as D; // CHECK:STDOUT: %default.import.loc2_40.1 = import // CHECK:STDOUT: %default.import.loc2_40.2 = import // CHECK:STDOUT: impl_decl @empty_tuple.type.as.C.impl.130841.2 [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C.type] // CHECK:STDOUT: } @@ -361,6 +366,7 @@ impl () as D; // CHECK:STDOUT: %D.type: type = facet_type <@D> [concrete] // CHECK:STDOUT: %Self: %D.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %D.impl_witness: = impl_witness file.%D.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -372,7 +378,7 @@ impl () as D; // CHECK:STDOUT: %default.import.loc2_33.2 = import // CHECK:STDOUT: %D.decl: type = interface_decl @D [concrete = constants.%D.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.D.impl [concrete] {} { -// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/self_in_class.carbon b/toolchain/check/testdata/impl/self_in_class.carbon index 7ff193a36d00..2295f1ffe2fa 100644 --- a/toolchain/check/testdata/impl/self_in_class.carbon +++ b/toolchain/check/testdata/impl/self_in_class.carbon @@ -46,6 +46,7 @@ class A { // CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make.type: type = fn_type @C.as.DefaultConstructible.impl.Make [concrete] // CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make: %C.as.DefaultConstructible.impl.Make.type = struct_value () [concrete] // CHECK:STDOUT: %DefaultConstructible.facet: %DefaultConstructible.type = facet_value %C, (%DefaultConstructible.impl_witness) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -131,7 +132,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.DefaultConstructible.impl.Make() -> %return.param: %C { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc25_33.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc25_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc25_33.2: init %C = class_init (), %return [concrete = constants.%C.val] // CHECK:STDOUT: %.loc25_34: init %C = converted %.loc25_33.1, %.loc25_33.2 [concrete = constants.%C.val] // CHECK:STDOUT: return %.loc25_34 to %return diff --git a/toolchain/check/testdata/impl/self_in_signature.carbon b/toolchain/check/testdata/impl/self_in_signature.carbon index 8016fbf70c8d..5945910bd550 100644 --- a/toolchain/check/testdata/impl/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/self_in_signature.carbon @@ -61,6 +61,7 @@ impl D as SelfNested { // CHECK:STDOUT: %C.as.UseSelf.impl.F.type: type = fn_type @C.as.UseSelf.impl.F [concrete] // CHECK:STDOUT: %C.as.UseSelf.impl.F: %C.as.UseSelf.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.facet.0a1: %UseSelf.type = facet_value %C, (%UseSelf.impl_witness.34b) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.2dc: = impl_witness file.%UseSelf.impl_witness_table.loc27 [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] @@ -72,8 +73,10 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.708: %SelfNested.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.49d: type = symbolic_binding_type Self, 0, %Self.708 [symbolic] // CHECK:STDOUT: %ptr.e7a: type = ptr_type %Self.binding.as_type.49d [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.x.y.b2f: type = struct_type {.x: %Self.binding.as_type.49d, .y: %empty_tuple.type} [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.7e6: %tuple.type.24b = tuple_value (%ptr.e7a, %struct_type.x.y.b2f) [symbolic] // CHECK:STDOUT: %tuple.type.b03: type = tuple_type (%ptr.e7a, %struct_type.x.y.b2f) [symbolic] // CHECK:STDOUT: %pattern_type.bc7: type = pattern_type %tuple.type.b03 [symbolic] // CHECK:STDOUT: %SelfNested.F.type: type = fn_type @SelfNested.F [concrete] @@ -83,6 +86,7 @@ impl D as SelfNested { // CHECK:STDOUT: %SelfNested.impl_witness.e41: = impl_witness file.%SelfNested.impl_witness_table.loc35 [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %struct_type.x.y.2f0: type = struct_type {.x: %C, .y: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %tuple.55f: %tuple.type.24b = tuple_value (%ptr.019, %struct_type.x.y.2f0) [concrete] // CHECK:STDOUT: %tuple.type.a17: type = tuple_type (%ptr.019, %struct_type.x.y.2f0) [concrete] // CHECK:STDOUT: %pattern_type.809: type = pattern_type %tuple.type.a17 [concrete] // CHECK:STDOUT: %C.as.SelfNested.impl.F.type: type = fn_type @C.as.SelfNested.impl.F [concrete] @@ -91,6 +95,7 @@ impl D as SelfNested { // CHECK:STDOUT: %SelfNested.impl_witness.641: = impl_witness file.%SelfNested.impl_witness_table.loc39 [concrete] // CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] // CHECK:STDOUT: %struct_type.x.y.527: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %tuple.bcf: %tuple.type.24b = tuple_value (%ptr.19c, %struct_type.x.y.527) [concrete] // CHECK:STDOUT: %tuple.type.a5f: type = tuple_type (%ptr.19c, %struct_type.x.y.527) [concrete] // CHECK:STDOUT: %pattern_type.b43: type = pattern_type %tuple.type.a5f [concrete] // CHECK:STDOUT: %D.as.SelfNested.impl.F.type: type = fn_type @D.as.SelfNested.impl.F [concrete] @@ -190,10 +195,10 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.ref.loc32_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.708)] // CHECK:STDOUT: %Self.as_type.loc32_24: type = facet_access_type %Self.ref.loc32_24 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.49d)] // CHECK:STDOUT: %.loc32_24: type = converted %Self.ref.loc32_24, %Self.as_type.loc32_24 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.49d)] -// CHECK:STDOUT: %.loc32_35.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc32_35.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc32_35.2: type = converted %.loc32_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.y.loc32_36.2: type = struct_type {.x: @SelfNested.F.%Self.binding.as_type (%Self.binding.as_type.49d), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc32_36.1 (constants.%struct_type.x.y.b2f)] -// CHECK:STDOUT: %.loc32_37.2: %tuple.type.24b = tuple_literal (%ptr.loc32_16.2, %struct_type.x.y.loc32_36.2) +// CHECK:STDOUT: %.loc32_37.2: %tuple.type.24b = tuple_literal (%ptr.loc32_16.2, %struct_type.x.y.loc32_36.2) [symbolic = %tuple (constants.%tuple.7e6)] // CHECK:STDOUT: %.loc32_37.3: type = converted %.loc32_37.2, constants.%tuple.type.b03 [symbolic = %tuple.type (constants.%tuple.type.b03)] // CHECK:STDOUT: } // CHECK:STDOUT: %x: @SelfNested.F.%tuple.type (%tuple.type.b03) = value_binding x, %x.param @@ -269,10 +274,10 @@ impl D as SelfNested { // CHECK:STDOUT: %C.ref.loc36_12: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %C.ref.loc36_12 [concrete = constants.%ptr.019] // CHECK:STDOUT: %C.ref.loc36_21: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc36_29.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc36_29.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc36_29.2: type = converted %.loc36_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %C, .y: %empty_tuple.type} [concrete = constants.%struct_type.x.y.2f0] -// CHECK:STDOUT: %.loc36_31.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc36_31.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) [concrete = constants.%tuple.55f] // CHECK:STDOUT: %.loc36_31.3: type = converted %.loc36_31.2, constants.%tuple.type.a17 [concrete = constants.%tuple.type.a17] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %tuple.type.a17 = value_binding x, %x.param @@ -294,10 +299,10 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.ref.loc40_12: type = name_ref Self, @D.as.SelfNested.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref.loc40_12 [concrete = constants.%ptr.19c] // CHECK:STDOUT: %Self.ref.loc40_24: type = name_ref Self, @D.as.SelfNested.impl.%D.ref [concrete = constants.%D] -// CHECK:STDOUT: %.loc40_35.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc40_35.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc40_35.2: type = converted %.loc40_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete = constants.%struct_type.x.y.527] -// CHECK:STDOUT: %.loc40_37.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc40_37.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) [concrete = constants.%tuple.bcf] // CHECK:STDOUT: %.loc40_37.3: type = converted %.loc40_37.2, constants.%tuple.type.a5f [concrete = constants.%tuple.type.a5f] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %tuple.type.a5f = value_binding x, %x.param @@ -334,7 +339,7 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.UseSelf.impl.F(%self.param: %C, %x.param: %C) -> %return.param: %C { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc24_38.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_38.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc24_38.2: init %C = class_init (), %return [concrete = constants.%C.val] // CHECK:STDOUT: %.loc24_39: init %C = converted %.loc24_38.1, %.loc24_38.2 [concrete = constants.%C.val] // CHECK:STDOUT: return %.loc24_39 to %return @@ -342,7 +347,7 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: fn @D.as.UseSelf.impl.F(%self.param: %D, %x.param: %D) -> %return.param: %D { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc28_47.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc28_47.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc28_47.2: init %D = class_init (), %return [concrete = constants.%D.val] // CHECK:STDOUT: %.loc28_48: init %D = converted %.loc28_47.1, %.loc28_47.2 [concrete = constants.%D.val] // CHECK:STDOUT: return %.loc28_48 to %return @@ -353,6 +358,7 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.49d)] // CHECK:STDOUT: %ptr.loc32_16.1: type = ptr_type %Self.binding.as_type [symbolic = %ptr.loc32_16.1 (constants.%ptr.e7a)] // CHECK:STDOUT: %struct_type.x.y.loc32_36.1: type = struct_type {.x: @SelfNested.F.%Self.binding.as_type (%Self.binding.as_type.49d), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc32_36.1 (constants.%struct_type.x.y.b2f)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%ptr.loc32_16.1, %struct_type.x.y.loc32_36.1) [symbolic = %tuple (constants.%tuple.7e6)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc32_16.1, %struct_type.x.y.loc32_36.1) [symbolic = %tuple.type (constants.%tuple.type.b03)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.bc7)] // CHECK:STDOUT: @@ -386,6 +392,7 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.49d // CHECK:STDOUT: %ptr.loc32_16.1 => constants.%ptr.e7a // CHECK:STDOUT: %struct_type.x.y.loc32_36.1 => constants.%struct_type.x.y.b2f +// CHECK:STDOUT: %tuple => constants.%tuple.7e6 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.b03 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bc7 // CHECK:STDOUT: } @@ -395,6 +402,7 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.binding.as_type => constants.%C // CHECK:STDOUT: %ptr.loc32_16.1 => constants.%ptr.019 // CHECK:STDOUT: %struct_type.x.y.loc32_36.1 => constants.%struct_type.x.y.2f0 +// CHECK:STDOUT: %tuple => constants.%tuple.55f // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a17 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.809 // CHECK:STDOUT: } @@ -404,6 +412,7 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.binding.as_type => constants.%D // CHECK:STDOUT: %ptr.loc32_16.1 => constants.%ptr.19c // CHECK:STDOUT: %struct_type.x.y.loc32_36.1 => constants.%struct_type.x.y.527 +// CHECK:STDOUT: %tuple => constants.%tuple.bcf // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b43 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/use_assoc_const.carbon b/toolchain/check/testdata/impl/use_assoc_const.carbon index 04dea33e10e8..b18c49f32524 100644 --- a/toolchain/check/testdata/impl/use_assoc_const.carbon +++ b/toolchain/check/testdata/impl/use_assoc_const.carbon @@ -304,6 +304,7 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self.c58: %J.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.c58 [symbolic_self] // CHECK:STDOUT: %J.lookup_impl_witness.ab8: = lookup_impl_witness %.Self.c58, @J [symbolic_self] @@ -352,6 +353,7 @@ fn F() { // CHECK:STDOUT: %int_40.518: %i32 = int_value 40 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %J_where.type.9e8: type = facet_type <@J where %impl.elem0.ab2 = %C> [concrete] // CHECK:STDOUT: %J.impl_witness.2a8: = impl_witness file.%J.impl_witness_table.loc21 [concrete] @@ -359,7 +361,6 @@ fn F() { // CHECK:STDOUT: %C.as.J.impl.F.type: type = fn_type @C.as.J.impl.F [concrete] // CHECK:STDOUT: %C.as.J.impl.F: %C.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.226: %J.type = facet_value %C, (%J.impl_witness.2a8) [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -391,7 +392,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.J.impl [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.c58] @@ -420,7 +421,7 @@ fn F() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc12_19.1: type = splice_block %.loc12_19.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_19.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_19.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_19.3: type = converted %.loc12_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param @@ -550,7 +551,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc18_10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc18_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc18_11: type = converted %.loc18_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: adapt_decl %.loc18_11 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] @@ -2504,11 +2505,13 @@ fn F() { // CHECK:STDOUT: %J2.F.type: type = fn_type @J2.F [concrete] // CHECK:STDOUT: %J2.F: %J2.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %J2.assoc_type = assoc_entity element1, @J2.%J2.F.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %J2.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %J2.lookup_impl_witness: = lookup_impl_witness %.Self, @J2 [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %J2.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %J2_where.type.744: type = facet_type <@J2 where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %J2.impl_witness.b89: = impl_witness file.%J2.impl_witness_table.loc22 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] @@ -2518,7 +2521,6 @@ fn F() { // CHECK:STDOUT: %J2.facet.02c: %J2.type = facet_value %empty_tuple.type, (%J2.impl_witness.b89) [concrete] // CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.type.d9b215.2: type = fn_type @empty_tuple.type.as.J2.impl.F.loc23_33.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.b047a1.2: %empty_tuple.type.as.J2.impl.F.type.d9b215.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C2: type = class_type @C2 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %J2_where.type.76d: type = facet_type <@J2 where %impl.elem0 = %C2> [concrete] @@ -2548,7 +2550,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J2.decl: type = interface_decl @J2 [concrete = constants.%J2.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.J2.impl [concrete] {} { -// CHECK:STDOUT: %.loc22_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc22_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_7.2: type = converted %.loc22_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %J2.ref: type = name_ref J2, file.%J2.decl [concrete = constants.%J2.type] // CHECK:STDOUT: %.Self: %J2.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -2557,7 +2559,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc22_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J2.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc22_28.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_28.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc22_28.2: type = converted %.loc22_28.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc22_15: type = where_expr %.Self [concrete = constants.%J2_where.type.744] { // CHECK:STDOUT: requirement_base_facet_type constants.%J2.type @@ -2639,14 +2641,14 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc23_31.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc23_31.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc23_31.2: type = converted %.loc23_31.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.J2.impl.%.loc22_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param // CHECK:STDOUT: %z.param: %empty_struct_type = value_param call_param1 // CHECK:STDOUT: %.loc23_24.1: type = splice_block %.loc23_24.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc23_24.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc23_24.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc23_24.3: type = converted %.loc23_24.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %z: %empty_struct_type = value_binding z, %z.param @@ -2712,7 +2714,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { -// CHECK:STDOUT: %.loc28_10: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc28_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc28_11: type = converted %.loc28_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: adapt_decl %.loc28_11 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] @@ -2809,6 +2811,7 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %K.F: %K.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %K.assoc_type = assoc_entity element1, @K.%K.F.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %K.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %K.lookup_impl_witness.e69: = lookup_impl_witness %.Self, @K [symbolic_self] @@ -2825,7 +2828,6 @@ fn F() { // CHECK:STDOUT: %pattern_type.e85: type = pattern_type %struct_type.a [concrete] // CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.type.662f2e.2: type = fn_type @empty_tuple.type.as.K.impl.F.loc26_45.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.ec3e8a.2: %empty_tuple.type.as.K.impl.F.type.662f2e.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -2853,7 +2855,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %K.decl: type = interface_decl @K [concrete = constants.%K.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.K.impl [concrete] {} { -// CHECK:STDOUT: %.loc11_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_7.2: type = converted %.loc11_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %K.ref: type = name_ref K, file.%K.decl [concrete = constants.%K.type] // CHECK:STDOUT: %.Self: %K.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -2862,7 +2864,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc11_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%K.lookup_impl_witness.e69, element0 [symbolic_self = constants.%impl.elem0.e40] -// CHECK:STDOUT: %.loc11_31.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_31.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_31.2: type = converted %.loc11_31.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %.loc11_14: type = where_expr %.Self [concrete = constants.%K_where.type] { @@ -2930,7 +2932,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.414 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.414 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc26_42.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc26_42.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_42.2: type = converted %.loc26_42.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.loc26_43: type = struct_type {.x: %empty_tuple.type} [concrete = constants.%struct_type.x] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 @@ -2938,7 +2940,7 @@ fn F() { // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param // CHECK:STDOUT: %v.param: %struct_type.x = value_param call_param1 // CHECK:STDOUT: %.loc26_30: type = splice_block %struct_type.x.loc26_30 [concrete = constants.%struct_type.x] { -// CHECK:STDOUT: %.loc26_29.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc26_29.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_29.2: type = converted %.loc26_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.loc26_30: type = struct_type {.x: %empty_tuple.type} [concrete = constants.%struct_type.x] // CHECK:STDOUT: } @@ -3036,6 +3038,7 @@ fn F() { // CHECK:STDOUT: %M.type: type = facet_type <@M> [concrete] // CHECK:STDOUT: %Self: %M.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %struct_type.b.347: type = struct_type {.b: %empty_struct_type} [concrete] // CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type @M [concrete] @@ -3044,11 +3047,11 @@ fn F() { // CHECK:STDOUT: %M.G.type: type = fn_type @M.G [concrete] // CHECK:STDOUT: %M.G: %M.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%M.G.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %M.lookup_impl_witness: = lookup_impl_witness %.Self, @M [symbolic_self] // CHECK:STDOUT: %impl.elem0: %struct_type.b.347 = impl_witness_access %M.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: %M_where.type: type = facet_type <@M where %impl.elem0 = %struct> [concrete] // CHECK:STDOUT: %M.impl_witness: = impl_witness file.%M.impl_witness_table [concrete] @@ -3072,7 +3075,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %M.decl: type = interface_decl @M [concrete = constants.%M.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.M.impl [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] // CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -3081,8 +3084,8 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %struct_type.b.347 = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc8_32: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc8_33.1: %struct_type.b.347 = struct_literal (%.loc8_32) +// CHECK:STDOUT: %.loc8_32: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc8_33.1: %struct_type.b.347 = struct_literal (%.loc8_32) [concrete = constants.%struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_33.2: %empty_struct_type = converted %.loc8_32, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%.loc8_33.2) [concrete = constants.%struct] @@ -3106,7 +3109,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc5_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param @@ -3131,7 +3134,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc9_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param @@ -3194,12 +3197,14 @@ fn F() { // CHECK:STDOUT: %M.G.type: type = fn_type @M.G [concrete] // CHECK:STDOUT: %M.G: %M.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%M.G.decl [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] // CHECK:STDOUT: %.Self.5f5: %M.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.5f5 [symbolic_self] // CHECK:STDOUT: %M.lookup_impl_witness: = lookup_impl_witness %.Self.5f5, @M [symbolic_self] // CHECK:STDOUT: %impl.elem0.228: %struct_type.b.86f = impl_witness_access %M.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %struct_type.b.347: type = struct_type {.b: %empty_struct_type} [concrete] +// CHECK:STDOUT: %struct.692: %struct_type.b.347 = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: %struct_type.b.161: type = struct_type {.b: %empty_tuple.type} [concrete] // CHECK:STDOUT: %struct.0f3: %struct_type.b.86f = struct_value (%empty_struct_type) [concrete] // CHECK:STDOUT: %M_where.type.a69: type = facet_type <@M where %impl.elem0.228 = %struct.0f3> [concrete] @@ -3215,7 +3220,9 @@ fn F() { // CHECK:STDOUT: %type.as.Copy.impl.Op.type: type = fn_type @type.as.Copy.impl.Op [concrete] // CHECK:STDOUT: %type.as.Copy.impl.Op: %type.as.Copy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %type.as.Copy.impl.Op.bound.583: = bound_method %empty_struct_type, %type.as.Copy.impl.Op [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.3a0: type = class_type @C, @C(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %struct.63c: %struct_type.b.161 = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %struct.c94: %struct_type.b.86f = struct_value (%empty_tuple.type) [concrete] // CHECK:STDOUT: %M_where.type.87f: type = facet_type <@M where %impl.elem0.228 = %struct.c94> [concrete] // CHECK:STDOUT: %M.impl_witness.1f1: = impl_witness file.%M.impl_witness_table.loc16 [concrete] @@ -3252,7 +3259,7 @@ fn F() { // CHECK:STDOUT: %M.decl: type = interface_decl @M [concrete = constants.%M.type] {} {} // CHECK:STDOUT: impl_decl @C.as.M.impl.cd4 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc10_9: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_9: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_10: type = converted %.loc10_9, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] @@ -3262,8 +3269,8 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_23: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %struct_type.b.86f = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.228] -// CHECK:STDOUT: %.loc10_35: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc10_36.1: %struct_type.b.347 = struct_literal (%.loc10_35) +// CHECK:STDOUT: %.loc10_35: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc10_36.1: %struct_type.b.347 = struct_literal (%.loc10_35) [concrete = constants.%struct.692] // CHECK:STDOUT: %.loc10_36.2: type = converted %.loc10_35, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct: %struct_type.b.86f = struct_value (%.loc10_36.2) [concrete = constants.%struct.0f3] // CHECK:STDOUT: %.loc10_36.3: %struct_type.b.86f = converted %.loc10_36.1, %struct [concrete = constants.%struct.0f3] @@ -3277,7 +3284,7 @@ fn F() { // CHECK:STDOUT: %impl_witness_assoc_constant.loc10: %struct_type.b.86f = impl_witness_assoc_constant constants.%struct.0f3 [concrete = constants.%struct.0f3] // CHECK:STDOUT: impl_decl @C.as.M.impl.3ca [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %.loc16_9: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_9: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_10: type = converted %.loc16_9, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_tuple.type) [concrete = constants.%C.3a0] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] @@ -3287,8 +3294,8 @@ fn F() { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc16_23: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: %struct_type.b.86f = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.228] -// CHECK:STDOUT: %.loc16_35: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_36.1: %struct_type.b.161 = struct_literal (%.loc16_35) +// CHECK:STDOUT: %.loc16_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_36.1: %struct_type.b.161 = struct_literal (%.loc16_35) [concrete = constants.%struct.63c] // CHECK:STDOUT: %.loc16_36.2: type = converted %.loc16_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct: %struct_type.b.86f = struct_value (%.loc16_36.2) [concrete = constants.%struct.c94] // CHECK:STDOUT: %.loc16_36.3: %struct_type.b.86f = converted %.loc16_36.1, %struct [concrete = constants.%struct.c94] @@ -3479,6 +3486,7 @@ fn F() { // CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.F.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness.fd8: = lookup_impl_witness %.Self, @I [symbolic_self] @@ -3508,6 +3516,7 @@ fn F() { // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %tuple.type.784: type = tuple_type (bool, bool) [concrete] +// CHECK:STDOUT: %tuple.a9a: %tuple.type.784 = tuple_value (%true, %false) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] @@ -3551,7 +3560,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -3670,7 +3679,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] -// CHECK:STDOUT: %.loc9_61.1: %tuple.type.784 = tuple_literal (%true, %false) +// CHECK:STDOUT: %.loc9_61.1: %tuple.type.784 = tuple_literal (%true, %false) [concrete = constants.%tuple.a9a] // CHECK:STDOUT: %impl.elem0.loc9_50: %.05c = impl_witness_access constants.%Copy.impl_witness.a56, element0 [concrete = constants.%bool.as.Copy.impl.Op] // CHECK:STDOUT: %bound_method.loc9_50: = bound_method %true, %impl.elem0.loc9_50 [concrete = constants.%bool.as.Copy.impl.Op.bound.5ee] // CHECK:STDOUT: %bool.as.Copy.impl.Op.call.loc9_50: init bool = call %bound_method.loc9_50(%true) [concrete = constants.%true] @@ -3751,6 +3760,7 @@ fn F() { // CHECK:STDOUT: %Z.impl_witness.490: = impl_witness file.%Z.impl_witness_table, @T.as.Z.impl(%D) [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %D, (%Z.impl_witness.490) [concrete] // CHECK:STDOUT: %pattern_type.7f8: type = pattern_type %C.131 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C.131 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -3874,7 +3884,7 @@ fn F() { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %pattern_type.7f8 = value_binding_pattern a [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc12_21.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_21.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %D.ref.loc12_28: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%D) [concrete = constants.%C.131] diff --git a/toolchain/check/testdata/index/array_element_access.carbon b/toolchain/check/testdata/index/array_element_access.carbon index 23e0dd558051..3043d09daa45 100644 --- a/toolchain/check/testdata/index/array_element_access.carbon +++ b/toolchain/check/testdata/index/array_element_access.carbon @@ -31,6 +31,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %int_24.e3c: Core.IntLiteral = int_value 24 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.dac: %tuple.type.f94 = tuple_value (%int_12.6a3, %int_24.e3c) [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -146,7 +147,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] // CHECK:STDOUT: %int_24: Core.IntLiteral = int_value 24 [concrete = constants.%int_24.e3c] -// CHECK:STDOUT: %.loc15_31.1: %tuple.type.f94 = tuple_literal (%int_12, %int_24) +// CHECK:STDOUT: %.loc15_31.1: %tuple.type.f94 = tuple_literal (%int_12, %int_24) [concrete = constants.%tuple.dac] // CHECK:STDOUT: %impl.elem0.loc15_31.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_31.1: = bound_method %int_12, %impl.elem0.loc15_31.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.8b3] // CHECK:STDOUT: %specific_fn.loc15_31.1: = specific_function %impl.elem0.loc15_31.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index 707bc2e3cccb..85620980affb 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -51,6 +51,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.2d5: %tuple.type.37f = tuple_value (%int_1.5b8, %int_2.ecc, %int_3.1ba) [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -188,7 +189,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_1.loc18_27: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc18_30: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_3.loc18_33: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc18_34.1: %tuple.type.37f = tuple_literal (%int_1.loc18_27, %int_2.loc18_30, %int_3.loc18_33) +// CHECK:STDOUT: %.loc18_34.1: %tuple.type.37f = tuple_literal (%int_1.loc18_27, %int_2.loc18_30, %int_3.loc18_33) [concrete = constants.%tuple.2d5] // CHECK:STDOUT: %impl.elem0.loc18_34.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc18_34.1: = bound_method %int_1.loc18_27, %impl.elem0.loc18_34.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc18_34.1: = specific_function %impl.elem0.loc18_34.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -299,7 +300,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_1.loc26_27: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc26_30: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_3.loc26_33: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc26_34.1: %tuple.type.37f = tuple_literal (%int_1.loc26_27, %int_2.loc26_30, %int_3.loc26_33) +// CHECK:STDOUT: %.loc26_34.1: %tuple.type.37f = tuple_literal (%int_1.loc26_27, %int_2.loc26_30, %int_3.loc26_33) [concrete = constants.%tuple.2d5] // CHECK:STDOUT: %impl.elem0.loc26_34.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc26_34.1: = bound_method %int_1.loc26_27, %impl.elem0.loc26_34.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc26_34.1: = specific_function %impl.elem0.loc26_34.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/index/fail_array_large_index.carbon b/toolchain/check/testdata/index/fail_array_large_index.carbon index fd16dbd50f27..283103cdb696 100644 --- a/toolchain/check/testdata/index/fail_array_large_index.carbon +++ b/toolchain/check/testdata/index/fail_array_large_index.carbon @@ -39,6 +39,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %pattern_type.a98: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.3bc: %tuple.type.985 = tuple_value (%int_12.6a3) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -139,7 +140,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] -// CHECK:STDOUT: %.loc15_28.1: %tuple.type.985 = tuple_literal (%int_12) +// CHECK:STDOUT: %.loc15_28.1: %tuple.type.985 = tuple_literal (%int_12) [concrete = constants.%tuple.3bc] // CHECK:STDOUT: %impl.elem0.loc15: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.8b3] // CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon index eec421b32ea8..88d96bc0f2e1 100644 --- a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon @@ -35,6 +35,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: %pattern_type.a98: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.3bc: %tuple.type.985 = tuple_value (%int_12.6a3) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -118,7 +119,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] -// CHECK:STDOUT: %.loc15_28.1: %tuple.type.985 = tuple_literal (%int_12) +// CHECK:STDOUT: %.loc15_28.1: %tuple.type.985 = tuple_literal (%int_12) [concrete = constants.%tuple.3bc] // CHECK:STDOUT: %impl.elem0.loc15: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon index 229252afa5bd..30be9a7fd68b 100644 --- a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon @@ -32,6 +32,7 @@ var b: i32 = a[1]; // CHECK:STDOUT: %pattern_type.a98: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.3bc: %tuple.type.985 = tuple_value (%int_12.6a3) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -117,7 +118,7 @@ var b: i32 = a[1]; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] -// CHECK:STDOUT: %.loc15_28.1: %tuple.type.985 = tuple_literal (%int_12) +// CHECK:STDOUT: %.loc15_28.1: %tuple.type.985 = tuple_literal (%int_12) [concrete = constants.%tuple.3bc] // CHECK:STDOUT: %impl.elem0.loc15: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.8b3] // CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/index/fail_invalid_base.carbon b/toolchain/check/testdata/index/fail_invalid_base.carbon index 4ce6ea31f00e..302cc1e24ae3 100644 --- a/toolchain/check/testdata/index/fail_invalid_base.carbon +++ b/toolchain/check/testdata/index/fail_invalid_base.carbon @@ -137,7 +137,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: assign file.%b.var, // CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %.loc34_29.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc34, %int_2) +// CHECK:STDOUT: %.loc34_29.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc34, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %int_0.loc34: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.loc34, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %.loc34_29.2: %struct_type.a.b.cfd = converted %.loc34_29.1, %struct [concrete = constants.%struct] diff --git a/toolchain/check/testdata/index/fail_negative_indexing.carbon b/toolchain/check/testdata/index/fail_negative_indexing.carbon index 02f74637552a..39e0d4c5ee0d 100644 --- a/toolchain/check/testdata/index/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/index/fail_negative_indexing.carbon @@ -33,6 +33,7 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %pattern_type.ae7: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.df5b: %tuple.type.f94 = tuple_value (%int_42.20e, %int_42.20e) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -135,7 +136,7 @@ var d: i32 = c[-10]; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_42.loc15_25: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] // CHECK:STDOUT: %int_42.loc15_29: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] -// CHECK:STDOUT: %.loc15_31.1: %tuple.type.f94 = tuple_literal (%int_42.loc15_25, %int_42.loc15_29) +// CHECK:STDOUT: %.loc15_31.1: %tuple.type.f94 = tuple_literal (%int_42.loc15_25, %int_42.loc15_29) [concrete = constants.%tuple.df5b] // CHECK:STDOUT: %impl.elem0.loc15_31.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_31.1: = bound_method %int_42.loc15_25, %impl.elem0.loc15_31.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.134] // CHECK:STDOUT: %specific_fn.loc15_31.1: = specific_function %impl.elem0.loc15_31.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon index 94684ce9e744..714fbbac40bc 100644 --- a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon +++ b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon @@ -52,6 +52,7 @@ fn H() { // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%empty_struct_type) [concrete] // CHECK:STDOUT: %I.type.399: type = facet_type <@I, @I(%empty_struct_type)> [concrete] // CHECK:STDOUT: %Self.32d: %I.type.399 = symbolic_binding Self, 1 [symbolic] @@ -150,7 +151,7 @@ fn H() { // CHECK:STDOUT: fn @H() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %.loc27_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc27_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc27_7: type = converted %.loc27_6, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%empty_struct_type) [concrete = constants.%G.specific_fn] // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn() diff --git a/toolchain/check/testdata/interface/compound_member_access.carbon b/toolchain/check/testdata/interface/compound_member_access.carbon index edd46a4c9c9a..1afe099e2b01 100644 --- a/toolchain/check/testdata/interface/compound_member_access.carbon +++ b/toolchain/check/testdata/interface/compound_member_access.carbon @@ -1789,6 +1789,7 @@ fn Works() { // CHECK:STDOUT: %A.facet: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %Fails.type: type = fn_type @Fails [concrete] // CHECK:STDOUT: %Fails: %Fails.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] @@ -1885,7 +1886,7 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Fails() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc22_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc22_5.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc22_5.3: init %C = class_init (), %.loc22_5.2 [concrete = constants.%C.val] @@ -1898,7 +1899,7 @@ fn Works() { // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc22: init type = call %bound_method.loc22_17(%A.ref.loc22_15, %A.ref.loc22_19) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc22: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc22_12: %A.type = converted %.loc22_7, [concrete = ] -// CHECK:STDOUT: %.loc30_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc30_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc30_11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc30_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc30_6.3: init %C = class_init (), %.loc30_6.2 [concrete = constants.%C.val] @@ -1923,7 +1924,7 @@ fn Works() { // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc30_37: init type = call %bound_method.loc30_37(%A.ref.loc30_35, %A.ref.loc30_39) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc30: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc30_32: %A.type = converted %.loc30_8, [concrete = ] -// CHECK:STDOUT: %.loc38_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc38_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc38_11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc38_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc38_6.3: init %C = class_init (), %.loc38_6.2 [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/interface/compound_member_access_addr.carbon b/toolchain/check/testdata/interface/compound_member_access_addr.carbon index 4720457071f2..216794955a4d 100644 --- a/toolchain/check/testdata/interface/compound_member_access_addr.carbon +++ b/toolchain/check/testdata/interface/compound_member_access_addr.carbon @@ -1185,6 +1185,7 @@ fn Works() { // CHECK:STDOUT: %A.facet: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %Fails.type: type = fn_type @Fails [concrete] // CHECK:STDOUT: %Fails: %Fails.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] @@ -1281,7 +1282,7 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Fails() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc22_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc22_5.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc22_5.3: init %C = class_init (), %.loc22_5.2 [concrete = constants.%C.val] @@ -1294,7 +1295,7 @@ fn Works() { // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc22: init type = call %bound_method.loc22_17(%A.ref.loc22_15, %A.ref.loc22_19) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc22: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc22_12: %A.type = converted %.loc22_7, [concrete = ] -// CHECK:STDOUT: %.loc30_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc30_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc30_11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc30_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc30_6.3: init %C = class_init (), %.loc30_6.2 [concrete = constants.%C.val] @@ -1319,7 +1320,7 @@ fn Works() { // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc30_37: init type = call %bound_method.loc30_37(%A.ref.loc30_35, %A.ref.loc30_39) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc30: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc30_32: %A.type = converted %.loc30_8, [concrete = ] -// CHECK:STDOUT: %.loc38_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc38_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref.loc38_11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc38_6.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc38_6.3: init %C = class_init (), %.loc38_6.2 [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/interface/default_fn.carbon b/toolchain/check/testdata/interface/default_fn.carbon index c669055c13c2..94dc6f541f43 100644 --- a/toolchain/check/testdata/interface/default_fn.carbon +++ b/toolchain/check/testdata/interface/default_fn.carbon @@ -48,6 +48,7 @@ class C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.ccb: = require_complete_type %Self.binding.as_type.b2d [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.fa9: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -150,7 +151,7 @@ class C { // CHECK:STDOUT: %c.var_patt: %pattern_type.c48 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt -// CHECK:STDOUT: %.loc20_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc20_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc20_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc20_7: init %C = converted %.loc20_19.1, %.loc20_19.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign %c.var, %.loc20_7 diff --git a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon index f57e994e20cb..7072f14c0790 100644 --- a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon @@ -294,6 +294,7 @@ interface C { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.55f [symbolic_self] // CHECK:STDOUT: %I2.lookup_impl_witness.32c: = lookup_impl_witness %.Self.55f, @I2 [symbolic_self] // CHECK:STDOUT: %impl.elem0.077: type = impl_witness_access %I2.lookup_impl_witness.32c, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I2_where.type: type = facet_type <@I2 where %impl.elem0.077 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I2.impl_witness.7b7f96.1: = impl_witness file.%I2.impl_witness_table, @V.binding.as_type.as.I2.impl(%V) [symbolic] // CHECK:STDOUT: %Self.4d7: %J2.type = symbolic_binding Self, 0 [symbolic] @@ -337,7 +338,7 @@ interface C { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc11_36: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I2.lookup_impl_witness.32c, element0 [symbolic_self = constants.%impl.elem0.077] -// CHECK:STDOUT: %.loc11_43.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_43.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_43.2: type = converted %.loc11_43.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc11_30: type = where_expr %.Self.1 [concrete = constants.%I2_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I2.type diff --git a/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon b/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon index c50ac0ce63eb..cb14ebae00c3 100644 --- a/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon +++ b/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon @@ -61,6 +61,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: %Self.36a: %Generic.type.29a = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %DifferentParams.type.d40e5c.1: type = generic_interface_type @DifferentParams.loc35 [concrete] // CHECK:STDOUT: %DifferentParams.generic.d33670.1: %DifferentParams.type.d40e5c.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %T.d76: %empty_tuple.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %DifferentParams.type.d40e5c.2: type = generic_interface_type @DifferentParams.loc43 [concrete] @@ -100,7 +101,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc43_32.1: type = splice_block %.loc43_32.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc43_32.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc43_32.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc43_32.3: type = converted %.loc43_32.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc43_27.2: %empty_tuple.type = symbolic_binding T, 0 [symbolic = %T.loc43_27.1 (constants.%T.d76)] diff --git a/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon b/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon index c16987ca7791..393bc605f5cd 100644 --- a/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon +++ b/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon @@ -36,6 +36,7 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -50,7 +51,7 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -60,6 +61,7 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: %.Self: type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -83,7 +85,7 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon index bdcd36697831..8bb41ef05234 100644 --- a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon +++ b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon @@ -37,6 +37,7 @@ interface I { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [concrete] // CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [concrete] @@ -88,7 +89,7 @@ interface I { // CHECK:STDOUT: %i32.loc20_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc20_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20_35: %tuple.type.24b = tuple_literal (%i32.loc20_27, %i32.loc20_32) +// CHECK:STDOUT: %.loc20_35: %tuple.type.24b = tuple_literal (%i32.loc20_27, %i32.loc20_32) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc20_36: type = converted %.loc20_35, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] { diff --git a/toolchain/check/testdata/interface/generic.carbon b/toolchain/check/testdata/interface/generic.carbon index 42f372abd79a..a340c576136d 100644 --- a/toolchain/check/testdata/interface/generic.carbon +++ b/toolchain/check/testdata/interface/generic.carbon @@ -114,6 +114,7 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: %C.as.WithAssocFn.impl.F.type: type = fn_type @C.as.WithAssocFn.impl.F [concrete] // CHECK:STDOUT: %C.as.WithAssocFn.impl.F: %C.as.WithAssocFn.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %WithAssocFn.facet: %WithAssocFn.type.fc9 = facet_value %C, (%WithAssocFn.impl_witness) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] // CHECK:STDOUT: %N: %T.d9f = symbolic_binding N, 1 [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T.d9f [symbolic] @@ -310,7 +311,7 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.WithAssocFn.impl.F() -> %return.param: %X { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc17_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc17_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), %return [concrete = constants.%X.val] // CHECK:STDOUT: %.loc17_16: init %X = converted %.loc17_15.1, %.loc17_15.2 [concrete = constants.%X.val] // CHECK:STDOUT: return %.loc17_16 to %return @@ -551,6 +552,7 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete] // CHECK:STDOUT: %Generic.type.68b: type = facet_type <@Generic, @Generic(%T)> [symbolic] // CHECK:STDOUT: %Self: %Generic.type.68b = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -572,8 +574,8 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: %.1: = splice_block [concrete = ] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] -// CHECK:STDOUT: %.loc12_19: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_23: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_19: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc12_23: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: } // CHECK:STDOUT: %T: = symbolic_binding T, 0 [concrete = ] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index db84b7a2cecb..eb825e41c7c0 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -99,6 +99,7 @@ fn CallIndirect() { // CHECK:STDOUT: %ptr.e49: type = ptr_type %U.63a [symbolic] // CHECK:STDOUT: %pattern_type.854: type = pattern_type %ptr.e49 [symbolic] // CHECK:STDOUT: %tuple.type.004: type = tuple_type (type, %A.type.c1c, type) [symbolic] +// CHECK:STDOUT: %tuple.957: %tuple.type.004 = tuple_value (%T.d9f, %Self.27c, %ptr.e49) [symbolic] // CHECK:STDOUT: %Self.binding.as_type.410: type = symbolic_binding_type Self, 1, %Self.27c [symbolic] // CHECK:STDOUT: %tuple.type.235: type = tuple_type (%T.d9f, %Self.binding.as_type.410, %ptr.e49) [symbolic] // CHECK:STDOUT: %pattern_type.85c: type = pattern_type %tuple.type.235 [symbolic] @@ -122,14 +123,17 @@ fn CallIndirect() { // CHECK:STDOUT: %ptr.4f0b5c.1: type = ptr_type %U.d9f [symbolic] // CHECK:STDOUT: %pattern_type.a603a0.1: type = pattern_type %ptr.4f0b5c.1 [symbolic] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] +// CHECK:STDOUT: %tuple.bcf: %tuple.type.ff9 = tuple_value (%X, %Y, %ptr.4f0b5c.1) [symbolic] // CHECK:STDOUT: %tuple.type.576: type = tuple_type (%X, %Y, %ptr.4f0b5c.1) [symbolic] // CHECK:STDOUT: %pattern_type.e0b: type = pattern_type %tuple.type.576 [symbolic] // CHECK:STDOUT: %Y.as.A.impl.F.type: type = fn_type @Y.as.A.impl.F [concrete] // CHECK:STDOUT: %Y.as.A.impl.F: %Y.as.A.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet: %A.type.0a4 = facet_value %Y, (%A.impl_witness) [concrete] // CHECK:STDOUT: %tuple.type.5a1: type = tuple_type (type, %A.type.0a4, type) [concrete] +// CHECK:STDOUT: %tuple.059: %tuple.type.5a1 = tuple_value (%X, %A.facet, %ptr.4f0b5c.1) [symbolic] // CHECK:STDOUT: %require_complete.dc0: = require_complete_type %tuple.type.576 [symbolic] // CHECK:STDOUT: %require_complete.482d3f.1: = require_complete_type %ptr.4f0b5c.1 [symbolic] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.f88: type = tuple_type (%empty_struct_type, %empty_struct_type, %ptr.4f0b5c.1) [symbolic] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] // CHECK:STDOUT: %Y.val: %Y = struct_value () [concrete] @@ -148,6 +152,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.d35: type = fn_type_with_self_type %A.F.type.13d, %A.facet [concrete] // CHECK:STDOUT: %ptr.fb6: type = ptr_type %Z [concrete] // CHECK:STDOUT: %pattern_type.f76: type = pattern_type %ptr.fb6 [concrete] +// CHECK:STDOUT: %tuple.f10: %tuple.type.ff9 = tuple_value (%X, %Y, %ptr.fb6) [concrete] // CHECK:STDOUT: %tuple.type.092: type = tuple_type (%X, %Y, %ptr.fb6) [concrete] // CHECK:STDOUT: %pattern_type.48d: type = pattern_type %tuple.type.092 [concrete] // CHECK:STDOUT: %Y.as.A.impl.F.specific_fn: = specific_function %Y.as.A.impl.F, @Y.as.A.impl.F(%Z) [concrete] @@ -179,6 +184,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.fb1, @A, @A(%X) [symbolic] // CHECK:STDOUT: %.6ed: type = fn_type_with_self_type %A.F.type.13d, %T.fb1 [symbolic] // CHECK:STDOUT: %impl.elem0.9bb: %.6ed = impl_witness_access %A.lookup_impl_witness, element0 [symbolic] +// CHECK:STDOUT: %tuple.9aa: %tuple.type.5a1 = tuple_value (%X, %T.fb1, %ptr.fb6) [symbolic] // CHECK:STDOUT: %tuple.type.86a: type = tuple_type (%X, %T.binding.as_type.3a2, %ptr.fb6) [symbolic] // CHECK:STDOUT: %pattern_type.bf2: type = pattern_type %tuple.type.86a [symbolic] // CHECK:STDOUT: %specific_impl_fn.0b2: = specific_impl_function %impl.elem0.9bb, @A.F(%X, %T.fb1, %Z) [symbolic] @@ -203,6 +209,7 @@ fn CallIndirect() { // CHECK:STDOUT: %Copy.facet.347: %Copy.type = facet_value %ptr.fb6, (%Copy.impl_witness.f1c) [concrete] // CHECK:STDOUT: %.90e: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.347 [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: = specific_function %ptr.as.Copy.impl.Op.525, @ptr.as.Copy.impl.Op(%Z) [concrete] +// CHECK:STDOUT: %tuple.22b: %tuple.type.5a1 = tuple_value (%X, %A.facet, %ptr.fb6) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -289,9 +296,9 @@ fn CallIndirect() { // CHECK:STDOUT: %Self.ref: @A.F.%A.type (%A.type.c1c) = name_ref Self, %.loc6_32 [symbolic = %Self (constants.%Self.27c)] // CHECK:STDOUT: %U.ref.loc6_38: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.63a)] // CHECK:STDOUT: %ptr.loc6_39: type = ptr_type %U.ref.loc6_38 [symbolic = %ptr.loc6_22.1 (constants.%ptr.e49)] -// CHECK:STDOUT: %.loc6_40.1: @A.F.%tuple.type.loc6_40.1 (%tuple.type.004) = tuple_literal (%T.ref, %Self.ref, %ptr.loc6_39) -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.ref [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] -// CHECK:STDOUT: %.loc6_40.2: type = converted %Self.ref, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] +// CHECK:STDOUT: %.loc6_40.1: @A.F.%tuple.type.loc6_40.1 (%tuple.type.004) = tuple_literal (%T.ref, %Self.ref, %ptr.loc6_39) [symbolic = %tuple (constants.%tuple.957)] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type constants.%Self.27c [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] +// CHECK:STDOUT: %.loc6_40.2: type = converted constants.%Self.27c, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] // CHECK:STDOUT: %.loc6_40.3: type = converted %.loc6_40.1, constants.%tuple.type.235 [symbolic = %tuple.type.loc6_40.2 (constants.%tuple.type.235)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc6_8.2: type = symbolic_binding U, 2 [symbolic = %U.loc6_8.1 (constants.%U.63a)] @@ -328,7 +335,7 @@ fn CallIndirect() { // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y] // CHECK:STDOUT: %U.ref.loc16_35: type = name_ref U, %U.loc16_8.2 [symbolic = %U.loc16_8.1 (constants.%U.d9f)] // CHECK:STDOUT: %ptr.loc16_36: type = ptr_type %U.ref.loc16_35 [symbolic = %ptr.loc16_22.1 (constants.%ptr.4f0b5c.1)] -// CHECK:STDOUT: %.loc16_37.1: %tuple.type.ff9 = tuple_literal (%X.ref, %Y.ref, %ptr.loc16_36) +// CHECK:STDOUT: %.loc16_37.1: %tuple.type.ff9 = tuple_literal (%X.ref, %Y.ref, %ptr.loc16_36) [symbolic = %tuple (constants.%tuple.bcf)] // CHECK:STDOUT: %.loc16_37.2: type = converted %.loc16_37.1, constants.%tuple.type.576 [symbolic = %tuple.type.loc16 (constants.%tuple.type.576)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc16_8.2: type = symbolic_binding U, 0 [symbolic = %U.loc16_8.1 (constants.%U.d9f)] @@ -381,6 +388,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%T)> [symbolic = %A.type (constants.%A.type.c1c)] // CHECK:STDOUT: %Self: @A.F.%A.type (%A.type.c1c) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.27c)] // CHECK:STDOUT: %tuple.type.loc6_40.1: type = tuple_type (type, %A.type, type) [symbolic = %tuple.type.loc6_40.1 (constants.%tuple.type.004)] +// CHECK:STDOUT: %tuple: @A.F.%tuple.type.loc6_40.1 (%tuple.type.004) = tuple_value (%T, %Self, %ptr.loc6_22.1) [symbolic = %tuple (constants.%tuple.957)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] // CHECK:STDOUT: %tuple.type.loc6_40.2: type = tuple_type (%T, %Self.binding.as_type, %ptr.loc6_22.1) [symbolic = %tuple.type.loc6_40.2 (constants.%tuple.type.235)] // CHECK:STDOUT: %pattern_type.loc6_25: type = pattern_type %tuple.type.loc6_40.2 [symbolic = %pattern_type.loc6_25 (constants.%pattern_type.85c)] @@ -392,6 +400,7 @@ fn CallIndirect() { // CHECK:STDOUT: %U.loc16_8.1: type = symbolic_binding U, 0 [symbolic = %U.loc16_8.1 (constants.%U.d9f)] // CHECK:STDOUT: %ptr.loc16_22.1: type = ptr_type %U.loc16_8.1 [symbolic = %ptr.loc16_22.1 (constants.%ptr.4f0b5c.1)] // CHECK:STDOUT: %pattern_type.loc16_18: type = pattern_type %ptr.loc16_22.1 [symbolic = %pattern_type.loc16_18 (constants.%pattern_type.a603a0.1)] +// CHECK:STDOUT: %tuple: %tuple.type.ff9 = tuple_value (constants.%X, constants.%Y, %ptr.loc16_22.1) [symbolic = %tuple (constants.%tuple.bcf)] // CHECK:STDOUT: %tuple.type.loc16: type = tuple_type (constants.%X, constants.%Y, %ptr.loc16_22.1) [symbolic = %tuple.type.loc16 (constants.%tuple.type.576)] // CHECK:STDOUT: %pattern_type.loc16_25: type = pattern_type %tuple.type.loc16 [symbolic = %pattern_type.loc16_25 (constants.%pattern_type.e0b)] // CHECK:STDOUT: @@ -407,8 +416,8 @@ fn CallIndirect() { // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @Y.as.A.impl.F.%ptr.loc16_22.1 (%ptr.4f0b5c.1)) -> %return.param: @Y.as.A.impl.F.%tuple.type.loc16 (%tuple.type.576) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc17_14.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc17_18.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc17_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc17_18.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %u.ref: @Y.as.A.impl.F.%ptr.loc16_22.1 (%ptr.4f0b5c.1) = name_ref u, %u // CHECK:STDOUT: %.loc17_22.1: @Y.as.A.impl.F.%tuple.type.loc17 (%tuple.type.f88) = tuple_literal (%.loc17_14.1, %.loc17_18.1, %u.ref) // CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %return, element0 @@ -551,6 +560,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.c1c // CHECK:STDOUT: %Self => constants.%Self.27c // CHECK:STDOUT: %tuple.type.loc6_40.1 => constants.%tuple.type.004 +// CHECK:STDOUT: %tuple => constants.%tuple.957 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.410 // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.235 // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.85c @@ -572,6 +582,7 @@ fn CallIndirect() { // CHECK:STDOUT: %U.loc16_8.1 => constants.%U.d9f // CHECK:STDOUT: %ptr.loc16_22.1 => constants.%ptr.4f0b5c.1 // CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.a603a0.1 +// CHECK:STDOUT: %tuple => constants.%tuple.bcf // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.576 // CHECK:STDOUT: %pattern_type.loc16_25 => constants.%pattern_type.e0b // CHECK:STDOUT: } @@ -584,6 +595,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.0a4 // CHECK:STDOUT: %Self => constants.%A.facet // CHECK:STDOUT: %tuple.type.loc6_40.1 => constants.%tuple.type.5a1 +// CHECK:STDOUT: %tuple => constants.%tuple.059 // CHECK:STDOUT: %Self.binding.as_type => constants.%Y // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.576 // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.e0b @@ -593,6 +605,7 @@ fn CallIndirect() { // CHECK:STDOUT: %U.loc16_8.1 => constants.%Z // CHECK:STDOUT: %ptr.loc16_22.1 => constants.%ptr.fb6 // CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.f76 +// CHECK:STDOUT: %tuple => constants.%tuple.f10 // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.092 // CHECK:STDOUT: %pattern_type.loc16_25 => constants.%pattern_type.48d // CHECK:STDOUT: @@ -619,6 +632,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.0a4 // CHECK:STDOUT: %Self => constants.%T.fb1 // CHECK:STDOUT: %tuple.type.loc6_40.1 => constants.%tuple.type.5a1 +// CHECK:STDOUT: %tuple => constants.%tuple.9aa // CHECK:STDOUT: %Self.binding.as_type => constants.%T.binding.as_type.3a2 // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.86a // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.bf2 @@ -654,6 +668,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.0a4 // CHECK:STDOUT: %Self => constants.%A.facet // CHECK:STDOUT: %tuple.type.loc6_40.1 => constants.%tuple.type.5a1 +// CHECK:STDOUT: %tuple => constants.%tuple.22b // CHECK:STDOUT: %Self.binding.as_type => constants.%Y // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.092 // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.48d @@ -674,6 +689,7 @@ fn CallIndirect() { // CHECK:STDOUT: %U.63a: type = symbolic_binding U, 2 [symbolic] // CHECK:STDOUT: %pattern_type.533: type = pattern_type %U.63a [symbolic] // CHECK:STDOUT: %tuple.type.004: type = tuple_type (type, %A.type.c1c, type) [symbolic] +// CHECK:STDOUT: %tuple.302: %tuple.type.004 = tuple_value (%T.d9f, %Self.27c, %U.63a) [symbolic] // CHECK:STDOUT: %Self.binding.as_type.410: type = symbolic_binding_type Self, 1, %Self.27c [symbolic] // CHECK:STDOUT: %tuple.type.e5f: type = tuple_type (%T.d9f, %Self.binding.as_type.410, %U.63a) [symbolic] // CHECK:STDOUT: %pattern_type.845: type = pattern_type %tuple.type.e5f [symbolic] @@ -691,6 +707,7 @@ fn CallIndirect() { // CHECK:STDOUT: %V2: type = symbolic_binding V2, 1 [symbolic] // CHECK:STDOUT: %W: type = symbolic_binding W, 2 [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.225: %tuple.type.24b = tuple_value (%V1, %V2) [symbolic] // CHECK:STDOUT: %tuple.type.d18: type = tuple_type (%V1, %V2) [symbolic] // CHECK:STDOUT: %A.type.2ec: type = facet_type <@A, @A(%W)> [symbolic] // CHECK:STDOUT: %Self.b6c: %A.type.2ec = symbolic_binding Self, 1 [symbolic] @@ -703,17 +720,20 @@ fn CallIndirect() { // CHECK:STDOUT: %U.800: type = symbolic_binding U, 3 [symbolic] // CHECK:STDOUT: %pattern_type.332: type = pattern_type %U.800 [symbolic] // CHECK:STDOUT: %tuple.type.11f: type = tuple_type (type, %tuple.type.24b, type) [concrete] +// CHECK:STDOUT: %tuple.884: %tuple.type.11f = tuple_value (%W, %tuple.225, %U.800) [symbolic] // CHECK:STDOUT: %tuple.type.d16: type = tuple_type (%W, %tuple.type.d18, %U.800) [symbolic] // CHECK:STDOUT: %pattern_type.cbb: type = pattern_type %tuple.type.d16 [symbolic] // CHECK:STDOUT: %tuple.type.as.A.impl.F.type.172: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic] // CHECK:STDOUT: %tuple.type.as.A.impl.F.c93: %tuple.type.as.A.impl.F.type.172 = struct_value () [symbolic] // CHECK:STDOUT: %A.facet.6f0: %A.type.2ec = facet_value %tuple.type.d18, (%A.impl_witness.2bc) [symbolic] // CHECK:STDOUT: %tuple.type.e39: type = tuple_type (type, %A.type.2ec, type) [symbolic] +// CHECK:STDOUT: %tuple.a53: %tuple.type.e39 = tuple_value (%W, %A.facet.6f0, %U.800) [symbolic] // CHECK:STDOUT: %require_complete.923: = require_complete_type %tuple.type.d16 [symbolic] // CHECK:STDOUT: %require_complete.997: = require_complete_type %U.800 [symbolic] // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.5bf: = specific_function %tuple.type.as.A.impl.F.c93, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.800) [symbolic] // CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete] // CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete] +// CHECK:STDOUT: %tuple.821: %tuple.type.24b = tuple_value (%Y1, %Y2) [concrete] // CHECK:STDOUT: %tuple.type.a46: type = tuple_type (%Y1, %Y2) [concrete] // CHECK:STDOUT: %A.type.0a4: type = facet_type <@A, @A(%X)> [concrete] // CHECK:STDOUT: %Self.789: %A.type.0a4 = symbolic_binding Self, 1 [symbolic] @@ -727,7 +747,9 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.as.A.impl.F.735: %tuple.type.as.A.impl.F.type.415 = struct_value () [concrete] // CHECK:STDOUT: %A.facet.f26: %A.type.0a4 = facet_value %tuple.type.a46, (%A.impl_witness.be7) [concrete] // CHECK:STDOUT: %.a2b: type = fn_type_with_self_type %A.F.type.13d, %A.facet.f26 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.8f9: type = pattern_type %Z [concrete] +// CHECK:STDOUT: %tuple.fb6: %tuple.type.11f = tuple_value (%X, %tuple.821, %Z) [concrete] // CHECK:STDOUT: %tuple.type.415: type = tuple_type (%X, %tuple.type.a46, %Z) [concrete] // CHECK:STDOUT: %pattern_type.0b2: type = pattern_type %tuple.type.415 [concrete] // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.5c5: = specific_function %tuple.type.as.A.impl.F.735, @tuple.type.as.A.impl.F(%Y1, %Y2, %X, %Z) [concrete] @@ -761,6 +783,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.6ed: type = fn_type_with_self_type %A.F.type.13d, %T.fb1 [symbolic] // CHECK:STDOUT: %impl.elem0: %.6ed = impl_witness_access %A.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %tuple.type.5a1: type = tuple_type (type, %A.type.0a4, type) [concrete] +// CHECK:STDOUT: %tuple.3f6: %tuple.type.5a1 = tuple_value (%X, %T.fb1, %Z) [symbolic] // CHECK:STDOUT: %tuple.type.bf3: type = tuple_type (%X, %T.binding.as_type, %Z) [symbolic] // CHECK:STDOUT: %pattern_type.e6a: type = pattern_type %tuple.type.bf3 [symbolic] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @A.F(%X, %T.fb1, %Z) [symbolic] @@ -778,6 +801,7 @@ fn CallIndirect() { // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete] // CHECK:STDOUT: %CallGeneric.specific_fn: = specific_function %CallGeneric, @CallGeneric(%A.facet.f26) [concrete] // CHECK:STDOUT: %complete_type.aa8: = complete_type_witness %tuple.type.415 [concrete] +// CHECK:STDOUT: %tuple.653: %tuple.type.5a1 = tuple_value (%X, %A.facet.f26, %Z) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -821,7 +845,7 @@ fn CallIndirect() { // CHECK:STDOUT: } { // CHECK:STDOUT: %V1.ref: type = name_ref V1, %V1.loc14_14.2 [symbolic = %V1.loc14_14.1 (constants.%V1)] // CHECK:STDOUT: %V2.ref: type = name_ref V2, %V2.loc14_25.2 [symbolic = %V2.loc14_25.1 (constants.%V2)] -// CHECK:STDOUT: %.loc14_53.1: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) +// CHECK:STDOUT: %.loc14_53.1: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %.loc14_53.2: type = converted %.loc14_53.1, constants.%tuple.type.d18 [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %A.ref: %A.type.495 = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %W.ref: type = name_ref W, %W.loc14_36.2 [symbolic = %W.loc14_36.1 (constants.%W)] @@ -874,9 +898,9 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc6_31: @A.F.%A.type (%A.type.c1c) = specific_constant @A.%Self.loc5_23.1, @A(constants.%T.d9f) [symbolic = %Self (constants.%Self.27c)] // CHECK:STDOUT: %Self.ref: @A.F.%A.type (%A.type.c1c) = name_ref Self, %.loc6_31 [symbolic = %Self (constants.%Self.27c)] // CHECK:STDOUT: %U.ref.loc6_37: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.63a)] -// CHECK:STDOUT: %.loc6_38.1: @A.F.%tuple.type.loc6_38.1 (%tuple.type.004) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.ref [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] -// CHECK:STDOUT: %.loc6_38.2: type = converted %Self.ref, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] +// CHECK:STDOUT: %.loc6_38.1: @A.F.%tuple.type.loc6_38.1 (%tuple.type.004) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) [symbolic = %tuple (constants.%tuple.302)] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type constants.%Self.27c [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] +// CHECK:STDOUT: %.loc6_38.2: type = converted constants.%Self.27c, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] // CHECK:STDOUT: %.loc6_38.3: type = converted %.loc6_38.1, constants.%tuple.type.e5f [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc6_8.2: type = symbolic_binding U, 2 [symbolic = %U.loc6_8.1 (constants.%U.63a)] @@ -902,6 +926,7 @@ fn CallIndirect() { // CHECK:STDOUT: %V1.loc14_14.1: type = symbolic_binding V1, 0 [symbolic = %V1.loc14_14.1 (constants.%V1)] // CHECK:STDOUT: %V2.loc14_25.1: type = symbolic_binding V2, 1 [symbolic = %V2.loc14_25.1 (constants.%V2)] // CHECK:STDOUT: %W.loc14_36.1: type = symbolic_binding W, 2 [symbolic = %W.loc14_36.1 (constants.%W)] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%V1.loc14_14.1, %V2.loc14_25.1) [symbolic = %tuple (constants.%tuple.225)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%V1.loc14_14.1, %V2.loc14_25.1) [symbolic = %tuple.type (constants.%tuple.type.d18)] // CHECK:STDOUT: %A.type.loc14_61.1: type = facet_type <@A, @A(%W.loc14_36.1)> [symbolic = %A.type.loc14_61.1 (constants.%A.type.2ec)] // CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc14_61.1 [symbolic = %require_complete (constants.%require_complete.4d8)] @@ -922,10 +947,10 @@ fn CallIndirect() { // CHECK:STDOUT: %W.ref: type = name_ref W, @tuple.type.as.A.impl.%W.loc14_36.2 [symbolic = %W (constants.%W)] // CHECK:STDOUT: %V1.ref: type = name_ref V1, @tuple.type.as.A.impl.%V1.loc14_14.2 [symbolic = %V1 (constants.%V1)] // CHECK:STDOUT: %V2.ref: type = name_ref V2, @tuple.type.as.A.impl.%V2.loc14_25.2 [symbolic = %V2 (constants.%V2)] -// CHECK:STDOUT: %.loc17_38: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) +// CHECK:STDOUT: %.loc17_38: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) [symbolic = %tuple.loc17_38 (constants.%tuple.225)] // CHECK:STDOUT: %U.ref.loc17_41: type = name_ref U, %U.loc17_8.2 [symbolic = %U.loc17_8.1 (constants.%U.800)] -// CHECK:STDOUT: %.loc17_42.1: %tuple.type.11f = tuple_literal (%W.ref, %.loc17_38, %U.ref.loc17_41) -// CHECK:STDOUT: %.loc17_42.2: type = converted %.loc17_38, constants.%tuple.type.d18 [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.d18)] +// CHECK:STDOUT: %.loc17_42.1: %tuple.type.11f = tuple_literal (%W.ref, %.loc17_38, %U.ref.loc17_41) [symbolic = %tuple.loc17_42 (constants.%tuple.884)] +// CHECK:STDOUT: %.loc17_42.2: type = converted constants.%tuple.225, constants.%tuple.type.d18 [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.d18)] // CHECK:STDOUT: %.loc17_42.3: type = converted %.loc17_42.1, constants.%tuple.type.d16 [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.d16)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc17_8.2: type = symbolic_binding U, 3 [symbolic = %U.loc17_8.1 (constants.%U.800)] @@ -984,6 +1009,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%T)> [symbolic = %A.type (constants.%A.type.c1c)] // CHECK:STDOUT: %Self: @A.F.%A.type (%A.type.c1c) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.27c)] // CHECK:STDOUT: %tuple.type.loc6_38.1: type = tuple_type (type, %A.type, type) [symbolic = %tuple.type.loc6_38.1 (constants.%tuple.type.004)] +// CHECK:STDOUT: %tuple: @A.F.%tuple.type.loc6_38.1 (%tuple.type.004) = tuple_value (%T, %Self, %U.loc6_8.1) [symbolic = %tuple (constants.%tuple.302)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.410)] // CHECK:STDOUT: %tuple.type.loc6_38.2: type = tuple_type (%T, %Self.binding.as_type, %U.loc6_8.1) [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.e5f)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %tuple.type.loc6_38.2 [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.845)] @@ -997,6 +1023,8 @@ fn CallIndirect() { // CHECK:STDOUT: %W: type = symbolic_binding W, 2 [symbolic = %W (constants.%W)] // CHECK:STDOUT: %V1: type = symbolic_binding V1, 0 [symbolic = %V1 (constants.%V1)] // CHECK:STDOUT: %V2: type = symbolic_binding V2, 1 [symbolic = %V2 (constants.%V2)] +// CHECK:STDOUT: %tuple.loc17_38: %tuple.type.24b = tuple_value (%V1, %V2) [symbolic = %tuple.loc17_38 (constants.%tuple.225)] +// CHECK:STDOUT: %tuple.loc17_42: %tuple.type.11f = tuple_value (%W, %tuple.loc17_38, %U.loc17_8.1) [symbolic = %tuple.loc17_42 (constants.%tuple.884)] // CHECK:STDOUT: %tuple.type.loc17_42.1: type = tuple_type (%V1, %V2) [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.d18)] // CHECK:STDOUT: %tuple.type.loc17_42.2: type = tuple_type (%W, %tuple.type.loc17_42.1, %U.loc17_8.1) [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.d16)] // CHECK:STDOUT: %pattern_type.loc17_24: type = pattern_type %tuple.type.loc17_42.2 [symbolic = %pattern_type.loc17_24 (constants.%pattern_type.cbb)] @@ -1025,7 +1053,7 @@ fn CallIndirect() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Y1.ref: type = name_ref Y1, file.%Y1.decl [concrete = constants.%Y1] // CHECK:STDOUT: %Y2.ref: type = name_ref Y2, file.%Y2.decl [concrete = constants.%Y2] -// CHECK:STDOUT: %.loc24_12: %tuple.type.24b = tuple_literal (%Y1.ref, %Y2.ref) +// CHECK:STDOUT: %.loc24_12: %tuple.type.24b = tuple_literal (%Y1.ref, %Y2.ref) [concrete = constants.%tuple.821] // CHECK:STDOUT: %.loc24_14: type = converted %.loc24_12, constants.%tuple.type.a46 [concrete = constants.%tuple.type.a46] // CHECK:STDOUT: %A.ref: %A.type.495 = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] @@ -1038,7 +1066,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc24_31.2: type = converted %.loc24_23, %as_type [concrete = constants.%tuple.type.a46] // CHECK:STDOUT: %impl.elem0: %.a2b = impl_witness_access constants.%A.impl_witness.be7, element0 [concrete = constants.%tuple.type.as.A.impl.F.735] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z] -// CHECK:STDOUT: %.loc24_38.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_38.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @tuple.type.as.A.impl.F(constants.%Y1, constants.%Y2, constants.%X, constants.%Z) [concrete = constants.%tuple.type.as.A.impl.F.specific_fn.5c5] // CHECK:STDOUT: %.loc24_39.1: ref %tuple.type.415 = temporary_storage // CHECK:STDOUT: %.loc24_38.2: ref %Z = temporary_storage @@ -1091,7 +1119,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc28_4.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc28_4.1: @CallGeneric.%.loc28_4.3 (%.6ed) = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_4.2 (constants.%impl.elem0)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z] -// CHECK:STDOUT: %.loc28_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc28_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %specific_impl_fn.loc28_4.1: = specific_impl_function %impl.elem0.loc28_4.1, @A.F(constants.%X, constants.%T.fb1, constants.%Z) [symbolic = %specific_impl_fn.loc28_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc28_12.1: ref @CallGeneric.%tuple.type (%tuple.type.bf3) = temporary_storage // CHECK:STDOUT: %.loc28_11.2: ref %Z = temporary_storage @@ -1121,7 +1149,7 @@ fn CallIndirect() { // CHECK:STDOUT: %CallGeneric.ref: %CallGeneric.type = name_ref CallGeneric, file.%CallGeneric.decl [concrete = constants.%CallGeneric] // CHECK:STDOUT: %Y1.ref: type = name_ref Y1, file.%Y1.decl [concrete = constants.%Y1] // CHECK:STDOUT: %Y2.ref: type = name_ref Y2, file.%Y2.decl [concrete = constants.%Y2] -// CHECK:STDOUT: %.loc33_22: %tuple.type.24b = tuple_literal (%Y1.ref, %Y2.ref) +// CHECK:STDOUT: %.loc33_22: %tuple.type.24b = tuple_literal (%Y1.ref, %Y2.ref) [concrete = constants.%tuple.821] // CHECK:STDOUT: %.loc33_24: type = converted %.loc33_22, constants.%tuple.type.a46 [concrete = constants.%tuple.type.a46] // CHECK:STDOUT: %A.facet: %A.type.0a4 = facet_value %.loc33_24, (constants.%A.impl_witness.be7) [concrete = constants.%A.facet.f26] // CHECK:STDOUT: %.loc33_31: %A.type.0a4 = converted %.loc33_24, %A.facet [concrete = constants.%A.facet.f26] @@ -1141,6 +1169,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.c1c // CHECK:STDOUT: %Self => constants.%Self.27c // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.004 +// CHECK:STDOUT: %tuple => constants.%tuple.302 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.410 // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.e5f // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.845 @@ -1162,6 +1191,7 @@ fn CallIndirect() { // CHECK:STDOUT: %V1.loc14_14.1 => constants.%V1 // CHECK:STDOUT: %V2.loc14_25.1 => constants.%V2 // CHECK:STDOUT: %W.loc14_36.1 => constants.%W +// CHECK:STDOUT: %tuple => constants.%tuple.225 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.d18 // CHECK:STDOUT: %A.type.loc14_61.1 => constants.%A.type.2ec // CHECK:STDOUT: %require_complete => constants.%require_complete.4d8 @@ -1178,6 +1208,8 @@ fn CallIndirect() { // CHECK:STDOUT: %W => constants.%W // CHECK:STDOUT: %V1 => constants.%V1 // CHECK:STDOUT: %V2 => constants.%V2 +// CHECK:STDOUT: %tuple.loc17_38 => constants.%tuple.225 +// CHECK:STDOUT: %tuple.loc17_42 => constants.%tuple.884 // CHECK:STDOUT: %tuple.type.loc17_42.1 => constants.%tuple.type.d18 // CHECK:STDOUT: %tuple.type.loc17_42.2 => constants.%tuple.type.d16 // CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.cbb @@ -1197,6 +1229,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.2ec // CHECK:STDOUT: %Self => constants.%A.facet.6f0 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.e39 +// CHECK:STDOUT: %tuple => constants.%tuple.a53 // CHECK:STDOUT: %Self.binding.as_type => constants.%tuple.type.d18 // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.d16 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.cbb @@ -1218,6 +1251,7 @@ fn CallIndirect() { // CHECK:STDOUT: %V1.loc14_14.1 => constants.%Y1 // CHECK:STDOUT: %V2.loc14_25.1 => constants.%Y2 // CHECK:STDOUT: %W.loc14_36.1 => constants.%X +// CHECK:STDOUT: %tuple => constants.%tuple.821 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a46 // CHECK:STDOUT: %A.type.loc14_61.1 => constants.%A.type.0a4 // CHECK:STDOUT: %require_complete => constants.%complete_type.e2d @@ -1234,6 +1268,8 @@ fn CallIndirect() { // CHECK:STDOUT: %W => constants.%X // CHECK:STDOUT: %V1 => constants.%Y1 // CHECK:STDOUT: %V2 => constants.%Y2 +// CHECK:STDOUT: %tuple.loc17_38 => constants.%tuple.821 +// CHECK:STDOUT: %tuple.loc17_42 => constants.%tuple.fb6 // CHECK:STDOUT: %tuple.type.loc17_42.1 => constants.%tuple.type.a46 // CHECK:STDOUT: %tuple.type.loc17_42.2 => constants.%tuple.type.415 // CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.0b2 @@ -1257,6 +1293,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.0a4 // CHECK:STDOUT: %Self => constants.%T.fb1 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.5a1 +// CHECK:STDOUT: %tuple => constants.%tuple.3f6 // CHECK:STDOUT: %Self.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.bf3 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.e6a @@ -1291,6 +1328,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.type => constants.%A.type.0a4 // CHECK:STDOUT: %Self => constants.%A.facet.f26 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.5a1 +// CHECK:STDOUT: %tuple => constants.%tuple.653 // CHECK:STDOUT: %Self.binding.as_type => constants.%tuple.type.a46 // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.415 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.0b2 diff --git a/toolchain/check/testdata/interface/local.carbon b/toolchain/check/testdata/interface/local.carbon index fe469672f350..2c531732c8ed 100644 --- a/toolchain/check/testdata/interface/local.carbon +++ b/toolchain/check/testdata/interface/local.carbon @@ -36,13 +36,14 @@ fn F() { // CHECK:STDOUT: %I.G: %I.G.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.G.decl [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @F.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.G.type: type = fn_type @empty_tuple.type.as.I.impl.G [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.G: %empty_tuple.type.as.I.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, (%I.impl_witness) [concrete] // CHECK:STDOUT: %.3db: type = fn_type_with_self_type %I.G.type, %I.facet [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.G.bound: = bound_method %empty_tuple, %empty_tuple.type.as.I.impl.G [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -95,17 +96,17 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { -// CHECK:STDOUT: %.loc19_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_9.2: type = converted %.loc19_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, @F.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.G.decl), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: %.loc22_4.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc22_4.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %G.ref: %I.assoc_type = name_ref G, @I.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %impl.elem0: %.3db = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.I.impl.G] -// CHECK:STDOUT: %bound_method: = bound_method %.loc22_4.1, %impl.elem0 +// CHECK:STDOUT: %bound_method: = bound_method %.loc22_4.1, %impl.elem0 [concrete = constants.%empty_tuple.type.as.I.impl.G.bound] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_4.2: %empty_tuple.type = converted %.loc22_4.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.G.call: init %empty_tuple.type = call %bound_method(%.loc22_4.2) diff --git a/toolchain/check/testdata/interface/require.carbon b/toolchain/check/testdata/interface/require.carbon index 9af35ed7bd26..015ab72d191e 100644 --- a/toolchain/check/testdata/interface/require.carbon +++ b/toolchain/check/testdata/interface/require.carbon @@ -472,6 +472,7 @@ interface Z(T:! type) { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -495,7 +496,7 @@ interface Z(T:! type) { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc7_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc7_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_32.2: type = converted %.loc7_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc7_19: type = where_expr %.Self [concrete = constants.%Y_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%Y.type diff --git a/toolchain/check/testdata/interface/todo_define_not_default.carbon b/toolchain/check/testdata/interface/todo_define_not_default.carbon index 7abfca1aa6e5..dbad7fe50cff 100644 --- a/toolchain/check/testdata/interface/todo_define_not_default.carbon +++ b/toolchain/check/testdata/interface/todo_define_not_default.carbon @@ -42,6 +42,7 @@ interface I { // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.G.decl [concrete] // CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %assoc3: %I.assoc_type = assoc_entity element3, @I.%N [concrete] // CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [concrete] @@ -121,7 +122,7 @@ interface I { // CHECK:STDOUT: %i32.loc22_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc22_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22_27: %tuple.type.24b = tuple_literal (%i32.loc22_19, %i32.loc22_24) +// CHECK:STDOUT: %.loc22_27: %tuple.type.24b = tuple_literal (%i32.loc22_19, %i32.loc22_24) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc22_28: type = converted %.loc22_27, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] { diff --git a/toolchain/check/testdata/interop/cpp/function/class.carbon b/toolchain/check/testdata/interop/cpp/function/class.carbon index 2f9311be17ed..71344b0afe2d 100644 --- a/toolchain/check/testdata/interop/cpp/function/class.carbon +++ b/toolchain/check/testdata/interop/cpp/function/class.carbon @@ -532,6 +532,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] @@ -562,7 +563,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc8_12.2: ref %C = temporary_storage @@ -588,6 +589,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] @@ -618,7 +620,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc24_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc24_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc24_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc24_12.2: ref %C = temporary_storage @@ -641,6 +643,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -658,7 +661,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc15_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc15_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc15_14: %C = converted %.loc15_12, [concrete = ] @@ -671,6 +674,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -688,7 +692,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc15_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc15_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc15_14: %C = converted %.loc15_12, [concrete = ] @@ -702,6 +706,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.69f: type = pattern_type %C [concrete] @@ -737,7 +742,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N.ref.loc8: = name_ref N, imports.%N [concrete = imports.%N] // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, imports.%C.decl [concrete = constants.%C] @@ -780,6 +785,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.c0c: type = ptr_type %C [concrete] @@ -819,7 +825,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N1.ref.loc8_6: = name_ref N1, imports.%N1 [concrete = imports.%N1] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_20: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N1.ref.loc8_23: = name_ref N1, imports.%N1 [concrete = imports.%N1] // CHECK:STDOUT: %N2.ref: = name_ref N2, imports.%N2 [concrete = imports.%N2] @@ -847,6 +853,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %O: type = class_type @O [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] @@ -884,7 +891,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %O.ref.loc8: type = name_ref O, imports.%O.decl [concrete = constants.%O] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] @@ -931,6 +938,7 @@ fn F() { // CHECK:STDOUT: %C.bar: %C.bar.type = struct_value () [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] @@ -966,7 +974,7 @@ fn F() { // CHECK:STDOUT: %C.bar.call: init %empty_tuple.type = call imports.%C.bar.decl() // CHECK:STDOUT: %Cpp.ref.loc9_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc9_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref.loc9: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc9_12.2: ref %C = temporary_storage @@ -992,6 +1000,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] @@ -1028,7 +1037,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc8_12.2: ref %C = temporary_storage diff --git a/toolchain/check/testdata/interop/cpp/function/default_arg.carbon b/toolchain/check/testdata/interop/cpp/function/default_arg.carbon index 851db68e0e8a..2bd3d4e0b1fa 100644 --- a/toolchain/check/testdata/interop/cpp/function/default_arg.carbon +++ b/toolchain/check/testdata/interop/cpp/function/default_arg.carbon @@ -178,6 +178,7 @@ fn Call() { // CHECK:STDOUT: %GlobalReturnInt.type: type = fn_type @GlobalReturnInt [concrete] // CHECK:STDOUT: %GlobalReturnInt: %GlobalReturnInt.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] // CHECK:STDOUT: %X.B.cpp_overload_set.type: type = cpp_overload_set_type @X.B.cpp_overload_set [concrete] @@ -328,7 +329,7 @@ fn Call() { // CHECK:STDOUT: %.loc9_50.1: %i32 = value_of_initializer %GlobalReturnInt.call // CHECK:STDOUT: %.loc9_50.2: %i32 = converted %GlobalReturnInt.call, %.loc9_50.1 // CHECK:STDOUT: %value: %i32 = value_binding value, %.loc9_50.2 -// CHECK:STDOUT: %.loc10_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc10: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc10: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc10_5.2: ref %X = temporary_storage @@ -374,7 +375,7 @@ fn Call() { // CHECK:STDOUT: %.loc11_14.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11_14 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc11_14.2: %i32 = converted %int_2.loc11, %.loc11_14.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %X.C.call: init %empty_tuple.type = call imports.%X.C.decl(%.loc11_11.2, %.loc11_14.2) -// CHECK:STDOUT: %.loc12_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc12: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc12: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc12_5.2: ref %X = temporary_storage @@ -463,6 +464,7 @@ fn Call() { // CHECK:STDOUT: %bound_method.def: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] @@ -730,7 +732,7 @@ fn Call() { // CHECK:STDOUT: %.loc10_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_28 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc10_28.2: %i32 = converted %int_3, %.loc10_28.1 [concrete = constants.%int_3.822] // CHECK:STDOUT: %GlobalNoReturn__carbon_thunk.call.loc10: init %empty_tuple.type = call imports.%GlobalNoReturn__carbon_thunk.decl.305fd1.2(%.loc10_22.2, %.loc10_25.2, %.loc10_28.2) -// CHECK:STDOUT: %.loc11_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc11: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc11_5.2: ref %X = temporary_storage @@ -760,7 +762,7 @@ fn Call() { // CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_1.loc12, %.loc12_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %C__carbon_thunk.call: init %empty_tuple.type = call imports.%C__carbon_thunk.decl(%.loc12_11.2) -// CHECK:STDOUT: %.loc13_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc13: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc13: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc13_5.2: ref %X = temporary_storage @@ -828,6 +830,7 @@ fn Call() { // CHECK:STDOUT: %GlobalReturnInt.cpp_overload_set.type: type = cpp_overload_set_type @GlobalReturnInt.cpp_overload_set [concrete] // CHECK:STDOUT: %GlobalReturnInt.cpp_overload_set.value: %GlobalReturnInt.cpp_overload_set.type = cpp_overload_set_value @GlobalReturnInt.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] // CHECK:STDOUT: %X.B.cpp_overload_set.type: type = cpp_overload_set_type @X.B.cpp_overload_set [concrete] @@ -870,7 +873,7 @@ fn Call() { // CHECK:STDOUT: %int_1.loc36: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %Cpp.ref.loc46: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %GlobalReturnInt.ref.loc46: %GlobalReturnInt.cpp_overload_set.type = name_ref GlobalReturnInt, imports.%GlobalReturnInt.cpp_overload_set.value [concrete = constants.%GlobalReturnInt.cpp_overload_set.value] -// CHECK:STDOUT: %.loc56_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc56_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc56: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc56: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc56_5.2: ref %X = temporary_storage @@ -882,7 +885,7 @@ fn Call() { // CHECK:STDOUT: %Cpp.ref.loc66: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc66: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %C.ref: %X.C.cpp_overload_set.type = name_ref C, imports.%X.C.cpp_overload_set.value [concrete = constants.%X.C.cpp_overload_set.value] -// CHECK:STDOUT: %.loc76_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc76_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc76: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %X.ref.loc76: type = name_ref X, imports.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc76_5.2: ref %X = temporary_storage diff --git a/toolchain/check/testdata/interop/cpp/function/overloads.carbon b/toolchain/check/testdata/interop/cpp/function/overloads.carbon index c1372389da7a..0379fb375173 100644 --- a/toolchain/check/testdata/interop/cpp/function/overloads.carbon +++ b/toolchain/check/testdata/interop/cpp/function/overloads.carbon @@ -1998,6 +1998,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2029,7 +2030,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc11: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/pointer.carbon b/toolchain/check/testdata/interop/cpp/function/pointer.carbon index 59fb755c5acd..cb97c7ac953c 100644 --- a/toolchain/check/testdata/interop/cpp/function/pointer.carbon +++ b/toolchain/check/testdata/interop/cpp/function/pointer.carbon @@ -411,6 +411,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] @@ -445,7 +446,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc8_3: init %S = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc8_3 @@ -542,6 +543,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %pattern_type.259: type = pattern_type %ptr.5c7 [concrete] @@ -594,7 +596,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc8_3: init %S = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc8_3 @@ -1305,6 +1307,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] @@ -1386,7 +1389,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc8_3: init %S = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc8_3 @@ -1497,6 +1500,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %pattern_type.259: type = pattern_type %ptr.5c7 [concrete] @@ -1532,7 +1536,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc8_3: init %S = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc8_3 @@ -1572,6 +1576,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %Direct.cpp_overload_set.type: type = cpp_overload_set_type @Direct.cpp_overload_set [concrete] // CHECK:STDOUT: %Direct.cpp_overload_set.value: %Direct.cpp_overload_set.type = cpp_overload_set_value @Direct.cpp_overload_set [concrete] @@ -1686,7 +1691,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc10_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc10_3: init %S = converted %.loc10_19.1, %.loc10_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc10_3 @@ -1714,7 +1719,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Cpp.ref.loc13_34: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Indirect.ref: %Indirect.cpp_overload_set.type = name_ref Indirect, imports.%Indirect.cpp_overload_set.value [concrete = constants.%Indirect.cpp_overload_set.value] -// CHECK:STDOUT: %.loc13_48.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_48.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc13_53: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc13_56: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc13_48.2: ref %S = temporary_storage diff --git a/toolchain/check/testdata/interop/cpp/function/qualified_param.carbon b/toolchain/check/testdata/interop/cpp/function/qualified_param.carbon index f9d564c78672..094139f706fe 100644 --- a/toolchain/check/testdata/interop/cpp/function/qualified_param.carbon +++ b/toolchain/check/testdata/interop/cpp/function/qualified_param.carbon @@ -61,6 +61,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %TakesConstS.cpp_overload_set.type: type = cpp_overload_set_type @TakesConstS.cpp_overload_set [concrete] // CHECK:STDOUT: %TakesConstS.cpp_overload_set.value: %TakesConstS.cpp_overload_set.type = cpp_overload_set_value @TakesConstS.cpp_overload_set [concrete] @@ -117,7 +118,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc10_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc10_3: init %S = converted %.loc10_19.1, %.loc10_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc10_3 diff --git a/toolchain/check/testdata/interop/cpp/function/reference.carbon b/toolchain/check/testdata/interop/cpp/function/reference.carbon index ed27023bc476..24c3ea8d0063 100644 --- a/toolchain/check/testdata/interop/cpp/function/reference.carbon +++ b/toolchain/check/testdata/interop/cpp/function/reference.carbon @@ -320,6 +320,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %TakesLValue.cpp_overload_set.type: type = cpp_overload_set_type @TakesLValue.cpp_overload_set [concrete] // CHECK:STDOUT: %TakesLValue.cpp_overload_set.value: %TakesLValue.cpp_overload_set.type = cpp_overload_set_value @TakesLValue.cpp_overload_set [concrete] @@ -354,7 +355,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc8_3: init %S = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc8_3 @@ -498,6 +499,7 @@ fn F() { // CHECK:STDOUT: %TakesRValue.cpp_overload_set.type: type = cpp_overload_set_type @TakesRValue.cpp_overload_set [concrete] // CHECK:STDOUT: %TakesRValue.cpp_overload_set.value: %TakesRValue.cpp_overload_set.type = cpp_overload_set_value @TakesRValue.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] @@ -528,7 +530,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %TakesRValue.ref: %TakesRValue.cpp_overload_set.type = name_ref TakesRValue, imports.%TakesRValue.cpp_overload_set.value [concrete = constants.%TakesRValue.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_20.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_25: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc8_20.2: ref %S = temporary_storage @@ -554,6 +556,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %TakesRValue.cpp_overload_set.type: type = cpp_overload_set_type @TakesRValue.cpp_overload_set [concrete] // CHECK:STDOUT: %TakesRValue.cpp_overload_set.value: %TakesRValue.cpp_overload_set.type = cpp_overload_set_value @TakesRValue.cpp_overload_set [concrete] @@ -586,7 +589,7 @@ fn F() { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %s.patt: %pattern_type.7da = value_binding_pattern s [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc12_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_13: type = splice_block %S.ref [concrete = constants.%S] { // CHECK:STDOUT: %Cpp.ref.loc12: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] @@ -622,6 +625,7 @@ fn F() { // CHECK:STDOUT: %TakesRValue.cpp_overload_set.value: %TakesRValue.cpp_overload_set.type = cpp_overload_set_value @TakesRValue.cpp_overload_set [concrete] // CHECK:STDOUT: %T: type = class_type @T [concrete] // CHECK:STDOUT: %pattern_type.e6b: type = pattern_type %T [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %const: type = const_type %S [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -677,7 +681,7 @@ fn F() { // CHECK:STDOUT: %t.ref: ref %T = name_ref t, %t // CHECK:STDOUT: %Cpp.ref.loc38_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %TakesRValue.ref.loc38: %TakesRValue.cpp_overload_set.type = name_ref TakesRValue, imports.%TakesRValue.cpp_overload_set.value [concrete = constants.%TakesRValue.cpp_overload_set.value] -// CHECK:STDOUT: %.loc38_21.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc38_21.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc38_26: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc38_29: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc38_21.2: ref %S = temporary_storage @@ -714,6 +718,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %TakesConstLValue.cpp_overload_set.type: type = cpp_overload_set_type @TakesConstLValue.cpp_overload_set [concrete] // CHECK:STDOUT: %TakesConstLValue.cpp_overload_set.value: %TakesConstLValue.cpp_overload_set.type = cpp_overload_set_value @TakesConstLValue.cpp_overload_set [concrete] @@ -750,7 +755,7 @@ fn F() { // CHECK:STDOUT: %s.var_patt: %pattern_type.7da = var_pattern %s.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %s.var: ref %S = var %s.var_patt -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.2: init %S = class_init (), %s.var [concrete = constants.%S.val] // CHECK:STDOUT: %.loc8_3: init %S = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%S.val] // CHECK:STDOUT: assign %s.var, %.loc8_3 @@ -799,6 +804,7 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.7da: type = pattern_type %S [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %TakesConstLValue.cpp_overload_set.type: type = cpp_overload_set_type @TakesConstLValue.cpp_overload_set [concrete] // CHECK:STDOUT: %TakesConstLValue.cpp_overload_set.value: %TakesConstLValue.cpp_overload_set.type = cpp_overload_set_value @TakesConstLValue.cpp_overload_set [concrete] @@ -833,7 +839,7 @@ fn F() { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %s.patt: %pattern_type.7da = value_binding_pattern s [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_13: type = splice_block %S.ref.loc8 [concrete = constants.%S] { // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc8: type = name_ref S, imports.%S.decl [concrete = constants.%S] diff --git a/toolchain/check/testdata/interop/cpp/function/struct.carbon b/toolchain/check/testdata/interop/cpp/function/struct.carbon index fe1dbc629028..ba2a9377c143 100644 --- a/toolchain/check/testdata/interop/cpp/function/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/function/struct.carbon @@ -531,6 +531,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] @@ -561,7 +562,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc8_12.2: ref %S = temporary_storage @@ -587,6 +588,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] @@ -617,7 +619,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc24_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc24_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc24_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc24_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc24_12.2: ref %S = temporary_storage @@ -640,6 +642,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -657,7 +660,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc15_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc15_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc15_14: %S = converted %.loc15_12, [concrete = ] @@ -670,6 +673,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -687,7 +691,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc15_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc15_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc15_14: %S = converted %.loc15_12, [concrete = ] @@ -701,6 +705,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cd8: type = pattern_type %S [concrete] @@ -736,7 +741,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N.ref.loc8: = name_ref N, imports.%N [concrete = imports.%N] // CHECK:STDOUT: %S.ref.loc8: type = name_ref S, imports.%S.decl [concrete = constants.%S] @@ -779,6 +784,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.887: type = ptr_type %S [concrete] @@ -818,7 +824,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N1.ref.loc8_6: = name_ref N1, imports.%N1 [concrete = imports.%N1] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_20: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N1.ref.loc8_23: = name_ref N1, imports.%N1 [concrete = imports.%N1] // CHECK:STDOUT: %N2.ref: = name_ref N2, imports.%N2 [concrete = imports.%N2] @@ -846,6 +852,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %O: type = class_type @O [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] @@ -883,7 +890,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %O.ref.loc8: type = name_ref O, imports.%O.decl [concrete = constants.%O] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] @@ -930,6 +937,7 @@ fn F() { // CHECK:STDOUT: %S.bar: %S.bar.type = struct_value () [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] @@ -965,7 +973,7 @@ fn F() { // CHECK:STDOUT: %S.bar.call: init %empty_tuple.type = call imports.%S.bar.decl() // CHECK:STDOUT: %Cpp.ref.loc9_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc9_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc9: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc9_12.2: ref %S = temporary_storage @@ -991,6 +999,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] @@ -1027,7 +1036,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc8: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %.loc8_12.2: ref %S = temporary_storage diff --git a/toolchain/check/testdata/interop/cpp/function/union.carbon b/toolchain/check/testdata/interop/cpp/function/union.carbon index 0b1340f77628..cb52ccd6df86 100644 --- a/toolchain/check/testdata/interop/cpp/function/union.carbon +++ b/toolchain/check/testdata/interop/cpp/function/union.carbon @@ -492,6 +492,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -509,7 +510,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc16_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc16: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc16: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc16_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: @@ -522,6 +523,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] @@ -552,7 +554,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: %.loc8_12.2: ref %U = temporary_storage @@ -577,6 +579,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -594,7 +597,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc15_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc15_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: %.loc15_14: %U = converted %.loc15_12, [concrete = ] @@ -607,6 +610,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -624,7 +628,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc15_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_12: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc15_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: %.loc15_14: %U = converted %.loc15_12, [concrete = ] @@ -638,6 +642,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.eb9: type = pattern_type %U [concrete] @@ -673,7 +678,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N.ref.loc8: = name_ref N, imports.%N [concrete = imports.%N] // CHECK:STDOUT: %U.ref.loc8: type = name_ref U, imports.%U.decl [concrete = constants.%U] @@ -716,6 +721,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] // CHECK:STDOUT: %ptr.8c1: type = ptr_type %U [concrete] @@ -755,7 +761,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N1.ref.loc8_6: = name_ref N1, imports.%N1 [concrete = imports.%N1] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_20: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %N1.ref.loc8_23: = name_ref N1, imports.%N1 [concrete = imports.%N1] // CHECK:STDOUT: %N2.ref: = name_ref N2, imports.%N2 [concrete = imports.%N2] @@ -783,6 +789,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %O: type = class_type @O [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] @@ -820,7 +827,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %O.ref.loc8: type = name_ref O, imports.%O.decl [concrete = constants.%O] // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] @@ -867,6 +874,7 @@ fn F() { // CHECK:STDOUT: %U.bar: %U.bar.type = struct_value () [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] // CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] @@ -902,7 +910,7 @@ fn F() { // CHECK:STDOUT: %U.bar.call: init %empty_tuple.type = call imports.%U.bar.decl() // CHECK:STDOUT: %Cpp.ref.loc9_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc9_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref.loc9: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: %.loc9_12.2: ref %U = temporary_storage @@ -928,6 +936,7 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] @@ -964,7 +973,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc8_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Cpp.ref.loc8_17: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref.loc8: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: %.loc8_12.2: ref %U = temporary_storage diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index a20a204bd4ef..081cdcd56bdc 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -165,12 +165,12 @@ impl i32 as Empty { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -196,7 +196,7 @@ impl i32 as Empty { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc5_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -204,10 +204,10 @@ impl i32 as Empty { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc10_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_12.1: type = splice_block %.loc10_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc10_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_12.3: type = converted %.loc10_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -237,8 +237,8 @@ impl i32 as Empty { // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -265,10 +265,10 @@ impl i32 as Empty { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc9_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.1: type = splice_block %.loc9_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.3: type = converted %.loc9_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -278,7 +278,7 @@ impl i32 as Empty { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_14.2: type = converted %.loc10_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -307,26 +307,26 @@ impl i32 as Empty { // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type.9fb: type = tuple_type (%empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.f41: %tuple.type.9fb = tuple_value (%empty_tuple) [concrete] // CHECK:STDOUT: %b: %tuple.type.9fb = symbolic_binding b, 0 [symbolic] // CHECK:STDOUT: %pattern_type.559: type = pattern_type %tuple.type.9fb [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %ptr.7fe: type = ptr_type %tuple.type.2d5 [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type.2d5 [concrete] -// CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type.bcd: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type.bcd [concrete] // CHECK:STDOUT: %c: %tuple.type.bcd = symbolic_binding c, 1 [symbolic] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type.bcd [concrete] -// CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %tuple.elem0.173: %empty_tuple.type = tuple_access %b, element0 [symbolic] -// CHECK:STDOUT: %tuple.f41: %tuple.type.9fb = tuple_value (%empty_tuple) [concrete] // CHECK:STDOUT: %tuple.elem0.5c4: %empty_tuple.type = tuple_access %c, element0 [symbolic] // CHECK:STDOUT: %tuple.elem1: %empty_tuple.type = tuple_access %c, element1 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -373,10 +373,10 @@ impl i32 as Empty { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %pattern_type.cb1 = value_binding_pattern a [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc9_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.1: type = splice_block %.loc9_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.3: type = converted %.loc9_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple.loc9: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -387,9 +387,9 @@ impl i32 as Empty { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_16.1: type = splice_block %.loc10_16.4 [concrete = constants.%tuple.type.9fb] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc10_14: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc10_16.2: %tuple.type.9fb = tuple_literal (%.loc10_14) -// CHECK:STDOUT: %.loc10_16.3: type = converted %.loc10_14, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc10_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc10_16.2: %tuple.type.9fb = tuple_literal (%.loc10_14) [concrete = constants.%tuple.f41] +// CHECK:STDOUT: %.loc10_16.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_16.4: type = converted %.loc10_16.2, constants.%tuple.type.9fb [concrete = constants.%tuple.type.9fb] // CHECK:STDOUT: } // CHECK:STDOUT: %b.loc10_8.2: %tuple.type.9fb = symbolic_binding b, 0 [symbolic = %b.loc10_8.1 (constants.%b)] @@ -397,19 +397,19 @@ impl i32 as Empty { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.8c1 = value_binding_pattern d [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc22_28: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_32: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_36: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_37.1: %tuple.type.2d5 = tuple_literal (%.loc22_28, %.loc22_32, %.loc22_36) +// CHECK:STDOUT: %.loc22_28: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc22_32: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc22_36: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc22_37.1: %tuple.type.2d5 = tuple_literal (%.loc22_28, %.loc22_32, %.loc22_36) [concrete = constants.%tuple.7e4] // CHECK:STDOUT: %.loc22_22.1: type = splice_block %.loc22_22.6 [concrete = constants.%tuple.type.2d5] { // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc22_13: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_17: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_21: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_22.2: %tuple.type.2d5 = tuple_literal (%.loc22_13, %.loc22_17, %.loc22_21) -// CHECK:STDOUT: %.loc22_22.3: type = converted %.loc22_13, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc22_22.4: type = converted %.loc22_17, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc22_22.5: type = converted %.loc22_21, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc22_13: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc22_17: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc22_21: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc22_22.2: %tuple.type.2d5 = tuple_literal (%.loc22_13, %.loc22_17, %.loc22_21) [concrete = constants.%tuple.7e4] +// CHECK:STDOUT: %.loc22_22.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc22_22.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc22_22.5: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc22_22.6: type = converted %.loc22_22.2, constants.%tuple.type.2d5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple.loc22_28: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -445,16 +445,16 @@ impl i32 as Empty { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.5b8 = symbolic_binding_pattern c, 1 [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc11_26: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_30: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_31.1: %tuple.type.bcd = tuple_literal (%.loc11_26, %.loc11_30) +// CHECK:STDOUT: %.loc11_26: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_30: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_31.1: %tuple.type.bcd = tuple_literal (%.loc11_26, %.loc11_30) [concrete = constants.%tuple.d8f] // CHECK:STDOUT: %.loc11_20.1: type = splice_block %.loc11_20.5 [concrete = constants.%tuple.type.bcd] { // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.loc11_15: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_19: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_20.2: %tuple.type.bcd = tuple_literal (%.loc11_15, %.loc11_19) -// CHECK:STDOUT: %.loc11_20.3: type = converted %.loc11_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc11_20.4: type = converted %.loc11_19, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc11_15: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_19: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_20.2: %tuple.type.bcd = tuple_literal (%.loc11_15, %.loc11_19) [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc11_20.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc11_20.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc11_20.5: type = converted %.loc11_20.2, constants.%tuple.type.bcd [concrete = constants.%tuple.type.bcd] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple.loc11_26: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -474,7 +474,7 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc13_5: init %empty_tuple.type = converted %a.ref, %.loc13_18 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %a1.var, %.loc13_5 // CHECK:STDOUT: %.loc13_14.1: type = splice_block %.loc13_14.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc13_14.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_14.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_14.3: type = converted %.loc13_14.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a1: ref %empty_tuple.type = ref_binding a1, %a1.var @@ -492,9 +492,9 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc14_5: init %tuple.type.9fb = converted %b.ref, %.loc14_21.3 [concrete = constants.%tuple.f41] // CHECK:STDOUT: assign %b1.var, %.loc14_5 // CHECK:STDOUT: %.loc14_17.1: type = splice_block %.loc14_17.4 [concrete = constants.%tuple.type.9fb] { -// CHECK:STDOUT: %.loc14_15: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc14_17.2: %tuple.type.9fb = tuple_literal (%.loc14_15) -// CHECK:STDOUT: %.loc14_17.3: type = converted %.loc14_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc14_15: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc14_17.2: %tuple.type.9fb = tuple_literal (%.loc14_15) [concrete = constants.%tuple.f41] +// CHECK:STDOUT: %.loc14_17.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc14_17.4: type = converted %.loc14_17.2, constants.%tuple.type.9fb [concrete = constants.%tuple.type.9fb] // CHECK:STDOUT: } // CHECK:STDOUT: %b1: ref %tuple.type.9fb = ref_binding b1, %b1.var @@ -516,11 +516,11 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc15_5: init %tuple.type.bcd = converted %c.ref, %.loc15_24.5 [concrete = constants.%tuple.d8f] // CHECK:STDOUT: assign %c1.var, %.loc15_5 // CHECK:STDOUT: %.loc15_20.1: type = splice_block %.loc15_20.5 [concrete = constants.%tuple.type.bcd] { -// CHECK:STDOUT: %.loc15_15: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc15_19: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc15_20.2: %tuple.type.bcd = tuple_literal (%.loc15_15, %.loc15_19) -// CHECK:STDOUT: %.loc15_20.3: type = converted %.loc15_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc15_20.4: type = converted %.loc15_19, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_15: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc15_19: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc15_20.2: %tuple.type.bcd = tuple_literal (%.loc15_15, %.loc15_19) [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc15_20.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_20.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc15_20.5: type = converted %.loc15_20.2, constants.%tuple.type.bcd [concrete = constants.%tuple.type.bcd] // CHECK:STDOUT: } // CHECK:STDOUT: %c1: ref %tuple.type.bcd = ref_binding c1, %c1.var @@ -546,13 +546,13 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc16_5: init %tuple.type.2d5 = converted %d.ref, %.loc16_28.7 [concrete = constants.%tuple.7e4] // CHECK:STDOUT: assign %d1.var, %.loc16_5 // CHECK:STDOUT: %.loc16_24.1: type = splice_block %.loc16_24.6 [concrete = constants.%tuple.type.2d5] { -// CHECK:STDOUT: %.loc16_15: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_19: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_23: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_24.2: %tuple.type.2d5 = tuple_literal (%.loc16_15, %.loc16_19, %.loc16_23) -// CHECK:STDOUT: %.loc16_24.3: type = converted %.loc16_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc16_24.4: type = converted %.loc16_19, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc16_24.5: type = converted %.loc16_23, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc16_15: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_19: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_23: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_24.2: %tuple.type.2d5 = tuple_literal (%.loc16_15, %.loc16_19, %.loc16_23) [concrete = constants.%tuple.7e4] +// CHECK:STDOUT: %.loc16_24.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc16_24.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc16_24.5: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc16_24.6: type = converted %.loc16_24.2, constants.%tuple.type.2d5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: } // CHECK:STDOUT: %d1: ref %tuple.type.2d5 = ref_binding d1, %d1.var @@ -589,12 +589,12 @@ impl i32 as Empty { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -618,7 +618,7 @@ impl i32 as Empty { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc5_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param diff --git a/toolchain/check/testdata/let/convert.carbon b/toolchain/check/testdata/let/convert.carbon index 5a2a14691b45..2740aa349399 100644 --- a/toolchain/check/testdata/let/convert.carbon +++ b/toolchain/check/testdata/let/convert.carbon @@ -43,6 +43,7 @@ fn G() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] +// CHECK:STDOUT: %tuple.e64: %tuple.type.ff9 = tuple_value (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.189: type = tuple_type (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.b5a: type = pattern_type %tuple.type.189 [concrete] // CHECK:STDOUT: } @@ -64,7 +65,7 @@ fn G() { // CHECK:STDOUT: %i32.loc8_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc8_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8_24.2: %tuple.type.ff9 = tuple_literal (%i32.loc8_11, %i32.loc8_16, %i32.loc8_21) +// CHECK:STDOUT: %.loc8_24.2: %tuple.type.ff9 = tuple_literal (%i32.loc8_11, %i32.loc8_16, %i32.loc8_21) [concrete = constants.%tuple.e64] // CHECK:STDOUT: %.loc8_24.3: type = converted %.loc8_24.2, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.elem0.loc8: ref %i32 = tuple_access %v.ref, element0 diff --git a/toolchain/check/testdata/let/import.carbon b/toolchain/check/testdata/let/import.carbon index 77662542d92e..155a09e4cb54 100644 --- a/toolchain/check/testdata/let/import.carbon +++ b/toolchain/check/testdata/let/import.carbon @@ -40,8 +40,8 @@ let b: () = Other.a; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -52,7 +52,7 @@ let b: () = Other.a; // CHECK:STDOUT: %a.patt: %pattern_type = value_binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -62,7 +62,7 @@ let b: () = Other.a; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -70,6 +70,7 @@ let b: () = Other.a; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -88,7 +89,7 @@ let b: () = Other.a; // CHECK:STDOUT: %b.patt: %pattern_type = value_binding_pattern b [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %empty_tuple.type = value_binding b, @__global_init.%a.ref @@ -104,8 +105,8 @@ let b: () = Other.a; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -116,7 +117,7 @@ let b: () = Other.a; // CHECK:STDOUT: %a.patt: %pattern_type = value_binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -126,7 +127,7 @@ let b: () = Other.a; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -134,6 +135,7 @@ let b: () = Other.a; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -155,7 +157,7 @@ let b: () = Other.a; // CHECK:STDOUT: %b.patt: %pattern_type = value_binding_pattern b [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %empty_tuple.type = value_binding b, @__global_init.%a.ref diff --git a/toolchain/check/testdata/let/import_access.carbon b/toolchain/check/testdata/let/import_access.carbon index 50d472c33991..e49cfe33d1ef 100644 --- a/toolchain/check/testdata/let/import_access.carbon +++ b/toolchain/check/testdata/let/import_access.carbon @@ -60,8 +60,8 @@ let v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -72,7 +72,7 @@ let v2: () = Test.v; // CHECK:STDOUT: %v.patt: %pattern_type = value_binding_pattern v [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_17.3: type = converted %.loc4_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -82,7 +82,7 @@ let v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -90,6 +90,7 @@ let v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -108,7 +109,7 @@ let v2: () = Test.v; // CHECK:STDOUT: %v2.patt: %pattern_type = value_binding_pattern v2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: %empty_tuple.type = value_binding v2, @__global_init.%v.ref @@ -124,6 +125,7 @@ let v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -137,7 +139,7 @@ let v2: () = Test.v; // CHECK:STDOUT: %v2.patt: %pattern_type = value_binding_pattern v2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: %empty_tuple.type = value_binding v2, [concrete = ] @@ -153,6 +155,7 @@ let v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -173,7 +176,7 @@ let v2: () = Test.v; // CHECK:STDOUT: %v2.patt: %pattern_type = value_binding_pattern v2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: %empty_tuple.type = value_binding v2, [concrete = ] diff --git a/toolchain/check/testdata/named_constraint/empty.carbon b/toolchain/check/testdata/named_constraint/empty.carbon index 4856927cfe7d..5f6faefcd1d6 100644 --- a/toolchain/check/testdata/named_constraint/empty.carbon +++ b/toolchain/check/testdata/named_constraint/empty.carbon @@ -49,6 +49,7 @@ fn G(T:! Z, U:! type, V:! Empty) { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %facet_value.6fa: %Empty.type = facet_value %empty_struct_type, () [concrete] // CHECK:STDOUT: %F.specific_fn.007: = specific_function %F, @F(%facet_value.6fa) [concrete] // CHECK:STDOUT: %facet_value.832: %Empty.type = facet_value type, () [concrete] @@ -118,7 +119,7 @@ fn G(T:! Z, U:! type, V:! Empty) { // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref.loc26: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc26_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc26_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %facet_value.loc26: %Empty.type = facet_value constants.%empty_struct_type, () [concrete = constants.%facet_value.6fa] // CHECK:STDOUT: %.loc26_7: %Empty.type = converted %.loc26_6, %facet_value.loc26 [concrete = constants.%facet_value.6fa] // CHECK:STDOUT: %F.specific_fn.loc26: = specific_function %F.ref.loc26, @F(constants.%facet_value.6fa) [concrete = constants.%F.specific_fn.007] diff --git a/toolchain/check/testdata/named_constraint/empty_generic.carbon b/toolchain/check/testdata/named_constraint/empty_generic.carbon index c71543e29586..aa1f3c9337fc 100644 --- a/toolchain/check/testdata/named_constraint/empty_generic.carbon +++ b/toolchain/check/testdata/named_constraint/empty_generic.carbon @@ -35,7 +35,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Empty.type.a8a: type = generic_named_constaint_type @Empty [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %empty_struct: %Empty.type.a8a = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct.4bc: %Empty.type.a8a = struct_value () [concrete] // CHECK:STDOUT: %Empty.type.b8d23b.1: type = facet_type <@Empty, @Empty(%T.d9f)> [symbolic] // CHECK:STDOUT: %Self.aa1: %Empty.type.b8d23b.1 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %U.aa1546.1: %Empty.type.b8d23b.1 = symbolic_binding U, 1 [symbolic] @@ -53,6 +53,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct.a40: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %facet_value.6fa: %type = facet_value %empty_struct_type, () [concrete] // CHECK:STDOUT: %F.specific_fn.8ba: = specific_function %F, @F(%T.binding.as_type, %facet_value.6fa) [symbolic] // CHECK:STDOUT: %facet_value.832: %type = facet_value type, () [concrete] @@ -67,7 +68,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: %Empty.decl: %Empty.type.a8a = constraint_decl @Empty [concrete = constants.%empty_struct] { +// CHECK:STDOUT: %Empty.decl: %Empty.type.a8a = constraint_decl @Empty [concrete = constants.%empty_struct.4bc] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: @@ -81,7 +82,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %T.loc18_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc18_6.1 (constants.%T.d9f)] // CHECK:STDOUT: %.loc18: type = splice_block %Empty.type [symbolic = %type (constants.%Empty.type.b8d23b.1)] { // CHECK:STDOUT: -// CHECK:STDOUT: %Empty.ref: %Empty.type.a8a = name_ref Empty, file.%Empty.decl [concrete = constants.%empty_struct] +// CHECK:STDOUT: %Empty.ref: %Empty.type.a8a = name_ref Empty, file.%Empty.decl [concrete = constants.%empty_struct.4bc] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc18_6.2 [symbolic = %T.loc18_6.1 (constants.%T.d9f)] // CHECK:STDOUT: %Empty.type: type = facet_type <@Empty, @Empty(constants.%T.d9f)> [symbolic = %type (constants.%Empty.type.b8d23b.1)] // CHECK:STDOUT: } @@ -99,7 +100,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %T.loc20_6.2: %Z.type = symbolic_binding T, 0 [symbolic = %T.loc20_6.1 (constants.%T.3b3)] // CHECK:STDOUT: %.loc20_24.1: type = splice_block %Empty.type [symbolic = %type (constants.%Empty.type.b8d23b.2)] { // CHECK:STDOUT: -// CHECK:STDOUT: %Empty.ref: %Empty.type.a8a = name_ref Empty, file.%Empty.decl [concrete = constants.%empty_struct] +// CHECK:STDOUT: %Empty.ref: %Empty.type.a8a = name_ref Empty, file.%Empty.decl [concrete = constants.%empty_struct.4bc] // CHECK:STDOUT: %T.ref.loc20: %Z.type = name_ref T, %T.loc20_6.2 [symbolic = %T.loc20_6.1 (constants.%T.3b3)] // CHECK:STDOUT: %T.as_type.loc20: type = facet_access_type %T.ref.loc20 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %.loc20_24.2: type = converted %T.ref.loc20, %T.as_type.loc20 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] @@ -165,7 +166,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref.loc21: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %T.ref.loc21: %Z.type = name_ref T, %T.loc20_6.2 [symbolic = %T.loc20_6.1 (constants.%T.3b3)] -// CHECK:STDOUT: %.loc21_9: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc21_9: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct.a40] // CHECK:STDOUT: %.loc21_11: type = converted %.loc21_9, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %T.as_type.loc21: type = facet_access_type %T.ref.loc21 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %.loc21_18.1: type = converted %T.ref.loc21, %T.as_type.loc21 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] diff --git a/toolchain/check/testdata/named_constraint/require.carbon b/toolchain/check/testdata/named_constraint/require.carbon index d45af125adb6..9afb10bef1a5 100644 --- a/toolchain/check/testdata/named_constraint/require.carbon +++ b/toolchain/check/testdata/named_constraint/require.carbon @@ -495,6 +495,7 @@ constraint Z { // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self [symbolic_self] // CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0 = %empty_tuple.type> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -518,7 +519,7 @@ constraint Z { // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc7_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc7_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_32.2: type = converted %.loc7_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc7_19: type = where_expr %.Self [concrete = constants.%Y_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%Y.type diff --git a/toolchain/check/testdata/namespace/imported.carbon b/toolchain/check/testdata/namespace/imported.carbon index 581ad9471f2f..a87d4c331383 100644 --- a/toolchain/check/testdata/namespace/imported.carbon +++ b/toolchain/check/testdata/namespace/imported.carbon @@ -73,6 +73,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -116,7 +117,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -126,7 +127,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc5_9.1: type = splice_block %.loc5_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_9.3: type = converted %.loc5_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var [concrete = %b.var] @@ -136,7 +137,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %package_a.var: ref %empty_tuple.type = var %package_a.var_patt [concrete] // CHECK:STDOUT: %.loc7_17.1: type = splice_block %.loc7_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_17.3: type = converted %.loc7_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %package_a: ref %empty_tuple.type = ref_binding package_a, %package_a.var [concrete = %package_a.var] @@ -146,7 +147,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %package_b.var: ref %empty_tuple.type = var %package_b.var_patt [concrete] // CHECK:STDOUT: %.loc8_17.1: type = splice_block %.loc8_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_17.3: type = converted %.loc8_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %package_b: ref %empty_tuple.type = ref_binding package_b, %package_b.var [concrete = %package_b.var] diff --git a/toolchain/check/testdata/namespace/imported_indirect.carbon b/toolchain/check/testdata/namespace/imported_indirect.carbon index 325e502f5bbe..c447dd585be4 100644 --- a/toolchain/check/testdata/namespace/imported_indirect.carbon +++ b/toolchain/check/testdata/namespace/imported_indirect.carbon @@ -239,6 +239,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %D.type: type = fn_type @D [concrete] // CHECK:STDOUT: %D: %D.type = struct_value () [concrete] @@ -278,7 +279,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc5_9.1: type = splice_block %.loc5_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_9.3: type = converted %.loc5_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index 92c90769ab72..5718a9f5273f 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -90,6 +90,7 @@ fn Run() { // CHECK:STDOUT: %pattern_type: type = pattern_type %A [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -149,7 +150,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return.param: %A { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_27.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_27.2: init %A = class_init (), %return [concrete = constants.%A.val] // CHECK:STDOUT: %.loc8_28: init %A = converted %.loc8_27.1, %.loc8_27.2 [concrete = constants.%A.val] // CHECK:STDOUT: return %.loc8_28 to %return diff --git a/toolchain/check/testdata/operators/builtin/and.carbon b/toolchain/check/testdata/operators/builtin/and.carbon index d3a7b774fada..2912a9e377e2 100644 --- a/toolchain/check/testdata/operators/builtin/and.carbon +++ b/toolchain/check/testdata/operators/builtin/and.carbon @@ -55,8 +55,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %Constant.type: type = fn_type @Constant [concrete] // CHECK:STDOUT: %Constant: %Constant.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value.ff9: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -219,7 +219,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc23: -// CHECK:STDOUT: %.loc23_43: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_43: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_37: type = converted %.loc23_43, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_37) // CHECK:STDOUT: @@ -234,7 +234,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt -// CHECK:STDOUT: %.loc24_49.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc24_49.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_49.2: init %empty_tuple.type = tuple_init () to %b.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_3: init %empty_tuple.type = converted %.loc24_49.1, %.loc24_49.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %b.var, %.loc24_3 @@ -260,7 +260,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_33.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc24: -// CHECK:STDOUT: %.loc24_44: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc24_44: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_38: type = converted %.loc24_44, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_38) // CHECK:STDOUT: @@ -275,7 +275,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %c.var_patt: %pattern_type.cb1 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt -// CHECK:STDOUT: %.loc25_49.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc25_49.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc25_49.2: init %empty_tuple.type = tuple_init () to %c.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc25_3: init %empty_tuple.type = converted %.loc25_49.1, %.loc25_49.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %c.var, %.loc25_3 @@ -301,7 +301,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_33.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc25: -// CHECK:STDOUT: %.loc25_44: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc25_44: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc25_38: type = converted %.loc25_44, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_38) // CHECK:STDOUT: @@ -316,7 +316,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt -// CHECK:STDOUT: %.loc26_50.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc26_50.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_50.2: init %empty_tuple.type = tuple_init () to %d.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_3: init %empty_tuple.type = converted %.loc26_50.1, %.loc26_50.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %d.var, %.loc26_3 @@ -342,7 +342,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_34.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc26: -// CHECK:STDOUT: %.loc26_45: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc26_45: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_39: type = converted %.loc26_45, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_39) // CHECK:STDOUT: @@ -382,7 +382,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt -// CHECK:STDOUT: %.loc30_46.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc30_46.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc30_46.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc30_3: init %empty_tuple.type = converted %.loc30_46.1, %.loc30_46.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %a.var, %.loc30_3 @@ -408,7 +408,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result(%.loc30_30.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: -// CHECK:STDOUT: %.loc30_41: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc30_41: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc30_35: type = converted %.loc30_41, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result(%.loc30_35) // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/assignment.carbon b/toolchain/check/testdata/operators/builtin/assignment.carbon index 2e93d0f96fbd..942269a976df 100644 --- a/toolchain/check/testdata/operators/builtin/assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/assignment.carbon @@ -63,19 +63,21 @@ fn Main() { // CHECK:STDOUT: %bound_method.e3f: = bound_method %int_9.988, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_9.f88: %i32 = int_value 9 [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %ptr.261: type = ptr_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.dfc: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393e: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] @@ -89,7 +91,8 @@ fn Main() { // CHECK:STDOUT: %ptr.3ee: type = ptr_type %struct_type.a.b.501 [concrete] // CHECK:STDOUT: %pattern_type.851: type = pattern_type %struct_type.a.b.501 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] +// CHECK:STDOUT: %struct.ed5: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -197,7 +200,7 @@ fn Main() { // CHECK:STDOUT: %b.var: ref %tuple.type.d07 = var %b.var_patt // CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc19: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc19_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc19, %int_2.loc19) +// CHECK:STDOUT: %.loc19_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc19, %int_2.loc19) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %impl.elem0.loc19_28.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc19_28.1: = bound_method %int_1.loc19, %impl.elem0.loc19_28.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc19_28.1: = specific_function %impl.elem0.loc19_28.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -214,15 +217,15 @@ fn Main() { // CHECK:STDOUT: %.loc19_28.4: init %i32 = converted %int_2.loc19, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_28.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.elem1.loc19: ref %i32 = tuple_access %b.var, element1 // CHECK:STDOUT: %.loc19_28.5: init %i32 = initialize_from %.loc19_28.4 to %tuple.elem1.loc19 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc19_28.6: init %tuple.type.d07 = tuple_init (%.loc19_28.3, %.loc19_28.5) to %b.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc19_3: init %tuple.type.d07 = converted %.loc19_28.1, %.loc19_28.6 [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc19_28.6: init %tuple.type.d07 = tuple_init (%.loc19_28.3, %.loc19_28.5) to %b.var [concrete = constants.%tuple.21c] +// CHECK:STDOUT: %.loc19_3: init %tuple.type.d07 = converted %.loc19_28.1, %.loc19_28.6 [concrete = constants.%tuple.21c] // CHECK:STDOUT: assign %b.var, %.loc19_3 // CHECK:STDOUT: %.loc19_19.1: type = splice_block %.loc19_19.3 [concrete = constants.%tuple.type.d07] { // CHECK:STDOUT: %int_32.loc19_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc19_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19_19.2: %tuple.type.24b = tuple_literal (%i32.loc19_11, %i32.loc19_16) +// CHECK:STDOUT: %.loc19_19.2: %tuple.type.24b = tuple_literal (%i32.loc19_11, %i32.loc19_16) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc19_19.3: type = converted %.loc19_19.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.d07 = ref_binding b, %b.var @@ -255,7 +258,7 @@ fn Main() { // CHECK:STDOUT: %c.var: ref %struct_type.a.b.501 = var %c.var_patt // CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc23: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc23_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc23, %int_2.loc23) +// CHECK:STDOUT: %.loc23_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc23, %int_2.loc23) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %impl.elem0.loc23_46.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc23_46.1: = bound_method %int_1.loc23, %impl.elem0.loc23_46.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc23_46.1: = specific_function %impl.elem0.loc23_46.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -272,8 +275,8 @@ fn Main() { // CHECK:STDOUT: %.loc23_46.5: init %i32 = converted %int_2.loc23, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_46.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc23_46.6: ref %i32 = struct_access %c.var, element1 // CHECK:STDOUT: %.loc23_46.7: init %i32 = initialize_from %.loc23_46.5 to %.loc23_46.6 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc23_46.8: init %struct_type.a.b.501 = struct_init (%.loc23_46.4, %.loc23_46.7) to %c.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc23_3: init %struct_type.a.b.501 = converted %.loc23_46.1, %.loc23_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc23_46.8: init %struct_type.a.b.501 = struct_init (%.loc23_46.4, %.loc23_46.7) to %c.var [concrete = constants.%struct.ed5] +// CHECK:STDOUT: %.loc23_3: init %struct_type.a.b.501 = converted %.loc23_46.1, %.loc23_46.8 [concrete = constants.%struct.ed5] // CHECK:STDOUT: assign %c.var, %.loc23_3 // CHECK:STDOUT: %.loc23_27: type = splice_block %struct_type.a.b [concrete = constants.%struct_type.a.b.501] { // CHECK:STDOUT: %int_32.loc23_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon index 5080ae5d4a22..2c0d07bbbdd8 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon @@ -59,6 +59,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: %PartialConstant: %PartialConstant.type = struct_value () [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -122,7 +123,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc9(%.loc9_29.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc9: -// CHECK:STDOUT: %.loc9_40: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_40: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_34: type = converted %.loc9_40, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc9(%.loc9_34) // CHECK:STDOUT: @@ -160,7 +161,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc14(%.loc14_29.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc14: -// CHECK:STDOUT: %.loc14_40: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_40: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_34: type = converted %.loc14_40, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc14(%.loc14_34) // CHECK:STDOUT: @@ -183,6 +184,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %KnownValueButNonConstantCondition: %KnownValueButNonConstantCondition.type = struct_value () [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: } @@ -247,7 +249,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc11(%.loc11_30.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc11: -// CHECK:STDOUT: %.loc11_41: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_41: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_35: type = converted %.loc11_41, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc11(%.loc11_35) // CHECK:STDOUT: @@ -285,7 +287,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc16(%.loc16_28.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc16: -// CHECK:STDOUT: %.loc16_39: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_39: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_33: type = converted %.loc16_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc16(%.loc16_33) // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index c569d105e83d..23908bc10fd0 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -101,12 +101,12 @@ fn Main() { // CHECK:STDOUT: %bound_method.dfc: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] +// CHECK:STDOUT: %tuple.302: %tuple.type.f94 = tuple_value (%int_3.1ba, %int_4) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Copy.impl.Op.bound.bbb: = bound_method %int_3.1ba, %Core.IntLiteral.as.Copy.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Copy.impl.Op.bound.108: = bound_method %int_4, %Core.IntLiteral.as.Copy.impl.Op [concrete] -// CHECK:STDOUT: %tuple.302: %tuple.type.f94 = tuple_value (%int_3.1ba, %int_4) [concrete] -// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0b3: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9be: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -124,8 +124,8 @@ fn Main() { // CHECK:STDOUT: %type.as.Copy.impl.Op: %type.as.Copy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %type.as.Copy.impl.Op.bound: = bound_method %ptr.235, %type.as.Copy.impl.Op [concrete] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.a0d: %struct_type.x.y = struct_value (%int_3.1ba, %int_4) [concrete] // CHECK:STDOUT: %struct.004: %struct_type.x.y = struct_value (%int_1.5b8, %int_2.ecc) [concrete] +// CHECK:STDOUT: %struct.a0d: %struct_type.x.y = struct_value (%int_3.1ba, %int_4) [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.87d: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.def: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -204,19 +204,19 @@ fn Main() { // CHECK:STDOUT: assign %F.call, %.loc27 // CHECK:STDOUT: %int_1.loc32: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc32: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc32_8.1: %tuple.type.f94 = tuple_literal (%int_1.loc32, %int_2.loc32) +// CHECK:STDOUT: %.loc32_8.1: %tuple.type.f94 = tuple_literal (%int_1.loc32, %int_2.loc32) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %int_3.loc32: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4.loc32: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] -// CHECK:STDOUT: %.loc32_17.1: %tuple.type.f94 = tuple_literal (%int_3.loc32, %int_4.loc32) +// CHECK:STDOUT: %.loc32_17.1: %tuple.type.f94 = tuple_literal (%int_3.loc32, %int_4.loc32) [concrete = constants.%tuple.302] // CHECK:STDOUT: %impl.elem0.loc32_13: %.7f1 = impl_witness_access constants.%Copy.impl_witness.104, element0 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op] // CHECK:STDOUT: %bound_method.loc32_13: = bound_method %int_3.loc32, %impl.elem0.loc32_13 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op.bound.bbb] // CHECK:STDOUT: %Core.IntLiteral.as.Copy.impl.Op.call.loc32_13: init Core.IntLiteral = call %bound_method.loc32_13(%int_3.loc32) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %tuple.elem0.loc32: Core.IntLiteral = tuple_access %.loc32_8.1, element0 +// CHECK:STDOUT: %tuple.elem0.loc32: Core.IntLiteral = tuple_access %.loc32_8.1, element0 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc32_17.2: init Core.IntLiteral = initialize_from %Core.IntLiteral.as.Copy.impl.Op.call.loc32_13 to %tuple.elem0.loc32 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %impl.elem0.loc32_16: %.7f1 = impl_witness_access constants.%Copy.impl_witness.104, element0 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op] // CHECK:STDOUT: %bound_method.loc32_16: = bound_method %int_4.loc32, %impl.elem0.loc32_16 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op.bound.108] // CHECK:STDOUT: %Core.IntLiteral.as.Copy.impl.Op.call.loc32_16: init Core.IntLiteral = call %bound_method.loc32_16(%int_4.loc32) [concrete = constants.%int_4] -// CHECK:STDOUT: %tuple.elem1.loc32: Core.IntLiteral = tuple_access %.loc32_8.1, element1 +// CHECK:STDOUT: %tuple.elem1.loc32: Core.IntLiteral = tuple_access %.loc32_8.1, element1 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc32_17.3: init Core.IntLiteral = initialize_from %Core.IntLiteral.as.Copy.impl.Op.call.loc32_16 to %tuple.elem1.loc32 [concrete = constants.%int_4] // CHECK:STDOUT: %.loc32_17.4: init %tuple.type.f94 = tuple_init (%.loc32_17.2, %.loc32_17.3) to %.loc32_8.1 [concrete = constants.%tuple.302] // CHECK:STDOUT: %.loc32_10: init %tuple.type.f94 = converted %.loc32_17.1, %.loc32_17.4 [concrete = constants.%tuple.302] @@ -246,7 +246,7 @@ fn Main() { // CHECK:STDOUT: %.loc38_8.1: %tuple.type.d07 = tuple_literal (%n.ref.loc38_4, %n.ref.loc38_7) // CHECK:STDOUT: %int_1.loc38: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc38: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc38_17.1: %tuple.type.f94 = tuple_literal (%int_1.loc38, %int_2.loc38) +// CHECK:STDOUT: %.loc38_17.1: %tuple.type.f94 = tuple_literal (%int_1.loc38, %int_2.loc38) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %impl.elem0.loc38_17.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc38_17.1: = bound_method %int_1.loc38, %impl.elem0.loc38_17.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc38_17.1: = specific_function %impl.elem0.loc38_17.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -281,19 +281,19 @@ fn Main() { // CHECK:STDOUT: assign %i32.loc43_3, %type.as.Copy.impl.Op.call // CHECK:STDOUT: %int_1.loc48: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc48: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc48_18.1: %struct_type.x.y = struct_literal (%int_1.loc48, %int_2.loc48) +// CHECK:STDOUT: %.loc48_18.1: %struct_type.x.y = struct_literal (%int_1.loc48, %int_2.loc48) [concrete = constants.%struct.004] // CHECK:STDOUT: %int_3.loc48: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4.loc48: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] -// CHECK:STDOUT: %.loc48_37.1: %struct_type.x.y = struct_literal (%int_3.loc48, %int_4.loc48) +// CHECK:STDOUT: %.loc48_37.1: %struct_type.x.y = struct_literal (%int_3.loc48, %int_4.loc48) [concrete = constants.%struct.a0d] // CHECK:STDOUT: %impl.elem0.loc48_28: %.7f1 = impl_witness_access constants.%Copy.impl_witness.104, element0 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op] // CHECK:STDOUT: %bound_method.loc48_28: = bound_method %int_3.loc48, %impl.elem0.loc48_28 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op.bound.bbb] // CHECK:STDOUT: %Core.IntLiteral.as.Copy.impl.Op.call.loc48_28: init Core.IntLiteral = call %bound_method.loc48_28(%int_3.loc48) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc48_37.2: Core.IntLiteral = struct_access %.loc48_18.1, element0 +// CHECK:STDOUT: %.loc48_37.2: Core.IntLiteral = struct_access %.loc48_18.1, element0 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc48_37.3: init Core.IntLiteral = initialize_from %Core.IntLiteral.as.Copy.impl.Op.call.loc48_28 to %.loc48_37.2 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %impl.elem0.loc48_36: %.7f1 = impl_witness_access constants.%Copy.impl_witness.104, element0 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op] // CHECK:STDOUT: %bound_method.loc48_36: = bound_method %int_4.loc48, %impl.elem0.loc48_36 [concrete = constants.%Core.IntLiteral.as.Copy.impl.Op.bound.108] // CHECK:STDOUT: %Core.IntLiteral.as.Copy.impl.Op.call.loc48_36: init Core.IntLiteral = call %bound_method.loc48_36(%int_4.loc48) [concrete = constants.%int_4] -// CHECK:STDOUT: %.loc48_37.4: Core.IntLiteral = struct_access %.loc48_18.1, element1 +// CHECK:STDOUT: %.loc48_37.4: Core.IntLiteral = struct_access %.loc48_18.1, element1 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc48_37.5: init Core.IntLiteral = initialize_from %Core.IntLiteral.as.Copy.impl.Op.call.loc48_36 to %.loc48_37.4 [concrete = constants.%int_4] // CHECK:STDOUT: %.loc48_37.6: init %struct_type.x.y = struct_init (%.loc48_37.3, %.loc48_37.5) to %.loc48_18.1 [concrete = constants.%struct.a0d] // CHECK:STDOUT: %.loc48_20: init %struct_type.x.y = converted %.loc48_37.1, %.loc48_37.6 [concrete = constants.%struct.a0d] diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon index 1eecb5040c60..3d44b5f44af7 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon @@ -33,6 +33,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 34e-1 [concrete] // CHECK:STDOUT: %AddWith.type.e05: type = generic_interface_type @AddWith [concrete] // CHECK:STDOUT: %AddWith.generic: %AddWith.type.e05 = struct_value () [concrete] @@ -69,7 +70,7 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc22: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 34e-1 [concrete = constants.%float] // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12] // CHECK:STDOUT: return to %return diff --git a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon index 3167545d6e3f..f2532b7ea0e1 100644 --- a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon @@ -31,6 +31,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [concrete] // CHECK:STDOUT: %AddWith.type.e05: type = generic_interface_type @AddWith [concrete] // CHECK:STDOUT: %AddWith.generic: %AddWith.type.e05 = struct_value () [concrete] @@ -66,7 +67,7 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc20: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc20: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [concrete = constants.%int_34] // CHECK:STDOUT: return to %return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/or.carbon b/toolchain/check/testdata/operators/builtin/or.carbon index 805d3b9b916f..8707029cde3d 100644 --- a/toolchain/check/testdata/operators/builtin/or.carbon +++ b/toolchain/check/testdata/operators/builtin/or.carbon @@ -55,8 +55,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Constant.type: type = fn_type @Constant [concrete] // CHECK:STDOUT: %Constant: %Constant.type = struct_value () [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value.ff9: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -221,7 +221,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_31.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc23: -// CHECK:STDOUT: %.loc23_42: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_42: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_36: type = converted %.loc23_42, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_36) // CHECK:STDOUT: @@ -264,7 +264,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc24: -// CHECK:STDOUT: %.loc24_43: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc24_43: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_37: type = converted %.loc24_43, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_37) // CHECK:STDOUT: @@ -307,7 +307,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc25: -// CHECK:STDOUT: %.loc25_43: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc25_43: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc25_37: type = converted %.loc25_43, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_37) // CHECK:STDOUT: @@ -322,7 +322,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt -// CHECK:STDOUT: %.loc26_49.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc26_49.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_49.2: init %empty_tuple.type = tuple_init () to %d.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_3: init %empty_tuple.type = converted %.loc26_49.1, %.loc26_49.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %d.var, %.loc26_3 @@ -349,7 +349,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_33.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc26: -// CHECK:STDOUT: %.loc26_44: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc26_44: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_38: type = converted %.loc26_44, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_38) // CHECK:STDOUT: @@ -417,7 +417,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: br !if.expr.result(%.loc30_28.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: -// CHECK:STDOUT: %.loc30_39: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc30_39: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc30_33: type = converted %.loc30_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result(%.loc30_33) // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/unary_op.carbon b/toolchain/check/testdata/operators/builtin/unary_op.carbon index c4e2bc6f656f..6e57594d9b32 100644 --- a/toolchain/check/testdata/operators/builtin/unary_op.carbon +++ b/toolchain/check/testdata/operators/builtin/unary_op.carbon @@ -44,8 +44,8 @@ fn Constant() { // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %Constant.type: type = fn_type @Constant [concrete] // CHECK:STDOUT: %Constant: %Constant.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %bool.as.Copy.impl.Op.bound: = bound_method %true, %bool.as.Copy.impl.Op [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -142,7 +142,7 @@ fn Constant() { // CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt -// CHECK:STDOUT: %.loc23_43.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_43.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_43.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_3: init %empty_tuple.type = converted %.loc23_43.1, %.loc23_43.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %a.var, %.loc23_3 @@ -160,7 +160,7 @@ fn Constant() { // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_27.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc23: -// CHECK:STDOUT: %.loc23_38: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_38: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc23_32: type = converted %.loc23_38, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_32) // CHECK:STDOUT: @@ -194,7 +194,7 @@ fn Constant() { // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_28.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc24: -// CHECK:STDOUT: %.loc24_39: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc24_39: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_33: type = converted %.loc24_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_33) // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index 3b4aabbcee45..d8fd7e1109e1 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -63,6 +63,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: %AddWith.generic: %AddWith.type.e05 = struct_value () [concrete] // CHECK:STDOUT: %TestRef.type: type = fn_type @TestRef [concrete] // CHECK:STDOUT: %TestRef: %TestRef.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %AddAssignWith.type.fc6: type = generic_interface_type @AddAssignWith [concrete] // CHECK:STDOUT: %AddAssignWith.generic: %AddAssignWith.type.fc6 = struct_value () [concrete] @@ -172,7 +173,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: %a.var_patt: %pattern_type.c48 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %C = var %a.var_patt -// CHECK:STDOUT: %.loc36_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc36_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc36_15.2: init %C = class_init (), %a.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc36_3: init %C = converted %.loc36_15.1, %.loc36_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign %a.var, %.loc36_3 diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 0e137bcca3a8..f7b0cb0b6ad1 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -282,6 +282,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [concrete] // CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [concrete] // CHECK:STDOUT: %ElementType: type = symbolic_binding ElementType, 1 [symbolic] @@ -307,7 +308,6 @@ fn F() { ()[()]; } // CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At.type: type = fn_type @empty_tuple.type.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At: %empty_tuple.type.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.5ee = facet_value %empty_tuple.type, (%IndexWith.impl_witness) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -336,12 +336,12 @@ fn F() { ()[()]; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: impl_decl @empty_tuple.type.as.IndexWith.impl [concrete] {} { -// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%Core.IndexWith [concrete = constants.%IndexWith.generic] -// CHECK:STDOUT: %.loc6_28: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_32: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_28: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_32: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_33.1: type = converted %.loc6_28, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc6_33.2: type = converted %.loc6_32, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%empty_tuple.type, constants.%empty_tuple.type)> [concrete = constants.%IndexWith.type.5ee] @@ -382,14 +382,14 @@ fn F() { ()[()]; } // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc7_40.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_40.2: type = converted %.loc7_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.IndexWith.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param // CHECK:STDOUT: %subscript.param: %empty_tuple.type = value_param call_param1 // CHECK:STDOUT: %.loc7_33.1: type = splice_block %.loc7_33.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_33.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_33.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_33.3: type = converted %.loc7_33.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %subscript: %empty_tuple.type = value_binding subscript, %subscript.param @@ -417,7 +417,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: // CHECK:STDOUT: fn @empty_tuple.type.as.IndexWith.impl.At(%self.param: %empty_tuple.type, %subscript.param: %empty_tuple.type) -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_13.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_13.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_13.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_14: init %empty_tuple.type = converted %.loc8_13.1, %.loc8_13.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc8_14 to %return @@ -425,8 +425,8 @@ fn F() { ()[()]; } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc20_11.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc20_14: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc20_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc20_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc20_11.2: %empty_tuple.type = converted %.loc20_11.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon index ea6b23f02949..c515ec7e38cb 100644 --- a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon +++ b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon @@ -107,6 +107,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.d2d = facet_value %C, (%IndexWith.impl_witness) [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ElementType.val: %ElementType = struct_value () [concrete] // CHECK:STDOUT: %SubscriptType.val: %SubscriptType.8ee = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] @@ -244,7 +245,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.IndexWith.impl.At(%self.param: %C, %subscript.param: %SubscriptType.8ee) -> %return.param: %ElementType { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_13.2: init %ElementType = class_init (), %return [concrete = constants.%ElementType.val] // CHECK:STDOUT: %.loc10_14: init %ElementType = converted %.loc10_13.1, %.loc10_13.2 [concrete = constants.%ElementType.val] // CHECK:STDOUT: return %.loc10_14 to %return @@ -252,8 +253,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %c.ref: %C = name_ref c, file.%c // CHECK:STDOUT: %s.ref: %SubscriptType.8ee = name_ref s, file.%s // CHECK:STDOUT: %impl.elem1: %.bb9 = impl_witness_access constants.%IndexWith.impl_witness, element1 [concrete = constants.%C.as.IndexWith.impl.At] @@ -273,6 +274,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [concrete] // CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [concrete] @@ -310,6 +312,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.f6b: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_5.64b) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -329,7 +332,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.451: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.c57: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_5.0f6) [concrete] +// CHECK:STDOUT: %tuple.bc2: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_5.0f6) [concrete] // CHECK:STDOUT: %.48a: type = fn_type_with_self_type %IndexWith.At.type.1ab, %IndexWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,7 +373,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %i32.loc4_7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc4_12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4_12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_15.1: %tuple.type.24b = tuple_literal (%i32.loc4_7, %i32.loc4_12) +// CHECK:STDOUT: %.loc4_15.1: %tuple.type.24b = tuple_literal (%i32.loc4_7, %i32.loc4_12) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc4_15.2: type = converted %.loc4_15.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %Core.ref.loc4_20: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%Core.IndexWith [concrete = constants.%IndexWith.generic] @@ -405,7 +408,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %i32.loc10_9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc10_14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc10_14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc10_17.2: %tuple.type.24b = tuple_literal (%i32.loc10_9, %i32.loc10_14) +// CHECK:STDOUT: %.loc10_17.2: %tuple.type.24b = tuple_literal (%i32.loc10_9, %i32.loc10_14) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc10_17.3: type = converted %.loc10_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %impl.elem0.loc10_26.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] @@ -422,8 +425,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_26.2: init %i32 = call %bound_method.loc10_26.4(@__global_init.%int_5) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc10_26.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_26.2 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc10_26.4: %i32 = converted @__global_init.%int_5, %.loc10_26.3 [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%.loc10_26.2, %.loc10_26.4) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc10_26.5: %tuple.type.d07 = converted @__global_init.%.loc10, %tuple [concrete = constants.%tuple] +// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%.loc10_26.2, %.loc10_26.4) [concrete = constants.%tuple.bc2] +// CHECK:STDOUT: %.loc10_26.5: %tuple.type.d07 = converted @__global_init.%.loc10, %tuple [concrete = constants.%tuple.bc2] // CHECK:STDOUT: %s: %tuple.type.d07 = value_binding s, %.loc10_26.5 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.7ce = value_binding_pattern e [concrete] @@ -486,7 +489,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %.loc10: %tuple.type.f94 = tuple_literal (%int_1, %int_5) +// CHECK:STDOUT: %.loc10: %tuple.type.f94 = tuple_literal (%int_1, %int_5) [concrete = constants.%tuple.f6b] // CHECK:STDOUT: %s.ref: %tuple.type.d07 = name_ref s, file.%s // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %impl.elem1: %.48a = impl_witness_access constants.%IndexWith.impl_witness, element1 [concrete = constants.%tuple.type.as.IndexWith.impl.At] @@ -522,6 +525,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %pattern_type.c39: type = pattern_type %ElementType [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ElementType.val: %ElementType = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] @@ -645,7 +649,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.IndexWith.impl.At(%self.param: %C, %subscript.param: %SubscriptType.8ee) -> %return.param: %ElementType { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_13.2: init %ElementType = class_init (), %return [concrete = constants.%ElementType.val] // CHECK:STDOUT: %.loc10_14: init %ElementType = converted %.loc10_13.1, %.loc10_13.2 [concrete = constants.%ElementType.val] // CHECK:STDOUT: return %.loc10_14 to %return @@ -653,7 +657,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %c.ref: %C = name_ref c, file.%c // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: return @@ -666,6 +670,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] @@ -727,7 +732,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %c.ref: %C = name_ref c, file.%c // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/packages/cross_package_export.carbon b/toolchain/check/testdata/packages/cross_package_export.carbon index c932cf152ed5..ab80707902f1 100644 --- a/toolchain/check/testdata/packages/cross_package_export.carbon +++ b/toolchain/check/testdata/packages/cross_package_export.carbon @@ -201,6 +201,7 @@ alias C = Other.C; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] @@ -214,7 +215,7 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %C.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type] @@ -387,8 +388,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -432,8 +434,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) +// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc6_25.2: init %empty_tuple.type = tuple_init () to %.loc6_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_26.3: init %empty_tuple.type = converted %.loc6_25.1, %.loc6_25.2 [concrete = constants.%empty_tuple] @@ -451,8 +453,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -497,8 +500,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_26.1: %struct_type.x = struct_literal (%.loc7_25.1) +// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_26.1: %struct_type.x = struct_literal (%.loc7_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc7_25.2: init %empty_tuple.type = tuple_init () to %.loc7_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_26.3: init %empty_tuple.type = converted %.loc7_25.1, %.loc7_25.2 [concrete = constants.%empty_tuple] @@ -516,8 +519,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -562,8 +566,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) +// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc6_25.2: init %empty_tuple.type = tuple_init () to %.loc6_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_26.3: init %empty_tuple.type = converted %.loc6_25.1, %.loc6_25.2 [concrete = constants.%empty_tuple] @@ -581,8 +585,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -625,8 +630,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) +// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc6_25.2: init %empty_tuple.type = tuple_init () to %.loc6_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_26.3: init %empty_tuple.type = converted %.loc6_25.1, %.loc6_25.2 [concrete = constants.%empty_tuple] @@ -644,8 +649,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -689,8 +695,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_26.1: %struct_type.x = struct_literal (%.loc7_25.1) +// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_26.1: %struct_type.x = struct_literal (%.loc7_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc7_25.2: init %empty_tuple.type = tuple_init () to %.loc7_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_26.3: init %empty_tuple.type = converted %.loc7_25.1, %.loc7_25.2 [concrete = constants.%empty_tuple] @@ -708,8 +714,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -752,8 +759,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) +// CHECK:STDOUT: %.loc6_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_26.1: %struct_type.x = struct_literal (%.loc6_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc6_25.2: init %empty_tuple.type = tuple_init () to %.loc6_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_26.3: init %empty_tuple.type = converted %.loc6_25.1, %.loc6_25.2 [concrete = constants.%empty_tuple] @@ -771,8 +778,9 @@ alias C = Other.C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.d43: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -821,8 +829,8 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_26.1: %struct_type.x = struct_literal (%.loc11_25.1) +// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_26.1: %struct_type.x = struct_literal (%.loc11_25.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_26.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.d43] // CHECK:STDOUT: %.loc11_25.2: init %empty_tuple.type = tuple_init () to %.loc11_26.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_26.3: init %empty_tuple.type = converted %.loc11_25.1, %.loc11_25.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/packages/cross_package_import.carbon b/toolchain/check/testdata/packages/cross_package_import.carbon index 5feb8263b479..d36913e91ca7 100644 --- a/toolchain/check/testdata/packages/cross_package_import.carbon +++ b/toolchain/check/testdata/packages/cross_package_import.carbon @@ -250,6 +250,7 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -265,7 +266,7 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param diff --git a/toolchain/check/testdata/packages/export_import.carbon b/toolchain/check/testdata/packages/export_import.carbon index 393332eccda3..4cb28b981888 100644 --- a/toolchain/check/testdata/packages/export_import.carbon +++ b/toolchain/check/testdata/packages/export_import.carbon @@ -195,6 +195,7 @@ export Poison; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] @@ -208,7 +209,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %C.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type] @@ -298,8 +299,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -335,8 +337,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] @@ -356,8 +358,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -394,8 +397,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_20.1: %struct_type.x = struct_literal (%.loc4_19.1) +// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_20.1: %struct_type.x = struct_literal (%.loc4_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc4_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc4_19.2: init %empty_tuple.type = tuple_init () to %.loc4_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_20.3: init %empty_tuple.type = converted %.loc4_19.1, %.loc4_19.2 [concrete = constants.%empty_tuple] @@ -413,8 +416,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -450,8 +454,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] @@ -469,8 +473,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -506,8 +511,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] @@ -525,8 +530,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -562,8 +568,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] @@ -581,8 +587,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -618,8 +625,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] @@ -637,8 +644,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -674,8 +682,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] @@ -693,8 +701,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -730,8 +739,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] @@ -761,8 +770,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -798,8 +808,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] @@ -817,8 +827,9 @@ export Poison; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.960: ref %empty_tuple.type = class_element_access file.%indirect_c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.960: ref %empty_tuple.type = class_element_access file.%indirect_c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -856,8 +867,8 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_28.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_29.1: %struct_type.x = struct_literal (%.loc6_28.1) +// CHECK:STDOUT: %.loc6_28.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_29.1: %struct_type.x = struct_literal (%.loc6_28.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_29.2: ref %empty_tuple.type = class_element_access file.%indirect_c.var, element0 [concrete = constants.%.960] // CHECK:STDOUT: %.loc6_28.2: init %empty_tuple.type = tuple_init () to %.loc6_29.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_29.3: init %empty_tuple.type = converted %.loc6_28.1, %.loc6_28.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/packages/export_mixed.carbon b/toolchain/check/testdata/packages/export_mixed.carbon index b86135278142..f577d7c3284d 100644 --- a/toolchain/check/testdata/packages/export_mixed.carbon +++ b/toolchain/check/testdata/packages/export_mixed.carbon @@ -123,6 +123,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] @@ -142,7 +143,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %C.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.9be] @@ -154,7 +155,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %.loc9_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc9_8: %D.elem = field_decl y, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.9f4] @@ -269,8 +270,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -306,8 +308,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] @@ -325,8 +327,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -362,8 +365,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] @@ -381,8 +384,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -418,8 +422,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] @@ -433,7 +437,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %struct: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -458,8 +464,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc11_19: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_20: %struct_type.y = struct_literal (%.loc11_19) +// CHECK:STDOUT: %.loc11_19: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_20: %struct_type.y = struct_literal (%.loc11_19) [concrete = constants.%struct] // CHECK:STDOUT: assign file.%d.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -472,8 +478,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -509,8 +516,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] @@ -528,13 +535,15 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] +// CHECK:STDOUT: %struct.8ce: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %.452: ref %empty_tuple.type = class_element_access file.%d.var, element0 [concrete] // CHECK:STDOUT: %D.val: %D = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } @@ -592,16 +601,16 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_20.1: %struct_type.x = struct_literal (%.loc8_19.1) +// CHECK:STDOUT: %.loc8_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_20.1: %struct_type.x = struct_literal (%.loc8_19.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %.loc8_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc8_19.2: init %empty_tuple.type = tuple_init () to %.loc8_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_20.3: init %empty_tuple.type = converted %.loc8_19.1, %.loc8_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_20.4: init %C = class_init (%.loc8_20.3), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_20.1, %.loc8_20.4 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc8_1 -// CHECK:STDOUT: %.loc9_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc9_20.1: %struct_type.y = struct_literal (%.loc9_19.1) +// CHECK:STDOUT: %.loc9_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc9_20.1: %struct_type.y = struct_literal (%.loc9_19.1) [concrete = constants.%struct.8ce] // CHECK:STDOUT: %.loc9_20.2: ref %empty_tuple.type = class_element_access file.%d.var, element0 [concrete = constants.%.452] // CHECK:STDOUT: %.loc9_19.2: init %empty_tuple.type = tuple_init () to %.loc9_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_20.3: init %empty_tuple.type = converted %.loc9_19.1, %.loc9_19.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/packages/export_name.carbon b/toolchain/check/testdata/packages/export_name.carbon index e094c713b56d..cb70af43aa53 100644 --- a/toolchain/check/testdata/packages/export_name.carbon +++ b/toolchain/check/testdata/packages/export_name.carbon @@ -210,6 +210,7 @@ private export C; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] @@ -232,7 +233,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %C.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.9be] @@ -244,7 +245,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { -// CHECK:STDOUT: %.loc10_11.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_11.2: type = converted %.loc10_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_8: %NSC.elem = field_decl y, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.9f4] @@ -394,13 +395,15 @@ private export C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %NSC: type = class_type @NSC [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %pattern_type.373: type = pattern_type %NSC [concrete] +// CHECK:STDOUT: %struct.8ce: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %.062: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } @@ -465,16 +468,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.4: init %C = class_init (%.loc6_20.3), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc6_1: init %C = converted %.loc6_20.1, %.loc6_20.4 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc6_1 -// CHECK:STDOUT: %.loc7_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_27.1: %struct_type.y = struct_literal (%.loc7_26.1) +// CHECK:STDOUT: %.loc7_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_27.1: %struct_type.y = struct_literal (%.loc7_26.1) [concrete = constants.%struct.8ce] // CHECK:STDOUT: %.loc7_27.2: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete = constants.%.062] // CHECK:STDOUT: %.loc7_26.2: init %empty_tuple.type = tuple_init () to %.loc7_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_27.3: init %empty_tuple.type = converted %.loc7_26.1, %.loc7_26.2 [concrete = constants.%empty_tuple] @@ -492,13 +495,15 @@ private export C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %NSC: type = class_type @NSC [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %pattern_type.c0b: type = pattern_type %NSC [concrete] +// CHECK:STDOUT: %struct.8ce: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %.0f0: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } @@ -564,16 +569,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_20.1: %struct_type.x = struct_literal (%.loc4_19.1) +// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_20.1: %struct_type.x = struct_literal (%.loc4_19.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %.loc4_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc4_19.2: init %empty_tuple.type = tuple_init () to %.loc4_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_20.3: init %empty_tuple.type = converted %.loc4_19.1, %.loc4_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_20.4: init %C = class_init (%.loc4_20.3), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc4_1: init %C = converted %.loc4_20.1, %.loc4_20.4 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc4_1 -// CHECK:STDOUT: %.loc5_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_27.1: %struct_type.y = struct_literal (%.loc5_26.1) +// CHECK:STDOUT: %.loc5_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_27.1: %struct_type.y = struct_literal (%.loc5_26.1) [concrete = constants.%struct.8ce] // CHECK:STDOUT: %.loc5_27.2: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete = constants.%.0f0] // CHECK:STDOUT: %.loc5_26.2: init %empty_tuple.type = tuple_init () to %.loc5_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_27.3: init %empty_tuple.type = converted %.loc5_26.1, %.loc5_26.2 [concrete = constants.%empty_tuple] @@ -591,13 +596,15 @@ private export C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %NSC: type = class_type @NSC [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %pattern_type.c0b: type = pattern_type %NSC [concrete] +// CHECK:STDOUT: %struct.8ce: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %.0f0: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } @@ -662,16 +669,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.4: init %C = class_init (%.loc6_20.3), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc6_1: init %C = converted %.loc6_20.1, %.loc6_20.4 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc6_1 -// CHECK:STDOUT: %.loc7_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_27.1: %struct_type.y = struct_literal (%.loc7_26.1) +// CHECK:STDOUT: %.loc7_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_27.1: %struct_type.y = struct_literal (%.loc7_26.1) [concrete = constants.%struct.8ce] // CHECK:STDOUT: %.loc7_27.2: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete = constants.%.0f0] // CHECK:STDOUT: %.loc7_26.2: init %empty_tuple.type = tuple_init () to %.loc7_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_27.3: init %empty_tuple.type = converted %.loc7_26.1, %.loc7_26.2 [concrete = constants.%empty_tuple] @@ -768,13 +775,15 @@ private export C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %NSC: type = class_type @NSC [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %pattern_type.d03: type = pattern_type %NSC [concrete] +// CHECK:STDOUT: %struct.8ce: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %.99d: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } @@ -839,16 +848,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.4: init %C = class_init (%.loc7_20.3), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_20.1, %.loc7_20.4 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc7_1 -// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_27.1: %struct_type.y = struct_literal (%.loc8_26.1) +// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_27.1: %struct_type.y = struct_literal (%.loc8_26.1) [concrete = constants.%struct.8ce] // CHECK:STDOUT: %.loc8_27.2: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete = constants.%.99d] // CHECK:STDOUT: %.loc8_26.2: init %empty_tuple.type = tuple_init () to %.loc8_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_27.3: init %empty_tuple.type = converted %.loc8_26.1, %.loc8_26.2 [concrete = constants.%empty_tuple] @@ -866,13 +875,15 @@ private export C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct.948: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %NSC: type = class_type @NSC [concrete] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %pattern_type.373: type = pattern_type %NSC [concrete] +// CHECK:STDOUT: %struct.8ce: %struct_type.y = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %.062: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } @@ -937,16 +948,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) +// CHECK:STDOUT: %.loc7_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_20.1: %struct_type.x = struct_literal (%.loc7_19.1) [concrete = constants.%struct.948] // CHECK:STDOUT: %.loc7_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc7_19.2: init %empty_tuple.type = tuple_init () to %.loc7_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.3: init %empty_tuple.type = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_20.4: init %C = class_init (%.loc7_20.3), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_20.1, %.loc7_20.4 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc7_1 -// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_27.1: %struct_type.y = struct_literal (%.loc8_26.1) +// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_27.1: %struct_type.y = struct_literal (%.loc8_26.1) [concrete = constants.%struct.8ce] // CHECK:STDOUT: %.loc8_27.2: ref %empty_tuple.type = class_element_access file.%nsc.var, element0 [concrete = constants.%.062] // CHECK:STDOUT: %.loc8_26.2: init %empty_tuple.type = tuple_init () to %.loc8_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_27.3: init %empty_tuple.type = converted %.loc8_26.1, %.loc8_26.2 [concrete = constants.%empty_tuple] @@ -1022,8 +1033,9 @@ private export C; // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.b62: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1059,8 +1071,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) +// CHECK:STDOUT: %.loc6_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_20.1: %struct_type.x = struct_literal (%.loc6_19.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_20.2: ref %empty_tuple.type = class_element_access file.%c.var, element0 [concrete = constants.%.b62] // CHECK:STDOUT: %.loc6_19.2: init %empty_tuple.type = tuple_init () to %.loc6_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_20.3: init %empty_tuple.type = converted %.loc6_19.1, %.loc6_19.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/packages/fail_export_name_member.carbon b/toolchain/check/testdata/packages/fail_export_name_member.carbon index 23737d71b320..0b2652ca2301 100644 --- a/toolchain/check/testdata/packages/fail_export_name_member.carbon +++ b/toolchain/check/testdata/packages/fail_export_name_member.carbon @@ -43,6 +43,7 @@ export C.n; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_struct_type [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [concrete] @@ -56,7 +57,7 @@ export C.n; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5_11.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc5_8: %C.elem = field_decl n, element0 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type] diff --git a/toolchain/check/testdata/packages/fail_import_type_error.carbon b/toolchain/check/testdata/packages/fail_import_type_error.carbon index d45f22c92ea7..f9a30e5b0bf9 100644 --- a/toolchain/check/testdata/packages/fail_import_type_error.carbon +++ b/toolchain/check/testdata/packages/fail_import_type_error.carbon @@ -81,7 +81,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %b_ref.var: ref = var %b_ref.var_patt [concrete = ] // CHECK:STDOUT: %.1: = splice_block [concrete = ] { // CHECK:STDOUT: %x.ref.loc13: = name_ref x, [concrete = ] -// CHECK:STDOUT: %.loc13: = struct_literal (%x.ref.loc13) +// CHECK:STDOUT: %.loc13: = struct_literal (%x.ref.loc13) [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %b_ref: ref = ref_binding b_ref, [concrete = ] // CHECK:STDOUT: name_binding_decl { @@ -91,7 +91,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %c_ref.var: ref = var %c_ref.var_patt [concrete = ] // CHECK:STDOUT: %.2: = splice_block [concrete = ] { // CHECK:STDOUT: %x.ref.loc18: = name_ref x, [concrete = ] -// CHECK:STDOUT: %.loc18: = tuple_literal (%x.ref.loc18) +// CHECK:STDOUT: %.loc18: = tuple_literal (%x.ref.loc18) [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %c_ref: ref = ref_binding c_ref, [concrete = ] // CHECK:STDOUT: name_binding_decl { diff --git a/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon b/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon index a9f290e5652f..d5448aab10bf 100644 --- a/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon +++ b/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon @@ -26,6 +26,7 @@ var a: () = A(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -42,7 +43,7 @@ var a: () = A(); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc8_9.1: type = splice_block %.loc8_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_9.3: type = converted %.loc8_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] diff --git a/toolchain/check/testdata/packages/implicit_imports_entities.carbon b/toolchain/check/testdata/packages/implicit_imports_entities.carbon index a2567b750311..db581a119e76 100644 --- a/toolchain/check/testdata/packages/implicit_imports_entities.carbon +++ b/toolchain/check/testdata/packages/implicit_imports_entities.carbon @@ -330,6 +330,7 @@ import Other library "o1"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.fec: type = pattern_type %C1 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C1.val: %C1 = struct_value () [concrete] // CHECK:STDOUT: %C2: type = class_type @C2 [concrete] // CHECK:STDOUT: %pattern_type.838: type = pattern_type %C2 [concrete] @@ -386,11 +387,11 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_15.2: init %C1 = class_init (), file.%c1.var [concrete = constants.%C1.val] // CHECK:STDOUT: %.loc6_1: init %C1 = converted %.loc6_15.1, %.loc6_15.2 [concrete = constants.%C1.val] // CHECK:STDOUT: assign file.%c1.var, %.loc6_1 -// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_15.2: init %C2 = class_init (), file.%c2.var [concrete = constants.%C2.val] // CHECK:STDOUT: %.loc7_1: init %C2 = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C2.val] // CHECK:STDOUT: assign file.%c2.var, %.loc7_1 @@ -417,6 +418,7 @@ import Other library "o1"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C1 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C1.val: %C1 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -451,7 +453,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_15.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_15.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_15.2: init %C1 = class_init (), file.%c1.var [concrete = constants.%C1.val] // CHECK:STDOUT: %.loc6_1: init %C1 = converted %.loc6_15.1, %.loc6_15.2 [concrete = constants.%C1.val] // CHECK:STDOUT: assign file.%c1.var, %.loc6_1 @@ -482,6 +484,7 @@ import Other library "o1"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -523,7 +526,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_16.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc4_1: init %C = converted %.loc4_16.1, %.loc4_16.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc4_1 @@ -552,6 +555,7 @@ import Other library "o1"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.b5b: type = pattern_type %O1 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %O1.val: %O1 = struct_value () [concrete] // CHECK:STDOUT: %O2: type = class_type @O2 [concrete] // CHECK:STDOUT: %pattern_type.7dd: type = pattern_type %O2 [concrete] @@ -620,11 +624,11 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_21.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_21.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_21.2: init %O1 = class_init (), file.%o1.var [concrete = constants.%O1.val] // CHECK:STDOUT: %.loc6_1: init %O1 = converted %.loc6_21.1, %.loc6_21.2 [concrete = constants.%O1.val] // CHECK:STDOUT: assign file.%o1.var, %.loc6_1 -// CHECK:STDOUT: %.loc7_21.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_21.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_21.2: init %O2 = class_init (), file.%o2.var [concrete = constants.%O2.val] // CHECK:STDOUT: %.loc7_1: init %O2 = converted %.loc7_21.1, %.loc7_21.2 [concrete = constants.%O2.val] // CHECK:STDOUT: assign file.%o2.var, %.loc7_1 @@ -653,6 +657,7 @@ import Other library "o1"; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %O1 [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %O1.val: %O1 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -695,7 +700,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc6_21.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_21.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_21.2: init %O1 = class_init (), file.%o1.var [concrete = constants.%O1.val] // CHECK:STDOUT: %.loc6_1: init %O1 = converted %.loc6_21.1, %.loc6_21.2 [concrete = constants.%O1.val] // CHECK:STDOUT: assign file.%o1.var, %.loc6_1 diff --git a/toolchain/check/testdata/packages/loaded_global.carbon b/toolchain/check/testdata/packages/loaded_global.carbon index 3a7f1a56062b..d67760fa181b 100644 --- a/toolchain/check/testdata/packages/loaded_global.carbon +++ b/toolchain/check/testdata/packages/loaded_global.carbon @@ -62,6 +62,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -85,7 +86,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] @@ -95,7 +96,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %package_a.var: ref %empty_tuple.type = var %package_a.var_patt [concrete] // CHECK:STDOUT: %.loc6_17.1: type = splice_block %.loc6_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_17.3: type = converted %.loc6_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %package_a: ref %empty_tuple.type = ref_binding package_a, %package_a.var [concrete = %package_a.var] @@ -135,6 +136,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] @@ -157,7 +159,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var [concrete = %b.var] @@ -167,7 +169,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: } // CHECK:STDOUT: %package_b.var: ref %empty_tuple.type = var %package_b.var_patt [concrete] // CHECK:STDOUT: %.loc8_17.1: type = splice_block %.loc8_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_17.3: type = converted %.loc8_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %package_b: ref %empty_tuple.type = ref_binding package_b, %package_b.var [concrete = %package_b.var] diff --git a/toolchain/check/testdata/packages/missing_prelude.carbon b/toolchain/check/testdata/packages/missing_prelude.carbon index 8a0a65df2344..de8722f03f3c 100644 --- a/toolchain/check/testdata/packages/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/missing_prelude.carbon @@ -167,10 +167,10 @@ var n: {} = i32; // CHECK:STDOUT: %N: %T = symbolic_binding N, 1 [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -183,7 +183,7 @@ var n: {} = i32; // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc4_29.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_29.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_29.2: type = converted %.loc4_29.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_8.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_8.1 (constants.%T)] @@ -206,7 +206,7 @@ var n: {} = i32; // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_struct_type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_41.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_41.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_41.2: init %empty_struct_type = struct_init () to %return [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_42: init %empty_struct_type = converted %.loc4_41.1, %.loc4_41.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: return %.loc4_42 to %return @@ -223,6 +223,7 @@ var n: {} = i32; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] @@ -256,7 +257,7 @@ var n: {} = i32; // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %empty_struct_type = var %n.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %n: ref %empty_struct_type = ref_binding n, %n.var [concrete = %n.var] @@ -305,10 +306,10 @@ var n: {} = i32; // CHECK:STDOUT: %N: %T = symbolic_binding N, 1 [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %Int.specific_fn: = specific_function %Int, @Int(Core.IntLiteral, %int_32) [concrete] @@ -325,7 +326,7 @@ var n: {} = i32; // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc8_29.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_29.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_29.2: type = converted %.loc8_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc8_8.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_8.1 (constants.%T)] @@ -343,7 +344,7 @@ var n: {} = i32; // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %empty_tuple.type = var %n.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %n: ref %empty_tuple.type = ref_binding n, %n.var [concrete = %n.var] @@ -358,7 +359,7 @@ var n: {} = i32; // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8_41.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_41.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_41.2: init %empty_tuple.type = tuple_init () to %return [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_42: init %empty_tuple.type = converted %.loc8_41.1, %.loc8_41.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: return %.loc8_42 to %return diff --git a/toolchain/check/testdata/packages/raw_core.carbon b/toolchain/check/testdata/packages/raw_core.carbon index 1b3a5c762db8..ff559f876122 100644 --- a/toolchain/check/testdata/packages/raw_core.carbon +++ b/toolchain/check/testdata/packages/raw_core.carbon @@ -221,6 +221,7 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.035, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.2ab: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] +// CHECK:STDOUT: %struct: %struct_type.n = struct_value (%int_0.6a9) [concrete] // CHECK:STDOUT: %.269: ref %i32 = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] @@ -299,7 +300,7 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc6_25.2(%int_0) [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_25.2: %i32 = converted %int_0, %.loc6_25.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_40.1: %struct_type.n = struct_literal (%.loc6_25.2) +// CHECK:STDOUT: %.loc6_40.1: %struct_type.n = struct_literal (%.loc6_25.2) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0.loc6_25.2: %.65f = impl_witness_access constants.%Copy.impl_witness.fb7, element0 [concrete = constants.%Int.as.Copy.impl.Op.dfd] // CHECK:STDOUT: %bound_method.loc6_25.3: = bound_method %.loc6_25.2, %impl.elem0.loc6_25.2 [concrete = constants.%Int.as.Copy.impl.Op.bound] // CHECK:STDOUT: %specific_fn.loc6_25.2: = specific_function %impl.elem0.loc6_25.2, @Int.as.Copy.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] diff --git a/toolchain/check/testdata/patterns/tuple.carbon b/toolchain/check/testdata/patterns/tuple.carbon index 81810a374661..14ff92c84660 100644 --- a/toolchain/check/testdata/patterns/tuple.carbon +++ b/toolchain/check/testdata/patterns/tuple.carbon @@ -44,10 +44,11 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -57,14 +58,14 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: %.loc5_18: %pattern_type.5b8 = tuple_pattern (%a.patt, %b.patt) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5_10.1: type = splice_block %.loc5_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_10.3: type = converted %.loc5_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple.loc5_24: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_24: %empty_tuple.type = converted @__global_init.%.loc5_24, %empty_tuple.loc5_24 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %a: %empty_tuple.type = value_binding a, %.loc5_24 // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_17.3: type = converted %.loc5_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple.loc5_28: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -74,9 +75,9 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc5_24: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_28: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_29: %tuple.type = tuple_literal (%.loc5_24, %.loc5_28) +// CHECK:STDOUT: %.loc5_24: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_28: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_29: %tuple.type = tuple_literal (%.loc5_24, %.loc5_28) [concrete = constants.%tuple] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -84,12 +85,12 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -102,14 +103,14 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %.loc7_24.1, element0 // CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access %.loc7_24.1, element1 // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_10.3: type = converted %.loc7_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.loc7_24.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_24.2: %empty_tuple.type = converted %tuple.elem0, %tuple.loc7_24.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %a: %empty_tuple.type = value_binding a, %.loc7_24.2 // CHECK:STDOUT: %.loc7_17.1: type = splice_block %.loc7_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_17.3: type = converted %.loc7_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.loc7_24.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -129,12 +130,12 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%t.var, element0 [concrete] // CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%t.var, element1 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -146,14 +147,14 @@ let (a: (), b: ()) = t; // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access @__global_init.%t.ref, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access @__global_init.%t.ref, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_10.3: type = converted %.loc6_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.loc6_22.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_22.1: %empty_tuple.type = converted %tuple.elem0, %tuple.loc6_22.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %a: %empty_tuple.type = value_binding a, %.loc6_22.1 // CHECK:STDOUT: %.loc6_17.1: type = splice_block %.loc6_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_17.3: type = converted %.loc6_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.loc6_22.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/patterns/underscore.carbon b/toolchain/check/testdata/patterns/underscore.carbon index 9024316ff348..ae9766b2391b 100644 --- a/toolchain/check/testdata/patterns/underscore.carbon +++ b/toolchain/check/testdata/patterns/underscore.carbon @@ -113,9 +113,9 @@ fn F() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -146,7 +146,7 @@ fn F() -> {} { // CHECK:STDOUT: %_.patt.loc4: %pattern_type.a96 = value_binding_pattern _ [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] @@ -158,7 +158,7 @@ fn F() -> {} { // CHECK:STDOUT: } // CHECK:STDOUT: %_.var: ref %empty_struct_type = var %_.var_patt // CHECK:STDOUT: %.loc5_9.1: type = splice_block %.loc5_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc5_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_9.3: type = converted %.loc5_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc5: ref %empty_struct_type = ref_binding _, %_.var @@ -170,9 +170,9 @@ fn F() -> {} { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %_.patt.loc8: %pattern_type.a96 = value_binding_pattern _ [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_11.1: type = splice_block %.loc8_11.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc8_11.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_11.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_11.3: type = converted %.loc8_11.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] @@ -183,12 +183,12 @@ fn F() -> {} { // CHECK:STDOUT: %_.var_patt: %pattern_type.a96 = var_pattern %_.patt.loc9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %_.var: ref %empty_struct_type = var %_.var_patt -// CHECK:STDOUT: %.loc9_16.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_16.2: init %empty_struct_type = struct_init () to %_.var [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_3: init %empty_struct_type = converted %.loc9_16.1, %.loc9_16.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: assign %_.var, %.loc9_3 // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc9_11.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_11.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_11.3: type = converted %.loc9_11.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc9: ref %empty_struct_type = ref_binding _, %_.var @@ -202,8 +202,8 @@ fn F() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc5_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_14.2: init %empty_struct_type = struct_init () to file.%_.var [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_1: init %empty_struct_type = converted %.loc5_14.1, %.loc5_14.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%_.var, %.loc5_1 @@ -214,6 +214,7 @@ fn F() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -222,7 +223,6 @@ fn F() -> {} { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -246,7 +246,7 @@ fn F() -> {} { // CHECK:STDOUT: } { // CHECK:STDOUT: %_.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %_: %empty_struct_type = value_binding _, %_.param @@ -257,7 +257,7 @@ fn F() -> {} { // CHECK:STDOUT: } { // CHECK:STDOUT: %_.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_10.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_10.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_10.3: type = converted %.loc6_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %_: %empty_struct_type = value_binding _, %_.param @@ -275,7 +275,7 @@ fn F() -> {} { // CHECK:STDOUT: fn @H() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc9_6.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_6.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_6.2: %empty_struct_type = converted %.loc9_6.1, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc9_6.2) @@ -295,6 +295,7 @@ fn F() -> {} { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -335,7 +336,7 @@ fn F() -> {} { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc7_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_7: type = converted %.loc7_6, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() @@ -365,6 +366,7 @@ fn F() -> {} { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -400,7 +402,7 @@ fn F() -> {} { // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc14_6: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_6: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_7: type = converted %.loc14_6, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() diff --git a/toolchain/check/testdata/pointer/address_of_lvalue.carbon b/toolchain/check/testdata/pointer/address_of_lvalue.carbon index ba4b98253b04..cc273d2f6e97 100644 --- a/toolchain/check/testdata/pointer/address_of_lvalue.carbon +++ b/toolchain/check/testdata/pointer/address_of_lvalue.carbon @@ -40,6 +40,7 @@ fn F() { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -59,7 +60,7 @@ fn F() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.ed5: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.8dd: type = pattern_type %ptr.3ee [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] @@ -81,11 +82,13 @@ fn F() { // CHECK:STDOUT: %.cbc: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.687 [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn.a8f: = specific_function %ptr.as.Copy.impl.Op.687, @ptr.as.Copy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %ptr.261: type = ptr_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] +// CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -146,7 +149,7 @@ fn F() { // CHECK:STDOUT: %s.var: ref %struct_type.a.b.501 = var %s.var_patt // CHECK:STDOUT: %int_1.loc16: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc16: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc16_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc16, %int_2.loc16) +// CHECK:STDOUT: %.loc16_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc16, %int_2.loc16) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %impl.elem0.loc16_46.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc16_46.1: = bound_method %int_1.loc16, %impl.elem0.loc16_46.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc16_46.1: = specific_function %impl.elem0.loc16_46.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -163,8 +166,8 @@ fn F() { // CHECK:STDOUT: %.loc16_46.5: init %i32 = converted %int_2.loc16, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_46.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_46.6: ref %i32 = struct_access %s.var, element1 // CHECK:STDOUT: %.loc16_46.7: init %i32 = initialize_from %.loc16_46.5 to %.loc16_46.6 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16_46.8: init %struct_type.a.b.501 = struct_init (%.loc16_46.4, %.loc16_46.7) to %s.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc16_3: init %struct_type.a.b.501 = converted %.loc16_46.1, %.loc16_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc16_46.8: init %struct_type.a.b.501 = struct_init (%.loc16_46.4, %.loc16_46.7) to %s.var [concrete = constants.%struct.ed5] +// CHECK:STDOUT: %.loc16_3: init %struct_type.a.b.501 = converted %.loc16_46.1, %.loc16_46.8 [concrete = constants.%struct.ed5] // CHECK:STDOUT: assign %s.var, %.loc16_3 // CHECK:STDOUT: %.loc16_27: type = splice_block %struct_type.a.b.loc16 [concrete = constants.%struct_type.a.b.501] { // CHECK:STDOUT: %int_32.loc16_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -243,7 +246,7 @@ fn F() { // CHECK:STDOUT: %t.var: ref %tuple.type.d07 = var %t.var_patt // CHECK:STDOUT: %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc22: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc22_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc22, %int_2.loc22) +// CHECK:STDOUT: %.loc22_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc22, %int_2.loc22) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %impl.elem0.loc22_28.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc22_28.1: = bound_method %int_1.loc22, %impl.elem0.loc22_28.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc22_28.1: = specific_function %impl.elem0.loc22_28.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -260,15 +263,15 @@ fn F() { // CHECK:STDOUT: %.loc22_28.4: init %i32 = converted %int_2.loc22, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_28.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.elem1.loc22: ref %i32 = tuple_access %t.var, element1 // CHECK:STDOUT: %.loc22_28.5: init %i32 = initialize_from %.loc22_28.4 to %tuple.elem1.loc22 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc22_28.6: init %tuple.type.d07 = tuple_init (%.loc22_28.3, %.loc22_28.5) to %t.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc22_3: init %tuple.type.d07 = converted %.loc22_28.1, %.loc22_28.6 [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc22_28.6: init %tuple.type.d07 = tuple_init (%.loc22_28.3, %.loc22_28.5) to %t.var [concrete = constants.%tuple.21c] +// CHECK:STDOUT: %.loc22_3: init %tuple.type.d07 = converted %.loc22_28.1, %.loc22_28.6 [concrete = constants.%tuple.21c] // CHECK:STDOUT: assign %t.var, %.loc22_3 // CHECK:STDOUT: %.loc22_19.1: type = splice_block %.loc22_19.3 [concrete = constants.%tuple.type.d07] { // CHECK:STDOUT: %int_32.loc22_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc22_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22_19.2: %tuple.type.24b = tuple_literal (%i32.loc22_11, %i32.loc22_16) +// CHECK:STDOUT: %.loc22_19.2: %tuple.type.24b = tuple_literal (%i32.loc22_11, %i32.loc22_16) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc22_19.3: type = converted %.loc22_19.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %t: ref %tuple.type.d07 = ref_binding t, %t.var diff --git a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon index c68ce4c9aaed..2bd6cff0350f 100644 --- a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon @@ -96,20 +96,20 @@ fn Deref(n: i32) { // CHECK:STDOUT: %n.ref.loc25: %i32 = name_ref n, %n // CHECK:STDOUT: %.loc25: ref = deref %n.ref.loc25 // CHECK:STDOUT: %foo.ref.loc25: = name_ref foo, [concrete = ] -// CHECK:STDOUT: %.loc30_5.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc30_5.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc30: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc30_5.2: %empty_tuple.type = converted %.loc30_5.1, %empty_tuple.loc30 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc30_3: ref = deref %.loc30_5.2 [concrete = ] -// CHECK:STDOUT: %.loc35_4.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc35_4.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc35: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc35_4.2: %empty_tuple.type = converted %.loc35_4.1, %empty_tuple.loc35 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc35_5: ref = deref %.loc35_4.2 [concrete = ] // CHECK:STDOUT: %foo.ref.loc35: = name_ref foo, [concrete = ] -// CHECK:STDOUT: %.loc40_5.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc40_5.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct.loc40: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc40_5.2: %empty_struct_type = converted %.loc40_5.1, %empty_struct.loc40 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc40_3: ref = deref %.loc40_5.2 [concrete = ] -// CHECK:STDOUT: %.loc45_4.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc45_4.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct.loc45: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc45_4.2: %empty_struct_type = converted %.loc45_4.1, %empty_struct.loc45 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc45_5: ref = deref %.loc45_4.2 [concrete = ] diff --git a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon index cd11451e2d14..e39d62feff0f 100644 --- a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon @@ -27,6 +27,7 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %const.c48: type = const_type %empty_struct_type [concrete] // CHECK:STDOUT: %ptr.bf9: type = ptr_type %const.c48 [concrete] // CHECK:STDOUT: %pattern_type.db0: type = pattern_type %ptr.bf9 [concrete] @@ -60,13 +61,13 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: %return.patt: %pattern_type.3c6 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.3c6 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_43: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_43: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_44: type = converted %.loc15_43, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc15_44: type = ptr_type %.loc15_44 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %const.loc15_35: type = const_type %ptr.loc15_44 [concrete = constants.%const.987] // CHECK:STDOUT: %p.param: %ptr.bf9 = value_param call_param0 // CHECK:STDOUT: %.loc15_29: type = splice_block %ptr.loc15_29 [concrete = constants.%ptr.bf9] { -// CHECK:STDOUT: %.loc15_28: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_28: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_21: type = converted %.loc15_28, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %const.loc15_21: type = const_type %.loc15_21 [concrete = constants.%const.c48] // CHECK:STDOUT: %ptr.loc15_29: type = ptr_type %const.loc15_21 [concrete = constants.%ptr.bf9] diff --git a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon index ca695389a84d..c4bc7f1058e4 100644 --- a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon +++ b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon @@ -23,6 +23,7 @@ fn F() -> () { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -36,7 +37,7 @@ fn F() -> () { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param diff --git a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon index fda587a03aef..b7cdd0a72fd3 100644 --- a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon @@ -24,6 +24,7 @@ fn Procedure() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Procedure.type: type = fn_type @Procedure [concrete] // CHECK:STDOUT: %Procedure: %Procedure.type = struct_value () [concrete] @@ -37,7 +38,7 @@ fn Procedure() -> {} { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc15_20.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_20.2: type = converted %.loc15_20.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index 5dbd3828f79b..7c51df22c3f9 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -82,6 +82,7 @@ fn G() -> C { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.dfc: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] @@ -187,7 +188,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc29_38.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc29_38.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0.loc29_38.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc29_38.1: = bound_method %int_1, %impl.elem0.loc29_38.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc29_38.1: = specific_function %impl.elem0.loc29_38.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon b/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon index d79dffb2d19a..20538e96663c 100644 --- a/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon @@ -54,8 +54,8 @@ fn ForgotReturnType() { // CHECK:STDOUT: %Procedure.type: type = fn_type @Procedure [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Procedure: %Procedure.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -90,12 +90,12 @@ fn ForgotReturnType() { // CHECK:STDOUT: %v.var_patt: %pattern_type.cb1 = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt -// CHECK:STDOUT: %.loc12_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_25.2: init %empty_tuple.type = tuple_init () to %v.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = converted %.loc12_25.1, %.loc12_25.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %v.var, %.loc12_12 // CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_20.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_20.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_20.3: type = converted %.loc12_20.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var @@ -113,8 +113,8 @@ fn ForgotReturnType() { // CHECK:STDOUT: %ForgotReturnType.type: type = fn_type @ForgotReturnType [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %ForgotReturnType: %ForgotReturnType.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -149,12 +149,12 @@ fn ForgotReturnType() { // CHECK:STDOUT: %v.var_patt: %pattern_type.cb1 = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt -// CHECK:STDOUT: %.loc12_25.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_25.2: init %empty_tuple.type = tuple_init () to %v.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = converted %.loc12_25.1, %.loc12_25.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %v.var, %.loc12_12 // CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_20.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_20.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_20.3: type = converted %.loc12_20.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 817a3a7ddc61..d2fa0e430e49 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -72,6 +72,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %struct_type.n.m.819: type = struct_type {.n: Core.IntLiteral, .m: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.n.m.819 = struct_value (%int_0.5c6, %int_0.5c6) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -556,7 +557,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0.loc6_31: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_0.loc6_39: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc6_40.1: %struct_type.n.m.819 = struct_literal (%int_0.loc6_31, %int_0.loc6_39) +// CHECK:STDOUT: %.loc6_40.1: %struct_type.n.m.819 = struct_literal (%int_0.loc6_31, %int_0.loc6_39) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0.loc6_40.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc6_40.1: = bound_method %int_0.loc6_31, %impl.elem0.loc6_40.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0b3] // CHECK:STDOUT: %specific_fn.loc6_40.1: = specific_function %impl.elem0.loc6_40.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -711,6 +712,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %F0: %F0.type = struct_value () [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -1030,7 +1032,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc7 br !if.then.loc7 else br !if.else.loc7 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc7: -// CHECK:STDOUT: %.loc7_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc7: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc7: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] @@ -1064,7 +1066,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc8 br !if.then.loc8 else br !if.else.loc8 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc8: -// CHECK:STDOUT: %.loc8_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc8: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc8: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] @@ -1103,7 +1105,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc9 br !if.then.loc9 else br !if.else.loc9 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc9: -// CHECK:STDOUT: %.loc9_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc9: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc9: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] @@ -1147,7 +1149,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc10 br !if.then.loc10 else br !if.else.loc10 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc10: -// CHECK:STDOUT: %.loc10_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc10_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc10: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc10: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] @@ -1196,7 +1198,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc11 br !if.then.loc11 else br !if.else.loc11 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc11: -// CHECK:STDOUT: %.loc11_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc11_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc11: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc11: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] @@ -1250,7 +1252,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc12 br !if.then.loc12 else br !if.else.loc12 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc12: -// CHECK:STDOUT: %.loc12_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc12_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc12: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc12: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] @@ -1309,7 +1311,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc13 br !if.then.loc13 else br !if.else.loc13 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc13: -// CHECK:STDOUT: %.loc13_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc13_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc13: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc13: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] @@ -1373,7 +1375,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: if %false.loc14 br !if.then.loc14 else br !if.else.loc14 // CHECK:STDOUT: // CHECK:STDOUT: !if.then.loc14: -// CHECK:STDOUT: %.loc14_24.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_24.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %P.ref.loc14: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc14: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index 7de27a6f16b7..fb34d61354d0 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -45,6 +45,7 @@ fn G() -> i32 { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -148,7 +149,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc21_43.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc21_43.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct] // CHECK:STDOUT: %impl.elem0.loc21_43.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc21_43.1: = bound_method %int_1, %impl.elem0.loc21_43.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc21_43.1: = specific_function %impl.elem0.loc21_43.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] diff --git a/toolchain/check/testdata/return/struct.carbon b/toolchain/check/testdata/return/struct.carbon index cbf84bf8e1f9..8a739315b819 100644 --- a/toolchain/check/testdata/return/struct.carbon +++ b/toolchain/check/testdata/return/struct.carbon @@ -29,6 +29,7 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.001: %struct_type.a.a6c = struct_value (%int_3.1ba) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -45,7 +46,7 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%int_3.822) [concrete] +// CHECK:STDOUT: %struct.384: %struct_type.a.ba9 = struct_value (%int_3.822) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -82,15 +83,15 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: fn @Main() -> %struct_type.a.ba9 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc16_17.1: %struct_type.a.a6c = struct_literal (%int_3) +// CHECK:STDOUT: %.loc16_17.1: %struct_type.a.a6c = struct_literal (%int_3) [concrete = constants.%struct.001] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc16_17.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_17.2: = bound_method %int_3, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_17.2(%int_3) [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc16_17.2: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc16_17.3: init %struct_type.a.ba9 = struct_init (%.loc16_17.2) to %return [concrete = constants.%struct] -// CHECK:STDOUT: %.loc16_18: init %struct_type.a.ba9 = converted %.loc16_17.1, %.loc16_17.3 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc16_17.3: init %struct_type.a.ba9 = struct_init (%.loc16_17.2) to %return [concrete = constants.%struct.384] +// CHECK:STDOUT: %.loc16_18: init %struct_type.a.ba9 = converted %.loc16_17.1, %.loc16_17.3 [concrete = constants.%struct.384] // CHECK:STDOUT: return %.loc16_18 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/tuple.carbon b/toolchain/check/testdata/return/tuple.carbon index 36be887b5712..868cd992a3e1 100644 --- a/toolchain/check/testdata/return/tuple.carbon +++ b/toolchain/check/testdata/return/tuple.carbon @@ -25,6 +25,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -32,6 +33,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %int_15.447: Core.IntLiteral = int_value 15 [concrete] // CHECK:STDOUT: %int_35.c79: Core.IntLiteral = int_value 35 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.1b5: %tuple.type.f94 = tuple_value (%int_15.447, %int_35.c79) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -51,7 +53,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9aa: = bound_method %int_35.c79, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9c2: = bound_method %int_35.c79, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_35.c78: %i32 = int_value 35 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_15.7f7, %int_35.c78) [concrete] +// CHECK:STDOUT: %tuple.851: %tuple.type.d07 = tuple_value (%int_15.7f7, %int_35.c78) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -81,7 +83,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %i32.loc16_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc16_20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16_23.1: %tuple.type.24b = tuple_literal (%i32.loc16_15, %i32.loc16_20) +// CHECK:STDOUT: %.loc16_23.1: %tuple.type.24b = tuple_literal (%i32.loc16_15, %i32.loc16_20) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc16_23.2: type = converted %.loc16_23.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %return.param: ref %tuple.type.d07 = out_param call_param0 // CHECK:STDOUT: %return: ref %tuple.type.d07 = return_slot %return.param @@ -92,7 +94,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_15: Core.IntLiteral = int_value 15 [concrete = constants.%int_15.447] // CHECK:STDOUT: %int_35: Core.IntLiteral = int_value 35 [concrete = constants.%int_35.c79] -// CHECK:STDOUT: %.loc17_17.1: %tuple.type.f94 = tuple_literal (%int_15, %int_35) +// CHECK:STDOUT: %.loc17_17.1: %tuple.type.f94 = tuple_literal (%int_15, %int_35) [concrete = constants.%tuple.1b5] // CHECK:STDOUT: %impl.elem0.loc17_17.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc17_17.1: = bound_method %int_15, %impl.elem0.loc17_17.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.023] // CHECK:STDOUT: %specific_fn.loc17_17.1: = specific_function %impl.elem0.loc17_17.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -109,8 +111,8 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %.loc17_17.4: init %i32 = converted %int_35, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_17.2 [concrete = constants.%int_35.c78] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc17_17.5: init %i32 = initialize_from %.loc17_17.4 to %tuple.elem1 [concrete = constants.%int_35.c78] -// CHECK:STDOUT: %.loc17_17.6: init %tuple.type.d07 = tuple_init (%.loc17_17.3, %.loc17_17.5) to %return [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc17_18: init %tuple.type.d07 = converted %.loc17_17.1, %.loc17_17.6 [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc17_17.6: init %tuple.type.d07 = tuple_init (%.loc17_17.3, %.loc17_17.5) to %return [concrete = constants.%tuple.851] +// CHECK:STDOUT: %.loc17_18: init %tuple.type.d07 = converted %.loc17_17.1, %.loc17_17.6 [concrete = constants.%tuple.851] // CHECK:STDOUT: return %.loc17_18 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/empty.carbon b/toolchain/check/testdata/struct/empty.carbon index 5b035919face..adab41865909 100644 --- a/toolchain/check/testdata/struct/empty.carbon +++ b/toolchain/check/testdata/struct/empty.carbon @@ -19,8 +19,8 @@ var y: {} = x; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -34,7 +34,7 @@ var y: {} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_struct_type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc15_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = ref_binding x, %x.var [concrete = %x.var] @@ -44,7 +44,7 @@ var y: {} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %empty_struct_type = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc16_9.1: type = splice_block %.loc16_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc16_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc16_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc16_9.3: type = converted %.loc16_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = ref_binding y, %y.var [concrete = %y.var] @@ -52,7 +52,7 @@ var y: {} = x; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_14.2: init %empty_struct_type = struct_init () to file.%x.var [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_1: init %empty_struct_type = converted %.loc15_14.1, %.loc15_14.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 diff --git a/toolchain/check/testdata/struct/fail_assign_empty.carbon b/toolchain/check/testdata/struct/fail_assign_empty.carbon index 55930e5110b5..578548d11fb7 100644 --- a/toolchain/check/testdata/struct/fail_assign_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_empty.carbon @@ -28,6 +28,7 @@ var x: {.a: i32} = {}; // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -60,7 +61,7 @@ var x: {.a: i32} = {}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_assign_nested.carbon b/toolchain/check/testdata/struct/fail_assign_nested.carbon index c29b34a5cb59..6511089ce7e5 100644 --- a/toolchain/check/testdata/struct/fail_assign_nested.carbon +++ b/toolchain/check/testdata/struct/fail_assign_nested.carbon @@ -22,9 +22,11 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a.225: type = struct_type {.a: %empty_struct_type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.225 [concrete] // CHECK:STDOUT: %struct_type.b.347: type = struct_type {.b: %empty_struct_type} [concrete] +// CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -37,7 +39,7 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %struct_type.a.225 = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc19_15: type = splice_block %struct_type.a [concrete = constants.%struct_type.a.225] { -// CHECK:STDOUT: %.loc19_14.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_14.2: type = converted %.loc19_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete = constants.%struct_type.a.225] // CHECK:STDOUT: } @@ -46,8 +48,8 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_26: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc19_27: %struct_type.b.347 = struct_literal (%.loc19_26) +// CHECK:STDOUT: %.loc19_26: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc19_27: %struct_type.b.347 = struct_literal (%.loc19_26) [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_assign_to_empty.carbon b/toolchain/check/testdata/struct/fail_assign_to_empty.carbon index 46fec716cea2..752e31891c3f 100644 --- a/toolchain/check/testdata/struct/fail_assign_to_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_to_empty.carbon @@ -22,9 +22,11 @@ var x: {} = {.a = 1}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a = struct_value (%int_1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -46,7 +48,7 @@ var x: {} = {.a = 1}; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_struct_type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc19_9.1: type = splice_block %.loc19_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc19_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc19_9.3: type = converted %.loc19_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = ref_binding x, %x.var [concrete = %x.var] @@ -55,7 +57,7 @@ var x: {} = {.a = 1}; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc19: %struct_type.a = struct_literal (%int_1) +// CHECK:STDOUT: %.loc19: %struct_type.a = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_duplicate_name.carbon b/toolchain/check/testdata/struct/fail_duplicate_name.carbon index 1f53e5b107c4..abcdc7c444a9 100644 --- a/toolchain/check/testdata/struct/fail_duplicate_name.carbon +++ b/toolchain/check/testdata/struct/fail_duplicate_name.carbon @@ -68,6 +68,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a.a6c = struct_value (%int_1) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.ba9: type = struct_type {.a: %i32} [concrete] @@ -163,7 +164,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1.loc31: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc31: %struct_type.a.a6c = struct_literal (%int_1.loc31) +// CHECK:STDOUT: %.loc31: %struct_type.a.a6c = struct_literal (%int_1.loc31) [concrete = constants.%struct] // CHECK:STDOUT: %int_1.loc40: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %int_2.loc40: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %def.ref: = name_ref def, [concrete = ] diff --git a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon index f240dc45391f..43ec6cdd99a0 100644 --- a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon @@ -35,6 +35,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.b.a15 = struct_value (%int_1) [concrete] // CHECK:STDOUT: %struct_type.b.0a3: type = struct_type {.b: %i32} [concrete] // CHECK:STDOUT: %pattern_type.f4b: type = pattern_type %struct_type.b.0a3 [concrete] // CHECK:STDOUT: } @@ -82,7 +83,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc19: %struct_type.b.a15 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc19: %struct_type.b.a15 = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: %x.ref: ref %struct_type.a = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: assign file.%y.var, diff --git a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon index 8a7ef292bb67..b4e95ab0f18e 100644 --- a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon @@ -29,6 +29,7 @@ var x: {.a: i32} = {.b = 1.0}; // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a [concrete] // CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: Core.FloatLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.b = struct_value (%float) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -62,7 +63,7 @@ var x: {.a: i32} = {.b = 1.0}; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete = constants.%float] -// CHECK:STDOUT: %.loc19: %struct_type.b = struct_literal (%float) +// CHECK:STDOUT: %.loc19: %struct_type.b = struct_literal (%float) [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_member_access_type.carbon b/toolchain/check/testdata/struct/fail_member_access_type.carbon index 14188d505efd..c605f39450fe 100644 --- a/toolchain/check/testdata/struct/fail_member_access_type.carbon +++ b/toolchain/check/testdata/struct/fail_member_access_type.carbon @@ -30,6 +30,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %pattern_type.8ce: type = pattern_type %struct_type.a.5e8 [concrete] // CHECK:STDOUT: %float.126: Core.FloatLiteral = float_literal_value 40e-1 [concrete] // CHECK:STDOUT: %struct_type.a.b4b: type = struct_type {.a: Core.FloatLiteral} [concrete] +// CHECK:STDOUT: %struct.ea2: %struct_type.a.b4b = struct_value (%float.126) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.73d: type = facet_type <@ImplicitAs, @ImplicitAs(%f64.d77)> [concrete] @@ -46,7 +47,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d57, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_64) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %float.126, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %float.d15: %f64.d77 = float_value 4 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.5e8 = struct_value (%float.d15) [concrete] +// CHECK:STDOUT: %struct.d6a: %struct_type.a.5e8 = struct_value (%float.d15) [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -102,15 +103,15 @@ var y: i32 = x.b; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 40e-1 [concrete = constants.%float.126] -// CHECK:STDOUT: %.loc15_29.1: %struct_type.a.b4b = struct_literal (%float) +// CHECK:STDOUT: %.loc15_29.1: %struct_type.a.b4b = struct_literal (%float) [concrete = constants.%struct.ea2] // CHECK:STDOUT: %impl.elem0: %.c02 = impl_witness_access constants.%ImplicitAs.impl_witness.9db, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d57] // CHECK:STDOUT: %bound_method.loc15_29.1: = bound_method %float, %impl.elem0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_29.2: = bound_method %float, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f64.d77 = call %bound_method.loc15_29.2(%float) [concrete = constants.%float.d15] // CHECK:STDOUT: %.loc15_29.2: init %f64.d77 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.d15] -// CHECK:STDOUT: %.loc15_29.3: init %struct_type.a.5e8 = struct_init (%.loc15_29.2) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc15_1: init %struct_type.a.5e8 = converted %.loc15_29.1, %.loc15_29.3 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc15_29.3: init %struct_type.a.5e8 = struct_init (%.loc15_29.2) to file.%x.var [concrete = constants.%struct.d6a] +// CHECK:STDOUT: %.loc15_1: init %struct_type.a.5e8 = converted %.loc15_29.1, %.loc15_29.3 [concrete = constants.%struct.d6a] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 // CHECK:STDOUT: %x.ref: ref %struct_type.a.5e8 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: assign file.%y.var, diff --git a/toolchain/check/testdata/struct/fail_non_member_access.carbon b/toolchain/check/testdata/struct/fail_non_member_access.carbon index 49a8d9163c14..04860d6d8bf7 100644 --- a/toolchain/check/testdata/struct/fail_non_member_access.carbon +++ b/toolchain/check/testdata/struct/fail_non_member_access.carbon @@ -30,6 +30,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a.ba9 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.2cb: %struct_type.a.a6c = struct_value (%int_4.0c1) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -47,7 +48,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%int_4.940) [concrete] +// CHECK:STDOUT: %struct.a51: %struct_type.a.ba9 = struct_value (%int_4.940) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -96,15 +97,15 @@ var y: i32 = x.b; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc15_27.1: %struct_type.a.a6c = struct_literal (%int_4) +// CHECK:STDOUT: %.loc15_27.1: %struct_type.a.a6c = struct_literal (%int_4) [concrete = constants.%struct.2cb] // CHECK:STDOUT: %impl.elem0: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_27.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_27.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_27.2(%int_4) [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc15_27.2: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc15_27.3: init %struct_type.a.ba9 = struct_init (%.loc15_27.2) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc15_1: init %struct_type.a.ba9 = converted %.loc15_27.1, %.loc15_27.3 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc15_27.3: init %struct_type.a.ba9 = struct_init (%.loc15_27.2) to file.%x.var [concrete = constants.%struct.a51] +// CHECK:STDOUT: %.loc15_1: init %struct_type.a.ba9 = converted %.loc15_27.1, %.loc15_27.3 [concrete = constants.%struct.a51] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 // CHECK:STDOUT: %x.ref: ref %struct_type.a.ba9 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: assign file.%y.var, diff --git a/toolchain/check/testdata/struct/fail_too_few_values.carbon b/toolchain/check/testdata/struct/fail_too_few_values.carbon index e9e3a1a9e7f1..9fef042a8cd5 100644 --- a/toolchain/check/testdata/struct/fail_too_few_values.carbon +++ b/toolchain/check/testdata/struct/fail_too_few_values.carbon @@ -29,6 +29,7 @@ var x: {.a: i32, .b: i32} = {.a = 1}; // CHECK:STDOUT: %pattern_type.851: type = pattern_type %struct_type.a.b [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a = struct_value (%int_1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -64,7 +65,7 @@ var x: {.a: i32, .b: i32} = {.a = 1}; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc19: %struct_type.a = struct_literal (%int_1) +// CHECK:STDOUT: %.loc19: %struct_type.a = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_value_as_type.carbon b/toolchain/check/testdata/struct/fail_value_as_type.carbon index 24f5936987a3..4341a4997c2b 100644 --- a/toolchain/check/testdata/struct/fail_value_as_type.carbon +++ b/toolchain/check/testdata/struct/fail_value_as_type.carbon @@ -26,6 +26,7 @@ var x: {.a = 1}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct: %struct_type.a = struct_value (%int_1) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: } @@ -52,7 +53,7 @@ var x: {.a = 1}; // CHECK:STDOUT: %x.var: ref = var %x.var_patt [concrete = ] // CHECK:STDOUT: %.1: = splice_block [concrete = ] { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc22_15.1: %struct_type.a = struct_literal (%int_1) +// CHECK:STDOUT: %.loc22_15.1: %struct_type.a = struct_literal (%int_1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc22_15.2: type = converted %.loc22_15.1, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref = ref_binding x, [concrete = ] diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index c6ae198909b5..e40178eeae3f 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -102,6 +102,7 @@ fn F() -> {.x: i32} { // CHECK:STDOUT: %.5b9: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.a17, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.38e: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.dd4: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %tuple.type.dd4} [concrete] // CHECK:STDOUT: %struct_type.a.d.9db: type = struct_type {.a: %struct_type.b.c, .d: %i32} [concrete] @@ -121,6 +122,7 @@ fn F() -> {.x: i32} { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.774: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.a38: = impl_witness imports.%ImplicitAs.impl_witness_table.99d, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] @@ -135,8 +137,8 @@ fn F() -> {.x: i32} { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f8f: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a89 [concrete] // CHECK:STDOUT: %bound_method.502: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.d0d: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.5ca = struct_value (%int_1.47b, %int_2.d0d) [concrete] -// CHECK:STDOUT: %C.a8a: type = class_type @C, @C(%struct) [concrete] +// CHECK:STDOUT: %struct.cd9: %struct_type.a.b.5ca = struct_value (%int_1.47b, %int_2.d0d) [concrete] +// CHECK:STDOUT: %C.a8a: type = class_type @C, @C(%struct.cd9) [concrete] // CHECK:STDOUT: %pattern_type.a5a: type = pattern_type %C.a8a [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -181,7 +183,7 @@ fn F() -> {.x: i32} { // CHECK:STDOUT: %i32.loc6_18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc6_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_32.1: %tuple.type.85c = tuple_literal (%i32.loc6_28) +// CHECK:STDOUT: %.loc6_32.1: %tuple.type.85c = tuple_literal (%i32.loc6_28) [concrete = constants.%tuple.38e] // CHECK:STDOUT: %.loc6_32.2: type = converted %.loc6_32.1, constants.%tuple.type.dd4 [concrete = constants.%tuple.type.dd4] // CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %tuple.type.dd4} [concrete = constants.%struct_type.b.c] // CHECK:STDOUT: %int_32.loc6_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -198,7 +200,7 @@ fn F() -> {.x: i32} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Implicit.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc7_25.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc7_25.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %impl.elem0.loc7_25.1: %.dc8 = impl_witness_access constants.%ImplicitAs.impl_witness.a38, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a89] // CHECK:STDOUT: %bound_method.loc7_25.1: = bound_method %int_1, %impl.elem0.loc7_25.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5b6] // CHECK:STDOUT: %specific_fn.loc7_25.1: = specific_function %impl.elem0.loc7_25.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -213,9 +215,9 @@ fn F() -> {.x: i32} { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_25.2: init %i32 = call %bound_method.loc7_25.4(%int_2) [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc7_25.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_25.2 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc7_25.5: %i32 = converted %int_2, %.loc7_25.4 [concrete = constants.%int_2.d0d] -// CHECK:STDOUT: %struct: %struct_type.a.b.5ca = struct_value (%.loc7_25.3, %.loc7_25.5) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc7_26.2: %struct_type.a.b.5ca = converted %.loc7_25.1, %struct [concrete = constants.%struct] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct) [concrete = constants.%C.a8a] +// CHECK:STDOUT: %struct: %struct_type.a.b.5ca = struct_value (%.loc7_25.3, %.loc7_25.5) [concrete = constants.%struct.cd9] +// CHECK:STDOUT: %.loc7_26.2: %struct_type.a.b.5ca = converted %.loc7_25.1, %struct [concrete = constants.%struct.cd9] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct.cd9) [concrete = constants.%C.a8a] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %C.a8a = ref_binding c, %c.var [concrete = %c.var] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/member_access.carbon b/toolchain/check/testdata/struct/member_access.carbon index 334bff7b40a8..f5c2c0f962ad 100644 --- a/toolchain/check/testdata/struct/member_access.carbon +++ b/toolchain/check/testdata/struct/member_access.carbon @@ -33,6 +33,7 @@ var z: i32 = y; // CHECK:STDOUT: %float.1f7: Core.FloatLiteral = float_literal_value 0e-1 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.a.b.0cc: type = struct_type {.a: Core.FloatLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.877: %struct_type.a.b.0cc = struct_value (%float.1f7, %int_1.5b8) [concrete] // CHECK:STDOUT: %.f68: ref %f64.d77 = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -65,7 +66,7 @@ var z: i32 = y; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.dfc: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.d2f = struct_value (%float.0a8, %int_1.5d2) [concrete] +// CHECK:STDOUT: %struct.454: %struct_type.a.b.d2f = struct_value (%float.0a8, %int_1.5d2) [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.24b: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] @@ -146,7 +147,7 @@ var z: i32 = y; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 0e-1 [concrete = constants.%float.1f7] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc15_46.1: %struct_type.a.b.0cc = struct_literal (%float, %int_1) +// CHECK:STDOUT: %.loc15_46.1: %struct_type.a.b.0cc = struct_literal (%float, %int_1) [concrete = constants.%struct.877] // CHECK:STDOUT: %impl.elem0.loc15_46.1: %.c02 = impl_witness_access constants.%ImplicitAs.impl_witness.9db, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d57] // CHECK:STDOUT: %bound_method.loc15_46.1: = bound_method %float, %impl.elem0.loc15_46.1 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc15_46.1: = specific_function %impl.elem0.loc15_46.1, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -163,8 +164,8 @@ var z: i32 = y; // CHECK:STDOUT: %.loc15_46.5: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_46.6: ref %i32 = struct_access file.%x.var, element1 [concrete = constants.%.0d1] // CHECK:STDOUT: %.loc15_46.7: init %i32 = initialize_from %.loc15_46.5 to %.loc15_46.6 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_46.8: init %struct_type.a.b.d2f = struct_init (%.loc15_46.4, %.loc15_46.7) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc15_1: init %struct_type.a.b.d2f = converted %.loc15_46.1, %.loc15_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc15_46.8: init %struct_type.a.b.d2f = struct_init (%.loc15_46.4, %.loc15_46.7) to file.%x.var [concrete = constants.%struct.454] +// CHECK:STDOUT: %.loc15_1: init %struct_type.a.b.d2f = converted %.loc15_46.1, %.loc15_46.8 [concrete = constants.%struct.454] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 // CHECK:STDOUT: %x.ref: ref %struct_type.a.b.d2f = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc16_15.1: ref %i32 = struct_access %x.ref, element1 [concrete = constants.%.0d1] diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index e5b3d15286a0..f1ebe11aab4b 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -27,6 +27,7 @@ fn G() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type.ff9 = tuple_value (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.189: type = tuple_type (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.b5a: type = pattern_type %tuple.type.189 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -72,7 +73,7 @@ fn G() { // CHECK:STDOUT: %i32.loc15_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc15_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_25.1: %tuple.type.ff9 = tuple_literal (%i32.loc15_12, %i32.loc15_17, %i32.loc15_22) +// CHECK:STDOUT: %.loc15_25.1: %tuple.type.ff9 = tuple_literal (%i32.loc15_12, %i32.loc15_17, %i32.loc15_22) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc15_25.2: type = converted %.loc15_25.1, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] // CHECK:STDOUT: %return.param: ref %tuple.type.189 = out_param call_param0 // CHECK:STDOUT: %return: ref %tuple.type.189 = return_slot %return.param @@ -106,7 +107,7 @@ fn G() { // CHECK:STDOUT: %i32.loc18_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc18_26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18_29.1: %tuple.type.ff9 = tuple_literal (%i32.loc18_16, %i32.loc18_21, %i32.loc18_26) +// CHECK:STDOUT: %.loc18_29.1: %tuple.type.ff9 = tuple_literal (%i32.loc18_16, %i32.loc18_21, %i32.loc18_26) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc18_29.2: type = converted %.loc18_29.1, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] // CHECK:STDOUT: %int_32.loc18_37: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -114,7 +115,7 @@ fn G() { // CHECK:STDOUT: %i32.loc18_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc18_47: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_47: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18_50.1: %tuple.type.ff9 = tuple_literal (%i32.loc18_37, %i32.loc18_42, %i32.loc18_47) +// CHECK:STDOUT: %.loc18_50.1: %tuple.type.ff9 = tuple_literal (%i32.loc18_37, %i32.loc18_42, %i32.loc18_47) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc18_50.2: type = converted %.loc18_50.1, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %tuple.type.189, .b: %tuple.type.189} [concrete = constants.%struct_type.a.b.2f9] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/one_entry.carbon b/toolchain/check/testdata/struct/one_entry.carbon index 011e9e4c6ca3..0da6303e76b3 100644 --- a/toolchain/check/testdata/struct/one_entry.carbon +++ b/toolchain/check/testdata/struct/one_entry.carbon @@ -27,6 +27,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a.ba9 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.2cb: %struct_type.a.a6c = struct_value (%int_4.0c1) [concrete] // CHECK:STDOUT: %.0db: ref %i32 = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -44,7 +45,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%int_4.940) [concrete] +// CHECK:STDOUT: %struct.a51: %struct_type.a.ba9 = struct_value (%int_4.940) [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.24b: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] @@ -108,15 +109,15 @@ var y: {.a: i32} = x; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc15_27.1: %struct_type.a.a6c = struct_literal (%int_4) +// CHECK:STDOUT: %.loc15_27.1: %struct_type.a.a6c = struct_literal (%int_4) [concrete = constants.%struct.2cb] // CHECK:STDOUT: %impl.elem0.loc15: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_27.1: = bound_method %int_4, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_27.2: = bound_method %int_4, %specific_fn.loc15 [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_27.2(%int_4) [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc15_27.2: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc15_27.3: init %struct_type.a.ba9 = struct_init (%.loc15_27.2) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc15_1: init %struct_type.a.ba9 = converted %.loc15_27.1, %.loc15_27.3 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc15_27.3: init %struct_type.a.ba9 = struct_init (%.loc15_27.2) to file.%x.var [concrete = constants.%struct.a51] +// CHECK:STDOUT: %.loc15_1: init %struct_type.a.ba9 = converted %.loc15_27.1, %.loc15_27.3 [concrete = constants.%struct.a51] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 // CHECK:STDOUT: %x.ref: ref %struct_type.a.ba9 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc16_20.1: ref %i32 = struct_access %x.ref, element0 [concrete = constants.%.0db] diff --git a/toolchain/check/testdata/struct/tuple_as_element.carbon b/toolchain/check/testdata/struct/tuple_as_element.carbon index c309537b2240..93b12338e2ff 100644 --- a/toolchain/check/testdata/struct/tuple_as_element.carbon +++ b/toolchain/check/testdata/struct/tuple_as_element.carbon @@ -24,13 +24,16 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.896: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %struct_type.a.b.3d5: type = struct_type {.a: %i32, .b: %tuple.type.a1c} [concrete] // CHECK:STDOUT: %pattern_type.b4d: type = pattern_type %struct_type.a.b.3d5 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.e7e: %tuple.type.985 = tuple_value (%int_2.ecc) [concrete] // CHECK:STDOUT: %struct_type.a.b.057: type = struct_type {.a: Core.IntLiteral, .b: %tuple.type.985} [concrete] +// CHECK:STDOUT: %struct.60a: %struct_type.a.b.057 = struct_value (%int_1.5b8, %tuple.e7e) [concrete] // CHECK:STDOUT: %.680: ref %i32 = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -53,8 +56,8 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_2.ef8) [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.3d5 = struct_value (%int_1.5d2, %tuple) [concrete] +// CHECK:STDOUT: %tuple.092: %tuple.type.a1c = tuple_value (%int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.646: %struct_type.a.b.3d5 = struct_value (%int_1.5d2, %tuple.092) [concrete] // CHECK:STDOUT: %.9df: ref %i32 = struct_access file.%y.var, element0 [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] @@ -103,7 +106,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %i32.loc15_13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc15_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_27.1: %tuple.type.85c = tuple_literal (%i32.loc15_23) +// CHECK:STDOUT: %.loc15_27.1: %tuple.type.85c = tuple_literal (%i32.loc15_23) [concrete = constants.%tuple.896] // CHECK:STDOUT: %.loc15_27.2: type = converted %.loc15_27.1, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: %struct_type.a.b.loc15: type = struct_type {.a: %i32, .b: %tuple.type.a1c} [concrete = constants.%struct_type.a.b.3d5] // CHECK:STDOUT: } @@ -118,7 +121,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %i32.loc16_13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc16_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16_27.1: %tuple.type.85c = tuple_literal (%i32.loc16_23) +// CHECK:STDOUT: %.loc16_27.1: %tuple.type.85c = tuple_literal (%i32.loc16_23) [concrete = constants.%tuple.896] // CHECK:STDOUT: %.loc16_27.2: type = converted %.loc16_27.1, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: %struct_type.a.b.loc16: type = struct_type {.a: %i32, .b: %tuple.type.a1c} [concrete = constants.%struct_type.a.b.3d5] // CHECK:STDOUT: } @@ -129,8 +132,8 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc15_49.1: %tuple.type.985 = tuple_literal (%int_2) -// CHECK:STDOUT: %.loc15_50.1: %struct_type.a.b.057 = struct_literal (%int_1, %.loc15_49.1) +// CHECK:STDOUT: %.loc15_49.1: %tuple.type.985 = tuple_literal (%int_2) [concrete = constants.%tuple.e7e] +// CHECK:STDOUT: %.loc15_50.1: %struct_type.a.b.057 = struct_literal (%int_1, %.loc15_49.1) [concrete = constants.%struct.60a] // CHECK:STDOUT: %impl.elem0.loc15_50: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc15_50.1: = bound_method %int_1, %impl.elem0.loc15_50 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc15_50: = specific_function %impl.elem0.loc15_50, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -146,11 +149,11 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_49: init %i32 = call %bound_method.loc15_49.2(%int_2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_49.2: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_49 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_50.5: ref %tuple.type.a1c = struct_access file.%x.var, element1 [concrete = constants.%.627] -// CHECK:STDOUT: %.loc15_49.3: init %tuple.type.a1c = tuple_init (%.loc15_49.2) to %.loc15_50.5 [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc15_50.6: init %tuple.type.a1c = converted %.loc15_49.1, %.loc15_49.3 [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc15_50.7: init %tuple.type.a1c = initialize_from %.loc15_50.6 to %.loc15_50.5 [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc15_50.8: init %struct_type.a.b.3d5 = struct_init (%.loc15_50.4, %.loc15_50.7) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc15_1: init %struct_type.a.b.3d5 = converted %.loc15_50.1, %.loc15_50.8 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc15_49.3: init %tuple.type.a1c = tuple_init (%.loc15_49.2) to %.loc15_50.5 [concrete = constants.%tuple.092] +// CHECK:STDOUT: %.loc15_50.6: init %tuple.type.a1c = converted %.loc15_49.1, %.loc15_49.3 [concrete = constants.%tuple.092] +// CHECK:STDOUT: %.loc15_50.7: init %tuple.type.a1c = initialize_from %.loc15_50.6 to %.loc15_50.5 [concrete = constants.%tuple.092] +// CHECK:STDOUT: %.loc15_50.8: init %struct_type.a.b.3d5 = struct_init (%.loc15_50.4, %.loc15_50.7) to file.%x.var [concrete = constants.%struct.646] +// CHECK:STDOUT: %.loc15_1: init %struct_type.a.b.3d5 = converted %.loc15_50.1, %.loc15_50.8 [concrete = constants.%struct.646] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 // CHECK:STDOUT: %x.ref: ref %struct_type.a.b.3d5 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc16_32.1: ref %i32 = struct_access %x.ref, element0 [concrete = constants.%.680] diff --git a/toolchain/check/testdata/struct/two_entries.carbon b/toolchain/check/testdata/struct/two_entries.carbon index e7ab9d2ba889..5f51f629e793 100644 --- a/toolchain/check/testdata/struct/two_entries.carbon +++ b/toolchain/check/testdata/struct/two_entries.carbon @@ -31,6 +31,7 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %struct.4aa: %struct_type.a.b.cfd = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -50,7 +51,7 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.393: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b [concrete] // CHECK:STDOUT: %bound_method.9f7: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %struct.ed5: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %.a67: ref %i32 = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %.893: ref %i32 = struct_access file.%x.var, element1 [concrete] // CHECK:STDOUT: %.a94: ref %i32 = struct_access file.%y.var, element0 [concrete] @@ -117,8 +118,8 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_44.2: init %i32 = call %bound_method.loc15_44.4(@__global_init.%int_2.loc15) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_44.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_44.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_44.4: %i32 = converted @__global_init.%int_2.loc15, %.loc15_44.3 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%.loc15_44.2, %.loc15_44.4) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc15_44.5: %struct_type.a.b.501 = converted @__global_init.%.loc15, %struct [concrete = constants.%struct] +// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%.loc15_44.2, %.loc15_44.4) [concrete = constants.%struct.ed5] +// CHECK:STDOUT: %.loc15_44.5: %struct_type.a.b.501 = converted @__global_init.%.loc15, %struct [concrete = constants.%struct.ed5] // CHECK:STDOUT: %v: %struct_type.a.b.501 = value_binding v, %.loc15_44.5 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %w.patt: %pattern_type.851 = value_binding_pattern w [concrete] @@ -163,11 +164,11 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc15: %struct_type.a.b.cfd = struct_literal (%int_1.loc15, %int_2.loc15) +// CHECK:STDOUT: %.loc15: %struct_type.a.b.cfd = struct_literal (%int_1.loc15, %int_2.loc15) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %v.ref: %struct_type.a.b.501 = name_ref v, file.%v // CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc18_44.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc18, %int_2.loc18) +// CHECK:STDOUT: %.loc18_44.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc18, %int_2.loc18) [concrete = constants.%struct.4aa] // CHECK:STDOUT: %impl.elem0.loc18_44.1: %.322 = impl_witness_access constants.%ImplicitAs.impl_witness.bc9, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e9b] // CHECK:STDOUT: %bound_method.loc18_44.1: = bound_method %int_1.loc18, %impl.elem0.loc18_44.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.265] // CHECK:STDOUT: %specific_fn.loc18_44.1: = specific_function %impl.elem0.loc18_44.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -184,8 +185,8 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %.loc18_44.5: init %i32 = converted %int_2.loc18, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_44.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_44.6: ref %i32 = struct_access file.%x.var, element1 [concrete = constants.%.893] // CHECK:STDOUT: %.loc18_44.7: init %i32 = initialize_from %.loc18_44.5 to %.loc18_44.6 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_44.8: init %struct_type.a.b.501 = struct_init (%.loc18_44.4, %.loc18_44.7) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc18_1: init %struct_type.a.b.501 = converted %.loc18_44.1, %.loc18_44.8 [concrete = constants.%struct] +// CHECK:STDOUT: %.loc18_44.8: init %struct_type.a.b.501 = struct_init (%.loc18_44.4, %.loc18_44.7) to file.%x.var [concrete = constants.%struct.ed5] +// CHECK:STDOUT: %.loc18_1: init %struct_type.a.b.501 = converted %.loc18_44.1, %.loc18_44.8 [concrete = constants.%struct.ed5] // CHECK:STDOUT: assign file.%x.var, %.loc18_1 // CHECK:STDOUT: %x.ref: ref %struct_type.a.b.501 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc19_29.1: ref %i32 = struct_access %x.ref, element0 [concrete = constants.%.a67] diff --git a/toolchain/check/testdata/tuple/basics.carbon b/toolchain/check/testdata/tuple/basics.carbon index fdc21091aa29..41c9f31930a3 100644 --- a/toolchain/check/testdata/tuple/basics.carbon +++ b/toolchain/check/testdata/tuple/basics.carbon @@ -52,8 +52,8 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,7 +63,7 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -73,7 +73,7 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %empty_tuple.type = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc5_9.1: type = splice_block %.loc5_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_9.3: type = converted %.loc5_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.var [concrete = %y.var] @@ -81,7 +81,7 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_14.2: init %empty_tuple.type = tuple_init () to file.%x.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_1: init %empty_tuple.type = converted %.loc4_14.1, %.loc4_14.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%x.var, %.loc4_1 @@ -96,16 +96,16 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type.bcd: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %tuple.type.6e8: type = tuple_type (%tuple.type.bcd, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.0ca: %tuple.type.6e8 = tuple_value (%tuple.d8f, %empty_tuple) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type.6e8 [concrete] // CHECK:STDOUT: %tuple.elem0.db4: ref %tuple.type.bcd = tuple_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %tuple.elem0.833: ref %empty_tuple.type = tuple_access %tuple.elem0.db4, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.elem1.eb3: ref %empty_tuple.type = tuple_access %tuple.elem0.db4, element1 [concrete] -// CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %tuple.elem1.139: ref %empty_tuple.type = tuple_access file.%x.var, element1 [concrete] -// CHECK:STDOUT: %tuple.0ca: %tuple.type.6e8 = tuple_value (%tuple.d8f, %empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,15 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %tuple.type.6e8 = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc4_21.1: type = splice_block %.loc4_21.7 [concrete = constants.%tuple.type.6e8] { -// CHECK:STDOUT: %.loc4_11: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_15: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_16: %tuple.type.bcd = tuple_literal (%.loc4_11, %.loc4_15) -// CHECK:STDOUT: %.loc4_20: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_21.2: %tuple.type.6e8 = tuple_literal (%.loc4_16, %.loc4_20) -// CHECK:STDOUT: %.loc4_21.3: type = converted %.loc4_11, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc4_21.4: type = converted %.loc4_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc4_21.5: type = converted %.loc4_16, constants.%tuple.type.bcd [concrete = constants.%tuple.type.bcd] -// CHECK:STDOUT: %.loc4_21.6: type = converted %.loc4_20, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_11: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_15: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_16: %tuple.type.bcd = tuple_literal (%.loc4_11, %.loc4_15) [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc4_20: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_21.2: %tuple.type.6e8 = tuple_literal (%.loc4_16, %.loc4_20) [concrete = constants.%tuple.0ca] +// CHECK:STDOUT: %.loc4_21.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_21.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_21.5: type = converted constants.%tuple.d8f, constants.%tuple.type.bcd [concrete = constants.%tuple.type.bcd] +// CHECK:STDOUT: %.loc4_21.6: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc4_21.7: type = converted %.loc4_21.2, constants.%tuple.type.6e8 [concrete = constants.%tuple.type.6e8] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %tuple.type.6e8 = ref_binding x, %x.var [concrete = %x.var] @@ -131,11 +131,11 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_28.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_32.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_33.1: %tuple.type.bcd = tuple_literal (%.loc4_28.1, %.loc4_32.1) -// CHECK:STDOUT: %.loc4_37.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_38.1: %tuple.type.6e8 = tuple_literal (%.loc4_33.1, %.loc4_37.1) +// CHECK:STDOUT: %.loc4_28.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_33.1: %tuple.type.bcd = tuple_literal (%.loc4_28.1, %.loc4_32.1) [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc4_37.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_38.1: %tuple.type.6e8 = tuple_literal (%.loc4_33.1, %.loc4_37.1) [concrete = constants.%tuple.0ca] // CHECK:STDOUT: %tuple.elem0.loc4_38: ref %tuple.type.bcd = tuple_access file.%x.var, element0 [concrete = constants.%tuple.elem0.db4] // CHECK:STDOUT: %tuple.elem0.loc4_33: ref %empty_tuple.type = tuple_access %tuple.elem0.loc4_38, element0 [concrete = constants.%tuple.elem0.833] // CHECK:STDOUT: %.loc4_28.2: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc4_33 [concrete = constants.%empty_tuple] @@ -158,11 +158,11 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %tuple.elem0.ac1: ref %empty_tuple.type = tuple_access file.%x.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple) [concrete] // CHECK:STDOUT: %tuple.elem0.6f7: ref %empty_tuple.type = tuple_access file.%y.var, element0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -173,9 +173,9 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc4_12.1: type = splice_block %.loc4_12.4 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc4_10: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_12.2: %tuple.type = tuple_literal (%.loc4_10) -// CHECK:STDOUT: %.loc4_12.3: type = converted %.loc4_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_12.2: %tuple.type = tuple_literal (%.loc4_10) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc4_12.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc4_12.4: type = converted %.loc4_12.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -185,9 +185,9 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %tuple.type = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.4 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc5_10: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_12.2: %tuple.type = tuple_literal (%.loc5_10) -// CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc5_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_12.2: %tuple.type = tuple_literal (%.loc5_10) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc5_12.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_12.4: type = converted %.loc5_12.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %tuple.type = ref_binding y, %y.var [concrete = %y.var] @@ -195,8 +195,8 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_18.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_20.1: %tuple.type = tuple_literal (%.loc4_18.1) +// CHECK:STDOUT: %.loc4_18.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_20.1: %tuple.type = tuple_literal (%.loc4_18.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0.loc4: ref %empty_tuple.type = tuple_access file.%x.var, element0 [concrete = constants.%tuple.elem0.ac1] // CHECK:STDOUT: %.loc4_18.2: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc4 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_20.2: init %empty_tuple.type = converted %.loc4_18.1, %.loc4_18.2 [concrete = constants.%empty_tuple] @@ -218,10 +218,10 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %tuple.elem0.7c8: ref %empty_tuple.type = tuple_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %tuple.elem1.801: ref %empty_tuple.type = tuple_access file.%x.var, element1 [concrete] // CHECK:STDOUT: %tuple.elem0.fc5: ref %empty_tuple.type = tuple_access file.%y.var, element0 [concrete] @@ -233,11 +233,11 @@ var y: ((), ()) = x; // CHECK:STDOUT: %v.patt: %pattern_type = value_binding_pattern v [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.5 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc4_10: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_14: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_15.2: %tuple.type = tuple_literal (%.loc4_10, %.loc4_14) -// CHECK:STDOUT: %.loc4_15.3: type = converted %.loc4_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc4_15.4: type = converted %.loc4_14, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_15.2: %tuple.type = tuple_literal (%.loc4_10, %.loc4_14) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc4_15.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_15.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc4_15.5: type = converted %.loc4_15.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple.loc4_21: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -251,11 +251,11 @@ var y: ((), ()) = x; // CHECK:STDOUT: %w.patt: %pattern_type = value_binding_pattern w [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.5 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc5_10: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_14: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_15.2: %tuple.type = tuple_literal (%.loc5_10, %.loc5_14) -// CHECK:STDOUT: %.loc5_15.3: type = converted %.loc5_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc5_15.4: type = converted %.loc5_14, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc5_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_15.2: %tuple.type = tuple_literal (%.loc5_10, %.loc5_14) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc5_15.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc5_15.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_15.5: type = converted %.loc5_15.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %w: %tuple.type = value_binding w, @__global_init.%v.ref @@ -265,11 +265,11 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %tuple.type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc7_15.1: type = splice_block %.loc7_15.5 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc7_10: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_14: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_15.2: %tuple.type = tuple_literal (%.loc7_10, %.loc7_14) -// CHECK:STDOUT: %.loc7_15.3: type = converted %.loc7_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc7_15.4: type = converted %.loc7_14, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc7_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_15.2: %tuple.type = tuple_literal (%.loc7_10, %.loc7_14) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc7_15.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc7_15.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc7_15.5: type = converted %.loc7_15.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %tuple.type = ref_binding x, %x.var [concrete = %x.var] @@ -279,11 +279,11 @@ var y: ((), ()) = x; // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %tuple.type = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.5 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.loc8_10: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_14: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc8_15.2: %tuple.type = tuple_literal (%.loc8_10, %.loc8_14) -// CHECK:STDOUT: %.loc8_15.3: type = converted %.loc8_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc8_15.4: type = converted %.loc8_14, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_10: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_15.2: %tuple.type = tuple_literal (%.loc8_10, %.loc8_14) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc8_15.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_15.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc8_15.5: type = converted %.loc8_15.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %tuple.type = ref_binding y, %y.var [concrete = %y.var] @@ -291,13 +291,13 @@ var y: ((), ()) = x; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_21: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_25: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_26: %tuple.type = tuple_literal (%.loc4_21, %.loc4_25) +// CHECK:STDOUT: %.loc4_21: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_25: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_26: %tuple.type = tuple_literal (%.loc4_21, %.loc4_25) [concrete = constants.%tuple] // CHECK:STDOUT: %v.ref: %tuple.type = name_ref v, file.%v -// CHECK:STDOUT: %.loc7_21.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_26.1: %tuple.type = tuple_literal (%.loc7_21.1, %.loc7_25.1) +// CHECK:STDOUT: %.loc7_21.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_26.1: %tuple.type = tuple_literal (%.loc7_21.1, %.loc7_25.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0.loc7: ref %empty_tuple.type = tuple_access file.%x.var, element0 [concrete = constants.%tuple.elem0.7c8] // CHECK:STDOUT: %.loc7_21.2: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc7 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_26.2: init %empty_tuple.type = converted %.loc7_21.1, %.loc7_21.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/tuple/element_access.carbon b/toolchain/check/testdata/tuple/element_access.carbon index 0c660f9d4880..19fd9d529d4a 100644 --- a/toolchain/check/testdata/tuple/element_access.carbon +++ b/toolchain/check/testdata/tuple/element_access.carbon @@ -261,12 +261,12 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.0ce: type = tuple_type (%empty_tuple.type, %i32) [concrete] // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%a.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.7a9: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] @@ -346,7 +346,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %empty_tuple.type = ref_binding c, %c.var [concrete = %c.var] @@ -367,7 +367,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: // CHECK:STDOUT: %a.ref.loc5: ref %tuple.type.0ce = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_1.loc5: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc5_28.1: %struct_type.index.b1b = struct_literal (%int_1.loc5) +// CHECK:STDOUT: %.loc5_28.1: %struct_type.index.b1b = struct_literal (%int_1.loc5) [concrete = constants.%struct.972] // CHECK:STDOUT: %struct.loc5: %struct_type.index.b1b = struct_value (%int_1.loc5) [concrete = constants.%struct.972] // CHECK:STDOUT: %.loc5_28.2: %struct_type.index.b1b = converted %.loc5_28.1, %struct.loc5 [concrete = constants.%struct.972] // CHECK:STDOUT: %.loc5_29: Core.IntLiteral = struct_access %.loc5_28.2, element0 [concrete = constants.%int_1.5b8] @@ -412,7 +412,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_29.2(%int_1.loc7) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_29.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_29.2: %i32 = converted %int_1.loc7, %.loc7_29.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_35.1: %struct_type.index.6ea = struct_literal (%.loc7_29.2) +// CHECK:STDOUT: %.loc7_35.1: %struct_type.index.6ea = struct_literal (%.loc7_29.2) [concrete = constants.%struct.63a] // CHECK:STDOUT: %struct.loc7: %struct_type.index.6ea = struct_value (%.loc7_29.2) [concrete = constants.%struct.63a] // CHECK:STDOUT: %.loc7_35.2: %struct_type.index.6ea = converted %.loc7_35.1, %struct.loc7 [concrete = constants.%struct.63a] // CHECK:STDOUT: %.loc7_36.1: %i32 = struct_access %.loc7_35.2, element0 [concrete = constants.%int_1.5d2] diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index 2f958671100d..0cd2509fb76e 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -91,6 +91,7 @@ fn F() -> (i32,) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] +// CHECK:STDOUT: %tuple.38e: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.dd4: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.2e8: type = pattern_type %tuple.type.dd4 [concrete] // CHECK:STDOUT: %tuple.elem0.a2a: ref %i32 = tuple_access imports.%a_ref.var, element0 [concrete] @@ -105,8 +106,11 @@ fn F() -> (i32,) { // CHECK:STDOUT: %.5b9: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.a17, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.8c7: type = tuple_type (%tuple.type.85c, type) [concrete] +// CHECK:STDOUT: %tuple.896: %tuple.type.8c7 = tuple_value (%tuple.38e, %i32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.a50: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.58c: type = tuple_type (%tuple.type.8c7, %tuple.type.24b) [concrete] +// CHECK:STDOUT: %tuple.2de: %tuple.type.58c = tuple_value (%tuple.896, %tuple.a50) [concrete] // CHECK:STDOUT: %tuple.type.154: type = tuple_type (%tuple.type.dd4, %i32) [concrete] // CHECK:STDOUT: %tuple.type.c2c: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.cfa: type = tuple_type (%tuple.type.154, %tuple.type.c2c) [concrete] @@ -129,6 +133,7 @@ fn F() -> (i32,) { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %ImplicitAs.type.774: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.a38: = impl_witness imports.%ImplicitAs.impl_witness_table.99d, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] @@ -143,8 +148,8 @@ fn F() -> (i32,) { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f8f: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a89 [concrete] // CHECK:STDOUT: %bound_method.502: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.d0d: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.c2c = tuple_value (%int_1.47b, %int_2.d0d) [concrete] -// CHECK:STDOUT: %C.cf0: type = class_type @C, @C(%tuple) [concrete] +// CHECK:STDOUT: %tuple.56c: %tuple.type.c2c = tuple_value (%int_1.47b, %int_2.d0d) [concrete] +// CHECK:STDOUT: %C.cf0: type = class_type @C, @C(%tuple.56c) [concrete] // CHECK:STDOUT: %pattern_type.7e2: type = pattern_type %C.cf0 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -176,7 +181,7 @@ fn F() -> (i32,) { // CHECK:STDOUT: %.loc5_13.1: type = splice_block %.loc5_13.3 [concrete = constants.%tuple.type.dd4] { // CHECK:STDOUT: %int_32.loc5: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc5_13.2: %tuple.type.85c = tuple_literal (%i32.loc5) +// CHECK:STDOUT: %.loc5_13.2: %tuple.type.85c = tuple_literal (%i32.loc5) [concrete = constants.%tuple.38e] // CHECK:STDOUT: %.loc5_13.3: type = converted %.loc5_13.2, constants.%tuple.type.dd4 [concrete = constants.%tuple.type.dd4] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %tuple.type.dd4 = ref_binding a, %a.var [concrete = %a.var] @@ -188,19 +193,19 @@ fn F() -> (i32,) { // CHECK:STDOUT: %.loc6_34.1: type = splice_block %.loc6_34.6 [concrete = constants.%tuple.type.cfa] { // CHECK:STDOUT: %int_32.loc6_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_15: %tuple.type.85c = tuple_literal (%i32.loc6_11) +// CHECK:STDOUT: %.loc6_15: %tuple.type.85c = tuple_literal (%i32.loc6_11) [concrete = constants.%tuple.38e] // CHECK:STDOUT: %int_32.loc6_18: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_21: %tuple.type.8c7 = tuple_literal (%.loc6_15, %i32.loc6_18) +// CHECK:STDOUT: %.loc6_21: %tuple.type.8c7 = tuple_literal (%.loc6_15, %i32.loc6_18) [concrete = constants.%tuple.896] // CHECK:STDOUT: %int_32.loc6_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc6_30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_33: %tuple.type.24b = tuple_literal (%i32.loc6_25, %i32.loc6_30) -// CHECK:STDOUT: %.loc6_34.2: %tuple.type.58c = tuple_literal (%.loc6_21, %.loc6_33) -// CHECK:STDOUT: %.loc6_34.3: type = converted %.loc6_15, constants.%tuple.type.dd4 [concrete = constants.%tuple.type.dd4] -// CHECK:STDOUT: %.loc6_34.4: type = converted %.loc6_21, constants.%tuple.type.154 [concrete = constants.%tuple.type.154] -// CHECK:STDOUT: %.loc6_34.5: type = converted %.loc6_33, constants.%tuple.type.c2c [concrete = constants.%tuple.type.c2c] +// CHECK:STDOUT: %.loc6_33: %tuple.type.24b = tuple_literal (%i32.loc6_25, %i32.loc6_30) [concrete = constants.%tuple.a50] +// CHECK:STDOUT: %.loc6_34.2: %tuple.type.58c = tuple_literal (%.loc6_21, %.loc6_33) [concrete = constants.%tuple.2de] +// CHECK:STDOUT: %.loc6_34.3: type = converted constants.%tuple.38e, constants.%tuple.type.dd4 [concrete = constants.%tuple.type.dd4] +// CHECK:STDOUT: %.loc6_34.4: type = converted constants.%tuple.896, constants.%tuple.type.154 [concrete = constants.%tuple.type.154] +// CHECK:STDOUT: %.loc6_34.5: type = converted constants.%tuple.a50, constants.%tuple.type.c2c [concrete = constants.%tuple.type.c2c] // CHECK:STDOUT: %.loc6_34.6: type = converted %.loc6_34.2, constants.%tuple.type.cfa [concrete = constants.%tuple.type.cfa] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.cfa = ref_binding b, %b.var [concrete = %b.var] @@ -213,7 +218,7 @@ fn F() -> (i32,) { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Implicit.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc7_15.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc7_15.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) [concrete = constants.%tuple.ad8] // CHECK:STDOUT: %impl.elem0.loc7_15.1: %.dc8 = impl_witness_access constants.%ImplicitAs.impl_witness.a38, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a89] // CHECK:STDOUT: %bound_method.loc7_15.1: = bound_method %int_1, %impl.elem0.loc7_15.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5b6] // CHECK:STDOUT: %specific_fn.loc7_15.1: = specific_function %impl.elem0.loc7_15.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -228,9 +233,9 @@ fn F() -> (i32,) { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_15.2: init %i32 = call %bound_method.loc7_15.4(%int_2) [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc7_15.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_15.2 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc7_15.5: %i32 = converted %int_2, %.loc7_15.4 [concrete = constants.%int_2.d0d] -// CHECK:STDOUT: %tuple: %tuple.type.c2c = tuple_value (%.loc7_15.3, %.loc7_15.5) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc7_16.2: %tuple.type.c2c = converted %.loc7_15.1, %tuple [concrete = constants.%tuple] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple) [concrete = constants.%C.cf0] +// CHECK:STDOUT: %tuple: %tuple.type.c2c = tuple_value (%.loc7_15.3, %.loc7_15.5) [concrete = constants.%tuple.56c] +// CHECK:STDOUT: %.loc7_16.2: %tuple.type.c2c = converted %.loc7_15.1, %tuple [concrete = constants.%tuple.56c] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.56c) [concrete = constants.%C.cf0] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %C.cf0 = ref_binding c, %c.var [concrete = %c.var] // CHECK:STDOUT: } @@ -316,7 +321,7 @@ fn F() -> (i32,) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %int_1: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1) [concrete] +// CHECK:STDOUT: %tuple.246: %tuple.type.a1c = tuple_value (%int_1) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] @@ -339,7 +344,7 @@ fn F() -> (i32,) { // CHECK:STDOUT: %Main.I: type = import_ref Main//symbolic_decl, I, loaded [concrete = constants.%I.type] // CHECK:STDOUT: %Main.C: type = import_ref Main//symbolic_decl, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.c77: %I.assoc_type = import_ref Main//symbolic_decl, loc5_10, loaded [concrete = constants.%assoc0.2ff] -// CHECK:STDOUT: %Main.import_ref.fd7: %tuple.type.a1c = import_ref Main//symbolic_decl, loc10_31, loaded [concrete = constants.%tuple] +// CHECK:STDOUT: %Main.import_ref.fd7: %tuple.type.a1c = import_ref Main//symbolic_decl, loc10_31, loaded [concrete = constants.%tuple.246] // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.fd7), @C.as.I.impl [concrete] // CHECK:STDOUT: %Main.import_ref.23f: %tuple.type.a1c = import_ref Main//symbolic_decl, loc5_10, loaded [concrete = %val] // CHECK:STDOUT: %val: %tuple.type.a1c = assoc_const_decl @val [concrete] {} @@ -356,15 +361,15 @@ fn F() -> (i32,) { // CHECK:STDOUT: %val.ref: %I.assoc_type = name_ref val, imports.%Main.import_ref.c77 [concrete = constants.%assoc0.2ff] // CHECK:STDOUT: %as_type: type = facet_access_type %.loc7_13 [concrete = constants.%C] // CHECK:STDOUT: %.loc7_18.1: type = converted %.loc7_13, %as_type [concrete = constants.%C] -// CHECK:STDOUT: %impl.elem0.loc7_18.1: %tuple.type.a1c = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%tuple] +// CHECK:STDOUT: %impl.elem0.loc7_18.1: %tuple.type.a1c = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%tuple.246] // CHECK:STDOUT: %tuple.elem0: %i32 = tuple_access %impl.elem0.loc7_18.1, element0 [concrete = constants.%int_1] // CHECK:STDOUT: %impl.elem0.loc7_18.2: %.65f = impl_witness_access constants.%Copy.impl_witness.fb7, element0 [concrete = constants.%Int.as.Copy.impl.Op.dfd] // CHECK:STDOUT: %bound_method.loc7_18.1: = bound_method %tuple.elem0, %impl.elem0.loc7_18.2 [concrete = constants.%Int.as.Copy.impl.Op.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc7_18.2, @Int.as.Copy.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_18.2: = bound_method %tuple.elem0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Int.as.Copy.impl.Op.call: init %i32 = call %bound_method.loc7_18.2(%tuple.elem0) [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc7_18.2: init %tuple.type.a1c = tuple_init (%Int.as.Copy.impl.Op.call) to %return [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc7_22: init %tuple.type.a1c = converted %impl.elem0.loc7_18.1, %.loc7_18.2 [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc7_18.2: init %tuple.type.a1c = tuple_init (%Int.as.Copy.impl.Op.call) to %return [concrete = constants.%tuple.246] +// CHECK:STDOUT: %.loc7_22: init %tuple.type.a1c = converted %impl.elem0.loc7_18.1, %.loc7_18.2 [concrete = constants.%tuple.246] // CHECK:STDOUT: return %.loc7_22 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon index 1103cd55f38c..1cd75bdf5fc4 100644 --- a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon @@ -54,6 +54,7 @@ fn H() { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] +// CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -99,7 +100,7 @@ fn H() { // CHECK:STDOUT: %i32.loc7_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc7_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc7_19.2: %tuple.type.24b = tuple_literal (%i32.loc7_11, %i32.loc7_16) +// CHECK:STDOUT: %.loc7_19.2: %tuple.type.24b = tuple_literal (%i32.loc7_11, %i32.loc7_16) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.d07 = ref_binding v, %v.var @@ -148,10 +149,12 @@ fn H() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] +// CHECK:STDOUT: %tuple.e64: %tuple.type.ff9 = tuple_value (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.189: type = tuple_type (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.f9f: type = tuple_type (%tuple.type.ff9, %tuple.type.ff9) [concrete] +// CHECK:STDOUT: %tuple.9e5: %tuple.type.f9f = tuple_value (%tuple.e64, %tuple.e64) [concrete] // CHECK:STDOUT: %tuple.type.99b: type = tuple_type (%tuple.type.189, %tuple.type.189) [concrete] // CHECK:STDOUT: %pattern_type.d88: type = pattern_type %tuple.type.99b [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -160,6 +163,7 @@ fn H() { // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.9c4: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.af5 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8bc: type = ptr_type %tuple.type.99b [concrete] // CHECK:STDOUT: %tuple.type.3a3: type = tuple_type (type, %tuple.type.ff9, type) [concrete] +// CHECK:STDOUT: %tuple.5fc: %tuple.type.3a3 = tuple_value (%i32, %tuple.e64, %i32) [concrete] // CHECK:STDOUT: %tuple.type.516: type = tuple_type (%i32, %tuple.type.189, %i32) [concrete] // CHECK:STDOUT: %pattern_type.6b5: type = pattern_type %tuple.type.516 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -217,17 +221,17 @@ fn H() { // CHECK:STDOUT: %i32.loc7_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc7_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc7_25: %tuple.type.ff9 = tuple_literal (%i32.loc7_12, %i32.loc7_17, %i32.loc7_22) +// CHECK:STDOUT: %.loc7_25: %tuple.type.ff9 = tuple_literal (%i32.loc7_12, %i32.loc7_17, %i32.loc7_22) [concrete = constants.%tuple.e64] // CHECK:STDOUT: %int_32.loc7_29: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_29: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc7_34: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc7_39: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_39: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc7_42: %tuple.type.ff9 = tuple_literal (%i32.loc7_29, %i32.loc7_34, %i32.loc7_39) -// CHECK:STDOUT: %.loc7_43.2: %tuple.type.f9f = tuple_literal (%.loc7_25, %.loc7_42) -// CHECK:STDOUT: %.loc7_43.3: type = converted %.loc7_25, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] -// CHECK:STDOUT: %.loc7_43.4: type = converted %.loc7_42, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] +// CHECK:STDOUT: %.loc7_42: %tuple.type.ff9 = tuple_literal (%i32.loc7_29, %i32.loc7_34, %i32.loc7_39) [concrete = constants.%tuple.e64] +// CHECK:STDOUT: %.loc7_43.2: %tuple.type.f9f = tuple_literal (%.loc7_25, %.loc7_42) [concrete = constants.%tuple.9e5] +// CHECK:STDOUT: %.loc7_43.3: type = converted constants.%tuple.e64, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] +// CHECK:STDOUT: %.loc7_43.4: type = converted constants.%tuple.e64, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] // CHECK:STDOUT: %.loc7_43.5: type = converted %.loc7_43.2, constants.%tuple.type.99b [concrete = constants.%tuple.type.99b] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.99b = ref_binding v, %v.var @@ -280,11 +284,11 @@ fn H() { // CHECK:STDOUT: %i32.loc13_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc13_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc13_30: %tuple.type.ff9 = tuple_literal (%i32.loc13_17, %i32.loc13_22, %i32.loc13_27) +// CHECK:STDOUT: %.loc13_30: %tuple.type.ff9 = tuple_literal (%i32.loc13_17, %i32.loc13_22, %i32.loc13_27) [concrete = constants.%tuple.e64] // CHECK:STDOUT: %int_32.loc13_33: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_33: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc13_36.2: %tuple.type.3a3 = tuple_literal (%i32.loc13_11, %.loc13_30, %i32.loc13_33) -// CHECK:STDOUT: %.loc13_36.3: type = converted %.loc13_30, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] +// CHECK:STDOUT: %.loc13_36.2: %tuple.type.3a3 = tuple_literal (%i32.loc13_11, %.loc13_30, %i32.loc13_33) [concrete = constants.%tuple.5fc] +// CHECK:STDOUT: %.loc13_36.3: type = converted constants.%tuple.e64, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] // CHECK:STDOUT: %.loc13_36.4: type = converted %.loc13_36.2, constants.%tuple.type.516 [concrete = constants.%tuple.type.516] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.516 = ref_binding v, %v.var diff --git a/toolchain/check/testdata/tuple/tuple_pattern.carbon b/toolchain/check/testdata/tuple/tuple_pattern.carbon index 243767f6e4ae..d2133594e904 100644 --- a/toolchain/check/testdata/tuple/tuple_pattern.carbon +++ b/toolchain/check/testdata/tuple/tuple_pattern.carbon @@ -104,10 +104,10 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type.b6b [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %tuple.type.b6b, () [concrete] @@ -126,18 +126,18 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %y.patt: %pattern_type.a96 = value_binding_pattern y [concrete] // CHECK:STDOUT: %.loc6_20: %pattern_type.de4 = tuple_pattern (%x.patt, %y.patt) [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_31: %tuple.type.b6b = tuple_literal (%.loc6_26.1, %.loc6_30.1) +// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_31: %tuple.type.b6b = tuple_literal (%.loc6_26.1, %.loc6_30.1) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_12.1: type = splice_block %.loc6_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_12.3: type = converted %.loc6_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc6_26: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_26.2: %empty_struct_type = converted %.loc6_26.1, %empty_struct.loc6_26 [concrete = constants.%empty_struct] // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %.loc6_26.2 // CHECK:STDOUT: %.loc6_19.1: type = splice_block %.loc6_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_19.3: type = converted %.loc6_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc6_30: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] @@ -153,12 +153,12 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.elem0.loc7: ref %empty_struct_type = tuple_access %.var.loc7, element0 // CHECK:STDOUT: %tuple.elem1.loc7: ref %empty_struct_type = tuple_access %.var.loc7, element1 // CHECK:STDOUT: %.loc7_12.1: type = splice_block %.loc7_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc7_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_12.3: type = converted %.loc7_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_struct_type = ref_binding a, %tuple.elem0.loc7 // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc7_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_struct_type = ref_binding b, %tuple.elem1.loc7 @@ -169,9 +169,9 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.var_patt.loc8: %pattern_type.de4 = var_pattern %.loc8_20 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.var.loc8: ref %tuple.type.b6b = var %.var_patt.loc8 -// CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc8_30.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc8_31.1: %tuple.type.b6b = tuple_literal (%.loc8_26.1, %.loc8_30.1) +// CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc8_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc8_31.1: %tuple.type.b6b = tuple_literal (%.loc8_26.1, %.loc8_30.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0.loc8_31: ref %empty_struct_type = tuple_access %.var.loc8, element0 // CHECK:STDOUT: %.loc8_26.2: init %empty_struct_type = struct_init () to %tuple.elem0.loc8_31 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_31.2: init %empty_struct_type = converted %.loc8_26.1, %.loc8_26.2 [concrete = constants.%empty_struct] @@ -184,12 +184,12 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.elem0.loc8_3: ref %empty_struct_type = tuple_access %.var.loc8, element0 // CHECK:STDOUT: %tuple.elem1.loc8_3: ref %empty_struct_type = tuple_access %.var.loc8, element1 // CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc8_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_12.3: type = converted %.loc8_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %empty_struct_type = ref_binding c, %tuple.elem0.loc8_3 // CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc8_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc8_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_19.3: type = converted %.loc8_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_struct_type = ref_binding d, %tuple.elem1.loc8_3 @@ -211,10 +211,10 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] -// CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] +// CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %tuple.type.b6b, () [concrete] @@ -235,9 +235,9 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.var_patt: %pattern_type.de4 = var_pattern %tuple.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.var: ref %tuple.type.b6b = var %tuple.var_patt -// CHECK:STDOUT: %.loc6_27.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_31.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_32.1: %tuple.type.b6b = tuple_literal (%.loc6_27.1, %.loc6_31.1) +// CHECK:STDOUT: %.loc6_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_31.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_32.1: %tuple.type.b6b = tuple_literal (%.loc6_27.1, %.loc6_31.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0.loc6: ref %empty_struct_type = tuple_access %tuple.var, element0 // CHECK:STDOUT: %.loc6_27.2: init %empty_struct_type = struct_init () to %tuple.elem0.loc6 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_32.2: init %empty_struct_type = converted %.loc6_27.1, %.loc6_27.2 [concrete = constants.%empty_struct] @@ -248,11 +248,11 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc6_3: init %tuple.type.b6b = converted %.loc6_32.1, %.loc6_32.4 [concrete = constants.%tuple] // CHECK:STDOUT: assign %tuple.var, %.loc6_3 // CHECK:STDOUT: %.loc6_21.1: type = splice_block %.loc6_21.5 [concrete = constants.%tuple.type.b6b] { -// CHECK:STDOUT: %.loc6_16: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_20: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_21.2: %tuple.type.b6b = tuple_literal (%.loc6_16, %.loc6_20) -// CHECK:STDOUT: %.loc6_21.3: type = converted %.loc6_16, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc6_21.4: type = converted %.loc6_20, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc6_16: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_20: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_21.2: %tuple.type.b6b = tuple_literal (%.loc6_16, %.loc6_20) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc6_21.3: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc6_21.4: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc6_21.5: type = converted %.loc6_21.2, constants.%tuple.type.b6b [concrete = constants.%tuple.type.b6b] // CHECK:STDOUT: } // CHECK:STDOUT: %tuple: ref %tuple.type.b6b = ref_binding tuple, %tuple.var @@ -278,12 +278,12 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.elem0.loc7_3: ref %empty_struct_type = tuple_access %.var, element0 // CHECK:STDOUT: %tuple.elem1.loc7_3: ref %empty_struct_type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc7_12.1: type = splice_block %.loc7_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc7_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_12.3: type = converted %.loc7_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = ref_binding x, %tuple.elem0.loc7_3 // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc7_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc7_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = ref_binding y, %tuple.elem1.loc7_3 @@ -305,15 +305,15 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %tuple.patt: %pattern_type.de4 = value_binding_pattern tuple [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc13_27: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_31: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_32.1: %tuple.type.b6b = tuple_literal (%.loc13_27, %.loc13_31) +// CHECK:STDOUT: %.loc13_27: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_31: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_32.1: %tuple.type.b6b = tuple_literal (%.loc13_27, %.loc13_31) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc13_21.1: type = splice_block %.loc13_21.5 [concrete = constants.%tuple.type.b6b] { -// CHECK:STDOUT: %.loc13_16: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_20: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_21.2: %tuple.type.b6b = tuple_literal (%.loc13_16, %.loc13_20) -// CHECK:STDOUT: %.loc13_21.3: type = converted %.loc13_16, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc13_21.4: type = converted %.loc13_20, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_16: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_20: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc13_21.2: %tuple.type.b6b = tuple_literal (%.loc13_16, %.loc13_20) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc13_21.3: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc13_21.4: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_21.5: type = converted %.loc13_21.2, constants.%tuple.type.b6b [concrete = constants.%tuple.type.b6b] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc13_27: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] @@ -345,12 +345,12 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.elem0.loc14_3: ref %empty_struct_type = tuple_access %.var, element0 // CHECK:STDOUT: %tuple.elem1.loc14_3: ref %empty_struct_type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc14_12.1: type = splice_block %.loc14_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc14_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_12.3: type = converted %.loc14_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = ref_binding x, %tuple.elem0.loc14_3 // CHECK:STDOUT: %.loc14_19.1: type = splice_block %.loc14_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc14_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc14_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_19.3: type = converted %.loc14_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = ref_binding y, %tuple.elem1.loc14_3 @@ -378,12 +378,12 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.elem0: ref %empty_struct_type = tuple_access %.var, element0 // CHECK:STDOUT: %tuple.elem1: ref %empty_struct_type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc22_12.1: type = splice_block %.loc22_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc22_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc22_12.3: type = converted %.loc22_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = ref_binding x, %tuple.elem0 // CHECK:STDOUT: %.loc22_19.1: type = splice_block %.loc22_19.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc22_19.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_19.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc22_19.3: type = converted %.loc22_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = ref_binding y, %tuple.elem1 @@ -399,12 +399,14 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %tuple.type.6ca: type = tuple_type (%empty_struct_type, %tuple.type.b6b) [concrete] // CHECK:STDOUT: %pattern_type.361: type = pattern_type %tuple.type.6ca [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %tuple.9a3: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] +// CHECK:STDOUT: %tuple.56c: %tuple.type.6ca = tuple_value (%empty_struct, %tuple.9a3) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -419,27 +421,27 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc6_28: %pattern_type.de4 = tuple_pattern (%y.patt, %z.patt) [concrete] // CHECK:STDOUT: %.loc6_29: %pattern_type.361 = tuple_pattern (%x.patt, %.loc6_28) [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc6_35.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_40.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_44.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_45: %tuple.type.b6b = tuple_literal (%.loc6_40.1, %.loc6_44.1) -// CHECK:STDOUT: %.loc6_46: %tuple.type.6ca = tuple_literal (%.loc6_35.1, %.loc6_45) +// CHECK:STDOUT: %.loc6_35.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_40.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_44.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc6_45: %tuple.type.b6b = tuple_literal (%.loc6_40.1, %.loc6_44.1) [concrete = constants.%tuple.9a3] +// CHECK:STDOUT: %.loc6_46: %tuple.type.6ca = tuple_literal (%.loc6_35.1, %.loc6_45) [concrete = constants.%tuple.56c] // CHECK:STDOUT: %.loc6_12.1: type = splice_block %.loc6_12.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_12.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_12.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_12.3: type = converted %.loc6_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc6_35: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_35.2: %empty_struct_type = converted %.loc6_35.1, %empty_struct.loc6_35 [concrete = constants.%empty_struct] // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %.loc6_35.2 // CHECK:STDOUT: %.loc6_20.1: type = splice_block %.loc6_20.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_20.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_20.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_20.3: type = converted %.loc6_20.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc6_40: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_40.2: %empty_struct_type = converted %.loc6_40.1, %empty_struct.loc6_40 [concrete = constants.%empty_struct] // CHECK:STDOUT: %y: %empty_struct_type = value_binding y, %.loc6_40.2 // CHECK:STDOUT: %.loc6_27.1: type = splice_block %.loc6_27.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc6_27.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc6_27.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_27.3: type = converted %.loc6_27.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc6_44: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] @@ -452,10 +454,11 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -468,14 +471,14 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc5_18: %pattern_type.de4 = tuple_pattern (%x.patt, %y.patt) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5_10.1: type = splice_block %.loc5_10.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc5_10.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_10.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_10.3: type = converted %.loc5_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc5_24: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_24: %empty_struct_type = converted @__global_init.%.loc5_24, %empty_struct.loc5_24 [concrete = constants.%empty_struct] // CHECK:STDOUT: %x: %empty_struct_type = value_binding x, %.loc5_24 // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc5_17.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc5_17.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_17.3: type = converted %.loc5_17.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct.loc5_28: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] @@ -485,9 +488,9 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc5_24: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_28: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_29: %tuple.type = tuple_literal (%.loc5_24, %.loc5_28) +// CHECK:STDOUT: %.loc5_24: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc5_28: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc5_29: %tuple.type = tuple_literal (%.loc5_24, %.loc5_28) [concrete = constants.%tuple] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/decl.carbon b/toolchain/check/testdata/var/decl.carbon index 0918d81b4d80..3fc75bb5e1a3 100644 --- a/toolchain/check/testdata/var/decl.carbon +++ b/toolchain/check/testdata/var/decl.carbon @@ -24,6 +24,7 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -60,7 +61,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt // CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var diff --git a/toolchain/check/testdata/var/decl_with_init.carbon b/toolchain/check/testdata/var/decl_with_init.carbon index eef865c6d355..b683e32d0f8a 100644 --- a/toolchain/check/testdata/var/decl_with_init.carbon +++ b/toolchain/check/testdata/var/decl_with_init.carbon @@ -24,8 +24,8 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -60,12 +60,12 @@ fn Main() { // CHECK:STDOUT: %x.var_patt: %pattern_type.cb1 = var_pattern %x.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt -// CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_3: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var, %.loc3_3 // CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var diff --git a/toolchain/check/testdata/var/export_name.carbon b/toolchain/check/testdata/var/export_name.carbon index 7207dd3d697b..6a20a9616740 100644 --- a/toolchain/check/testdata/var/export_name.carbon +++ b/toolchain/check/testdata/var/export_name.carbon @@ -46,6 +46,7 @@ var w: () = v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -59,7 +60,7 @@ var w: () = v; // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var [concrete = %v.var] @@ -91,8 +92,8 @@ var w: () = v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -114,7 +115,7 @@ var w: () = v; // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %empty_tuple.type = var %w.var_patt [concrete] // CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %w: ref %empty_tuple.type = ref_binding w, %w.var [concrete = %w.var] diff --git a/toolchain/check/testdata/var/fail_duplicate_decl.carbon b/toolchain/check/testdata/var/fail_duplicate_decl.carbon index 7100bb576c32..4710fbfa11a5 100644 --- a/toolchain/check/testdata/var/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/var/fail_duplicate_decl.carbon @@ -32,8 +32,8 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -68,12 +68,12 @@ fn Main() { // CHECK:STDOUT: %x.var_patt.loc3: %pattern_type.cb1 = var_pattern %x.patt.loc3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var.loc3: ref %empty_tuple.type = var %x.var_patt.loc3 -// CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc3 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_3: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var.loc3, %.loc3_3 // CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc3: ref %empty_tuple.type = ref_binding x, %x.var.loc3 @@ -82,12 +82,12 @@ fn Main() { // CHECK:STDOUT: %x.var_patt.loc11: %pattern_type.cb1 = var_pattern %x.patt.loc11 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var.loc11: ref %empty_tuple.type = var %x.var_patt.loc11 -// CHECK:STDOUT: %.loc11_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc11 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_3: init %empty_tuple.type = converted %.loc11_16.1, %.loc11_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var.loc11, %.loc11_3 // CHECK:STDOUT: %.loc11_11.1: type = splice_block %.loc11_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc11_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_11.3: type = converted %.loc11_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc11: ref %empty_tuple.type = ref_binding x, %x.var.loc11 diff --git a/toolchain/check/testdata/var/fail_init_type_mismatch.carbon b/toolchain/check/testdata/var/fail_init_type_mismatch.carbon index 819097e5e2b8..6d9b667634b7 100644 --- a/toolchain/check/testdata/var/fail_init_type_mismatch.carbon +++ b/toolchain/check/testdata/var/fail_init_type_mismatch.carbon @@ -25,8 +25,10 @@ var x: {} = (); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: } @@ -52,7 +54,7 @@ var x: {} = (); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_struct_type = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc22_9.1: type = splice_block %.loc22_9.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc22_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc22_9.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc22_9.3: type = converted %.loc22_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = ref_binding x, %x.var [concrete = %x.var] @@ -60,7 +62,7 @@ var x: {} = (); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc22_14: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc22_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_1: %empty_struct_type = converted %.loc22_14, [concrete = ] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/var/fail_init_with_self.carbon b/toolchain/check/testdata/var/fail_init_with_self.carbon index 2ce5da55924f..742e40a02dde 100644 --- a/toolchain/check/testdata/var/fail_init_with_self.carbon +++ b/toolchain/check/testdata/var/fail_init_with_self.carbon @@ -28,6 +28,7 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -66,7 +67,7 @@ fn Main() { // CHECK:STDOUT: %x.ref: = name_ref x, [concrete = ] // CHECK:STDOUT: assign %x.var, // CHECK:STDOUT: %.loc7_11.1: type = splice_block %.loc7_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_11.3: type = converted %.loc7_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var diff --git a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon index 305615378341..8e78091dd590 100644 --- a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon +++ b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon @@ -30,6 +30,7 @@ var y: () = x; // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -64,7 +65,7 @@ var y: () = x; // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %empty_tuple.type = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.var [concrete = %y.var] @@ -78,7 +79,7 @@ var y: () = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt // CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var diff --git a/toolchain/check/testdata/var/fail_modifiers.carbon b/toolchain/check/testdata/var/fail_modifiers.carbon index 43f61efb225a..b700a704ce0b 100644 --- a/toolchain/check/testdata/var/fail_modifiers.carbon +++ b/toolchain/check/testdata/var/fail_modifiers.carbon @@ -50,6 +50,7 @@ abstract var e: (); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -66,7 +67,7 @@ abstract var e: (); // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc19_19.1: type = splice_block %.loc19_19.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc19_19.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_19.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_19.3: type = converted %.loc19_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var [concrete = %b.var] @@ -76,7 +77,7 @@ abstract var e: (); // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt [concrete] // CHECK:STDOUT: %.loc28_27.1: type = splice_block %.loc28_27.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc28_27.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc28_27.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc28_27.3: type = converted %.loc28_27.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %empty_tuple.type = ref_binding c, %c.var [concrete = %c.var] @@ -86,7 +87,7 @@ abstract var e: (); // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete] // CHECK:STDOUT: %.loc41_29.1: type = splice_block %.loc41_29.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc41_29.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc41_29.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc41_29.3: type = converted %.loc41_29.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var] @@ -96,7 +97,7 @@ abstract var e: (); // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete] // CHECK:STDOUT: %.loc47_18.1: type = splice_block %.loc47_18.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc47_18.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc47_18.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc47_18.3: type = converted %.loc47_18.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %empty_tuple.type = ref_binding e, %e.var [concrete = %e.var] diff --git a/toolchain/check/testdata/var/fail_namespace_conflict.carbon b/toolchain/check/testdata/var/fail_namespace_conflict.carbon index 13f9df42b6af..0027f8124134 100644 --- a/toolchain/check/testdata/var/fail_namespace_conflict.carbon +++ b/toolchain/check/testdata/var/fail_namespace_conflict.carbon @@ -36,8 +36,8 @@ var A: () = (); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -51,7 +51,7 @@ var A: () = (); // CHECK:STDOUT: } // CHECK:STDOUT: %A.var.loc24: ref %empty_tuple.type = var %A.var_patt.loc24 [concrete] // CHECK:STDOUT: %.loc24_9.1: type = splice_block %.loc24_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc24_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc24_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc24_9.3: type = converted %.loc24_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc24: ref %empty_tuple.type = ref_binding A, %A.var.loc24 [concrete = %A.var.loc24] @@ -61,7 +61,7 @@ var A: () = (); // CHECK:STDOUT: } // CHECK:STDOUT: %A.var.loc33: ref %empty_tuple.type = var %A.var_patt.loc33 [concrete] // CHECK:STDOUT: %.loc33_9.1: type = splice_block %.loc33_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc33_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc33_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc33_9.3: type = converted %.loc33_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc33: ref %empty_tuple.type = ref_binding A, %A.var.loc33 [concrete = %A.var.loc33] @@ -69,7 +69,7 @@ var A: () = (); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc33_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc33_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc33_14.2: init %empty_tuple.type = tuple_init () to file.%A.var.loc33 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc33_1: init %empty_tuple.type = converted %.loc33_14.1, %.loc33_14.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%A.var.loc33, %.loc33_1 diff --git a/toolchain/check/testdata/var/global_decl.carbon b/toolchain/check/testdata/var/global_decl.carbon index 78b49376d3c9..66351aeb6310 100644 --- a/toolchain/check/testdata/var/global_decl.carbon +++ b/toolchain/check/testdata/var/global_decl.carbon @@ -18,6 +18,7 @@ var x: {.v: ()}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] // CHECK:STDOUT: } @@ -32,7 +33,7 @@ var x: {.v: ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc15_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc15_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_14.2: type = converted %.loc15_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/var/global_decl_import.carbon b/toolchain/check/testdata/var/global_decl_import.carbon index 8f30fd0ab8eb..09b63187eed7 100644 --- a/toolchain/check/testdata/var/global_decl_import.carbon +++ b/toolchain/check/testdata/var/global_decl_import.carbon @@ -32,6 +32,7 @@ fn G() -> {.v: ()} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] // CHECK:STDOUT: } @@ -46,7 +47,7 @@ fn G() -> {.v: ()} { // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc4_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_14.2: type = converted %.loc4_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } @@ -57,12 +58,12 @@ fn G() -> {.v: ()} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access imports.%x.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -83,7 +84,7 @@ fn G() -> {.v: ()} { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc6_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_17.2: type = converted %.loc6_17.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: %return.param: ref %struct_type.v = out_param call_param0 diff --git a/toolchain/check/testdata/var/global_decl_with_init.carbon b/toolchain/check/testdata/var/global_decl_with_init.carbon index 3cb6e99d23fc..eab4127c6bc0 100644 --- a/toolchain/check/testdata/var/global_decl_with_init.carbon +++ b/toolchain/check/testdata/var/global_decl_with_init.carbon @@ -34,11 +34,11 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] -// CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -51,7 +51,7 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc4_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_14.2: type = converted %.loc4_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } @@ -60,8 +60,8 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_27.1: %struct_type.v = struct_literal (%.loc4_26.1) +// CHECK:STDOUT: %.loc4_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_27.1: %struct_type.v = struct_literal (%.loc4_26.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc4_27.2: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete = constants.%.2d8] // CHECK:STDOUT: %.loc4_26.2: init %empty_tuple.type = tuple_init () to %.loc4_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_27.3: init %empty_tuple.type = converted %.loc4_26.1, %.loc4_26.2 [concrete = constants.%empty_tuple] @@ -75,10 +75,11 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,14 +95,14 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %empty_tuple.type = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_28: %empty_tuple.type = converted @__global_init.%.loc4_28, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %.loc4_28 // CHECK:STDOUT: %.loc4_21.1: type = splice_block %.loc4_21.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_21.3: type = converted %.loc4_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.var [concrete = %y.var] @@ -109,9 +110,9 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_28: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_32.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_33: %tuple.type = tuple_literal (%.loc4_28, %.loc4_32.1) +// CHECK:STDOUT: %.loc4_28: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_33: %tuple.type = tuple_literal (%.loc4_28, %.loc4_32.1) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc4_32.2: init %empty_tuple.type = tuple_init () to file.%y.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_13: init %empty_tuple.type = converted %.loc4_32.1, %.loc4_32.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%y.var, %.loc4_13 @@ -122,13 +123,13 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%.var, element1 [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%.var, element0 [concrete] +// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%.var, element1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -146,12 +147,12 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %.var, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access %.var, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %tuple.elem0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_17.3: type = converted %.loc4_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %tuple.elem1 [concrete = constants.%tuple.elem1] @@ -159,9 +160,9 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_24.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_28.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc4_29.1: %tuple.type = tuple_literal (%.loc4_24.1, %.loc4_28.1) +// CHECK:STDOUT: %.loc4_24.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_28.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc4_29.1: %tuple.type = tuple_literal (%.loc4_24.1, %.loc4_28.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%.var, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %.loc4_24.2: init %empty_tuple.type = tuple_init () to %tuple.elem0 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_29.2: init %empty_tuple.type = converted %.loc4_24.1, %.loc4_24.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/var/global_lookup.carbon b/toolchain/check/testdata/var/global_lookup.carbon index 52e1ba91a5de..99d2d0378191 100644 --- a/toolchain/check/testdata/var/global_lookup.carbon +++ b/toolchain/check/testdata/var/global_lookup.carbon @@ -19,11 +19,11 @@ var y: {.v: ()} = x; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] -// CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %.423: ref %empty_tuple.type = struct_access file.%y.var, element0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -38,7 +38,7 @@ var y: {.v: ()} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc15_15: type = splice_block %struct_type.v.loc15 [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc15_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_14.2: type = converted %.loc15_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v.loc15: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } @@ -49,7 +49,7 @@ var y: {.v: ()} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %struct_type.v = var %y.var_patt [concrete] // CHECK:STDOUT: %.loc16_15: type = splice_block %struct_type.v.loc16 [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc16_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_14.2: type = converted %.loc16_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v.loc16: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } @@ -58,8 +58,8 @@ var y: {.v: ()} = x; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc15_27.1: %struct_type.v = struct_literal (%.loc15_26.1) +// CHECK:STDOUT: %.loc15_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc15_27.1: %struct_type.v = struct_literal (%.loc15_26.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc15_27.2: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete = constants.%.2d8] // CHECK:STDOUT: %.loc15_26.2: init %empty_tuple.type = tuple_init () to %.loc15_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_27.3: init %empty_tuple.type = converted %.loc15_26.1, %.loc15_26.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/var/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/global_lookup_in_scope.carbon index dfebca3f66a7..9a6f77bf5d8f 100644 --- a/toolchain/check/testdata/var/global_lookup_in_scope.carbon +++ b/toolchain/check/testdata/var/global_lookup_in_scope.carbon @@ -24,11 +24,11 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.c4c: type = pattern_type %struct_type.v [concrete] -// CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %.2d8: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -62,7 +62,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc2_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc2_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc2_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc2_14.2: type = converted %.loc2_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } @@ -86,7 +86,7 @@ fn Main() { // CHECK:STDOUT: %.loc5_3: init %struct_type.v = converted %x.ref, %.loc5_21.5 [concrete = constants.%struct] // CHECK:STDOUT: assign %y.var, %.loc5_3 // CHECK:STDOUT: %.loc5_17: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc5_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_16.2: type = converted %.loc5_16.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } @@ -101,8 +101,8 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc2_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc2_27.1: %struct_type.v = struct_literal (%.loc2_26.1) +// CHECK:STDOUT: %.loc2_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc2_27.1: %struct_type.v = struct_literal (%.loc2_26.1) [concrete = constants.%struct] // CHECK:STDOUT: %.loc2_27.2: ref %empty_tuple.type = struct_access file.%x.var, element0 [concrete = constants.%.2d8] // CHECK:STDOUT: %.loc2_26.2: init %empty_tuple.type = tuple_init () to %.loc2_27.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc2_27.3: init %empty_tuple.type = converted %.loc2_26.1, %.loc2_26.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/var/import.carbon b/toolchain/check/testdata/var/import.carbon index 6fee29c99f4d..9633988fc7c4 100644 --- a/toolchain/check/testdata/var/import.carbon +++ b/toolchain/check/testdata/var/import.carbon @@ -28,8 +28,8 @@ var a: () = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -42,7 +42,7 @@ var a: () = a_ref; // CHECK:STDOUT: } // CHECK:STDOUT: %a_ref.var: ref %empty_tuple.type = var %a_ref.var_patt [concrete] // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_13.3: type = converted %.loc4_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a_ref: ref %empty_tuple.type = ref_binding a_ref, %a_ref.var [concrete = %a_ref.var] @@ -50,7 +50,7 @@ var a: () = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_18.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_18.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_18.2: init %empty_tuple.type = tuple_init () to file.%a_ref.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_1: init %empty_tuple.type = converted %.loc4_18.1, %.loc4_18.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%a_ref.var, %.loc4_1 @@ -61,8 +61,8 @@ var a: () = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -85,7 +85,7 @@ var a: () = a_ref; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var] diff --git a/toolchain/check/testdata/var/import_access.carbon b/toolchain/check/testdata/var/import_access.carbon index c768b4af6276..2f6c0774b274 100644 --- a/toolchain/check/testdata/var/import_access.carbon +++ b/toolchain/check/testdata/var/import_access.carbon @@ -60,8 +60,8 @@ var v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -74,7 +74,7 @@ var v2: () = Test.v; // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt [concrete] // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_17.3: type = converted %.loc4_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var [concrete = %v.var] @@ -82,7 +82,7 @@ var v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc4_22.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_22.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_22.2: init %empty_tuple.type = tuple_init () to file.%v.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_9: init %empty_tuple.type = converted %.loc4_22.1, %.loc4_22.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%v.var, %.loc4_9 @@ -93,8 +93,8 @@ var v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -117,7 +117,7 @@ var v2: () = Test.v; // CHECK:STDOUT: } // CHECK:STDOUT: %v2.var: ref %empty_tuple.type = var %v2.var_patt [concrete] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: ref %empty_tuple.type = ref_binding v2, %v2.var [concrete = %v2.var] @@ -136,6 +136,7 @@ var v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -151,7 +152,7 @@ var v2: () = Test.v; // CHECK:STDOUT: } // CHECK:STDOUT: %v2.var: ref %empty_tuple.type = var %v2.var_patt [concrete] // CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: ref %empty_tuple.type = ref_binding v2, %v2.var [concrete = %v2.var] @@ -168,6 +169,7 @@ var v2: () = Test.v; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -190,7 +192,7 @@ var v2: () = Test.v; // CHECK:STDOUT: } // CHECK:STDOUT: %v2.var: ref %empty_tuple.type = var %v2.var_patt [concrete] // CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v2: ref %empty_tuple.type = ref_binding v2, %v2.var [concrete = %v2.var] diff --git a/toolchain/check/testdata/var/lookup.carbon b/toolchain/check/testdata/var/lookup.carbon index cace19998e7c..2864d68f62d7 100644 --- a/toolchain/check/testdata/var/lookup.carbon +++ b/toolchain/check/testdata/var/lookup.carbon @@ -23,8 +23,8 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -59,12 +59,12 @@ fn Main() { // CHECK:STDOUT: %x.var_patt: %pattern_type.cb1 = var_pattern %x.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt -// CHECK:STDOUT: %.loc16_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_3: init %empty_tuple.type = converted %.loc16_16.1, %.loc16_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var, %.loc16_3 // CHECK:STDOUT: %.loc16_11.1: type = splice_block %.loc16_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc16_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_11.3: type = converted %.loc16_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var diff --git a/toolchain/check/testdata/var/shadowing.carbon b/toolchain/check/testdata/var/shadowing.carbon index 642aa466f350..794f45bafbd2 100644 --- a/toolchain/check/testdata/var/shadowing.carbon +++ b/toolchain/check/testdata/var/shadowing.carbon @@ -35,8 +35,8 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] @@ -74,17 +74,17 @@ fn Main() { // CHECK:STDOUT: %NS.var_patt: %pattern_type.cb1 = var_pattern %NS.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %NS.var: ref %empty_tuple.type = var %NS.var_patt -// CHECK:STDOUT: %.loc5_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_17.2: init %empty_tuple.type = tuple_init () to %NS.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_3: init %empty_tuple.type = converted %.loc5_17.1, %.loc5_17.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %NS.var, %.loc5_3 // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %NS: ref %empty_tuple.type = ref_binding NS, %NS.var // CHECK:STDOUT: %NS.ref: ref %empty_tuple.type = name_ref NS, %NS -// CHECK:STDOUT: %.loc6_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_9.2: init %empty_tuple.type = tuple_init () to %NS.ref [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_6: init %empty_tuple.type = converted %.loc6_9.1, %.loc6_9.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %NS.ref, %.loc6_6 @@ -93,12 +93,12 @@ fn Main() { // CHECK:STDOUT: %x.var_patt.loc8: %pattern_type.cb1 = var_pattern %x.patt.loc8 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var.loc8: ref %empty_tuple.type = var %x.var_patt.loc8 -// CHECK:STDOUT: %.loc8_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc8 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_3: init %empty_tuple.type = converted %.loc8_16.1, %.loc8_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var.loc8, %.loc8_3 // CHECK:STDOUT: %.loc8_11.1: type = splice_block %.loc8_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_11.3: type = converted %.loc8_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc8: ref %empty_tuple.type = ref_binding x, %x.var.loc8 @@ -111,17 +111,17 @@ fn Main() { // CHECK:STDOUT: %x.var_patt.loc10: %pattern_type.cb1 = var_pattern %x.patt.loc10 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var.loc10: ref %empty_tuple.type = var %x.var_patt.loc10 -// CHECK:STDOUT: %.loc10_18.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_18.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_18.2: init %empty_tuple.type = tuple_init () to %x.var.loc10 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_5: init %empty_tuple.type = converted %.loc10_18.1, %.loc10_18.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var.loc10, %.loc10_5 // CHECK:STDOUT: %.loc10_13.1: type = splice_block %.loc10_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc10_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_13.3: type = converted %.loc10_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc10: ref %empty_tuple.type = ref_binding x, %x.var.loc10 // CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, %x.loc10 -// CHECK:STDOUT: %.loc13_10.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_10.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_10.2: init %empty_tuple.type = tuple_init () to %x.ref [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_7: init %empty_tuple.type = converted %.loc13_10.1, %.loc13_10.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.ref, %.loc13_7 diff --git a/toolchain/check/testdata/var/var_pattern.carbon b/toolchain/check/testdata/var/var_pattern.carbon index 0ae2ecc35544..543a08a5d9ab 100644 --- a/toolchain/check/testdata/var/var_pattern.carbon +++ b/toolchain/check/testdata/var/var_pattern.carbon @@ -151,8 +151,8 @@ fn G() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -187,12 +187,12 @@ fn G() { // CHECK:STDOUT: %x.var_patt: %pattern_type.cb1 = var_pattern %x.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt -// CHECK:STDOUT: %.loc5_20.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_20.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_7: init %empty_tuple.type = converted %.loc5_20.1, %.loc5_20.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %x.var, %.loc5_7 // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_15.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_15.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_15.3: type = converted %.loc5_15.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %x.var @@ -210,10 +210,11 @@ fn G() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -250,11 +251,11 @@ fn G() { // CHECK:STDOUT: %.loc5_24: %pattern_type.5b8 = tuple_pattern (%x.patt, %y.var_patt) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %empty_tuple.type = var %y.var_patt -// CHECK:STDOUT: %.loc5_30.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_34.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_35: %tuple.type = tuple_literal (%.loc5_30.1, %.loc5_34.1) +// CHECK:STDOUT: %.loc5_30.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_34.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_35: %tuple.type = tuple_literal (%.loc5_30.1, %.loc5_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -264,7 +265,7 @@ fn G() { // CHECK:STDOUT: %.loc5_15: init %empty_tuple.type = converted %.loc5_34.1, %.loc5_34.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %y.var, %.loc5_15 // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_23.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_23.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_23.3: type = converted %.loc5_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.var @@ -282,12 +283,12 @@ fn G() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %tuple.type, () [concrete] @@ -323,9 +324,9 @@ fn G() { // CHECK:STDOUT: %.var_patt: %pattern_type.5b8 = var_pattern %.loc5_20 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.var: ref %tuple.type = var %.var_patt -// CHECK:STDOUT: %.loc5_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_30.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_31.1: %tuple.type = tuple_literal (%.loc5_26.1, %.loc5_30.1) +// CHECK:STDOUT: %.loc5_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_30.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_31.1: %tuple.type = tuple_literal (%.loc5_26.1, %.loc5_30.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0.loc5_31: ref %empty_tuple.type = tuple_access %.var, element0 // CHECK:STDOUT: %.loc5_26.2: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc5_31 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_31.2: init %empty_tuple.type = converted %.loc5_26.1, %.loc5_26.2 [concrete = constants.%empty_tuple] @@ -338,12 +339,12 @@ fn G() { // CHECK:STDOUT: %tuple.elem0.loc5_3: ref %empty_tuple.type = tuple_access %.var, element0 // CHECK:STDOUT: %tuple.elem1.loc5_3: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %tuple.elem0.loc5_3 // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_19.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_19.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_19.3: type = converted %.loc5_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %tuple.elem1.loc5_3 @@ -361,12 +362,12 @@ fn G() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %tuple.type, () [concrete] @@ -402,9 +403,9 @@ fn G() { // CHECK:STDOUT: %.var_patt: %pattern_type.5b8 = var_pattern %.loc5_24 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.var: ref %tuple.type = var %.var_patt -// CHECK:STDOUT: %.loc5_30.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_34.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc5_35.1: %tuple.type = tuple_literal (%.loc5_30.1, %.loc5_34.1) +// CHECK:STDOUT: %.loc5_30.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_34.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_35.1: %tuple.type = tuple_literal (%.loc5_30.1, %.loc5_34.1) [concrete = constants.%tuple] // CHECK:STDOUT: %tuple.elem0.loc5_35: ref %empty_tuple.type = tuple_access %.var, element0 // CHECK:STDOUT: %.loc5_30.2: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc5_35 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_35.2: init %empty_tuple.type = converted %.loc5_30.1, %.loc5_30.2 [concrete = constants.%empty_tuple] @@ -417,12 +418,12 @@ fn G() { // CHECK:STDOUT: %tuple.elem0.loc5_7: ref %empty_tuple.type = tuple_access %.var, element0 // CHECK:STDOUT: %tuple.elem1.loc5_7: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc5_16.1: type = splice_block %.loc5_16.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_16.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_16.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_16.3: type = converted %.loc5_16.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = ref_binding x, %tuple.elem0.loc5_7 // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc5_23.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_23.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_23.3: type = converted %.loc5_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %tuple.elem1.loc5_7 @@ -438,12 +439,12 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -478,13 +479,13 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param // CHECK:STDOUT: %y.param: ref %empty_tuple.type = ref_param call_param1 // CHECK:STDOUT: %.loc4_21.1: type = splice_block %.loc4_21.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_21.3: type = converted %.loc4_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.param @@ -501,18 +502,18 @@ fn G() { // CHECK:STDOUT: %v.var_patt: %pattern_type.cb1 = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt -// CHECK:STDOUT: %.loc7_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_16.2: init %empty_tuple.type = tuple_init () to %v.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_3: init %empty_tuple.type = converted %.loc7_16.1, %.loc7_16.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %v.var, %.loc7_3 // CHECK:STDOUT: %.loc7_11.1: type = splice_block %.loc7_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_11.3: type = converted %.loc7_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %v.ref: ref %empty_tuple.type = name_ref v, %v -// CHECK:STDOUT: %.loc8_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_9.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_5: %empty_tuple.type = converted %v.ref, %tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_13.1: ref %empty_tuple.type = temporary_storage @@ -537,6 +538,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -564,13 +566,13 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param // CHECK:STDOUT: %y.param: ref %empty_tuple.type = ref_param call_param1 // CHECK:STDOUT: %.loc4_21.1: type = splice_block %.loc4_21.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_21.3: type = converted %.loc4_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.param @@ -583,6 +585,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -612,13 +615,13 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param // CHECK:STDOUT: %y.param: ref %empty_tuple.type = ref_param call_param1 // CHECK:STDOUT: %.loc4_21.1: type = splice_block %.loc4_21.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_21.3: type = converted %.loc4_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.param @@ -691,8 +694,8 @@ fn G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %P.ref: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%P.F [concrete = constants.%F] -// CHECK:STDOUT: %.loc7_8.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_8.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_8.2: %empty_tuple.type = converted %.loc7_8.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.1: ref %empty_tuple.type = temporary_storage @@ -718,14 +721,15 @@ fn G() { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type.bcd: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type.bcd [concrete] // CHECK:STDOUT: %tuple.type.a21: type = tuple_type (%empty_tuple.type, %tuple.type.bcd) [concrete] // CHECK:STDOUT: %pattern_type.c6c: type = pattern_type %tuple.type.a21 [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %tuple.c9e: %tuple.type.a21 = tuple_value (%empty_tuple, %tuple.d8f) [concrete] // CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type.bcd [concrete] -// CHECK:STDOUT: %tuple: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value.dcc: %type_where = facet_value %tuple.type.bcd, () [concrete] @@ -770,13 +774,13 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %z.var: ref %empty_tuple.type = var %z.var_patt // CHECK:STDOUT: %.var: ref %tuple.type.bcd = var %.var_patt -// CHECK:STDOUT: %.loc9_43.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc9_48.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc9_52.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc9_53.1: %tuple.type.bcd = tuple_literal (%.loc9_48.1, %.loc9_52.1) -// CHECK:STDOUT: %.loc9_54: %tuple.type.a21 = tuple_literal (%.loc9_43.1, %.loc9_53.1) +// CHECK:STDOUT: %.loc9_43.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc9_48.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc9_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc9_53.1: %tuple.type.bcd = tuple_literal (%.loc9_48.1, %.loc9_52.1) [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc9_54: %tuple.type.a21 = tuple_literal (%.loc9_43.1, %.loc9_53.1) [concrete = constants.%tuple.c9e] // CHECK:STDOUT: %.loc9_12.1: type = splice_block %.loc9_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.3: type = converted %.loc9_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -788,13 +792,13 @@ fn G() { // CHECK:STDOUT: %tuple.elem1.loc9_53: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc9_52.2: init %empty_tuple.type = tuple_init () to %tuple.elem1.loc9_53 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_53.3: init %empty_tuple.type = converted %.loc9_52.1, %.loc9_52.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc9_53.4: init %tuple.type.bcd = tuple_init (%.loc9_53.2, %.loc9_53.3) to %.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc9_15.1: init %tuple.type.bcd = converted %.loc9_53.1, %.loc9_53.4 [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc9_53.4: init %tuple.type.bcd = tuple_init (%.loc9_53.2, %.loc9_53.3) to %.var [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc9_15.1: init %tuple.type.bcd = converted %.loc9_53.1, %.loc9_53.4 [concrete = constants.%tuple.d8f] // CHECK:STDOUT: assign %.var, %.loc9_15.1 // CHECK:STDOUT: %tuple.elem0.loc9_15: ref %empty_tuple.type = tuple_access %.var, element0 // CHECK:STDOUT: %tuple.elem1.loc9_15: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc9_24.1: type = splice_block %.loc9_24.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc9_24.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_24.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_24.3: type = converted %.loc9_24.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %tuple.elem0.loc9_15 @@ -802,7 +806,7 @@ fn G() { // CHECK:STDOUT: %.loc9_27: init %empty_tuple.type = converted %tuple.elem1.loc9_15, %.loc9_15.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %z.var, %.loc9_27 // CHECK:STDOUT: %.loc9_35.1: type = splice_block %.loc9_35.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc9_35.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_35.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_35.3: type = converted %.loc9_35.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %z: ref %empty_tuple.type = ref_binding z, %z.var @@ -884,6 +888,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -891,7 +896,6 @@ fn G() { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value: %type_where = facet_value %empty_tuple.type, () [concrete] @@ -921,7 +925,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc4_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_12.2: type = converted %.loc4_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param @@ -949,7 +953,7 @@ fn G() { // CHECK:STDOUT: %F.call.loc8_48: init %empty_tuple.type = call %F.ref.loc8_46() // CHECK:STDOUT: %.loc8_49: %tuple.type = tuple_literal (%F.call.loc8_38, %F.call.loc8_43, %F.call.loc8_48) // CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_12.3: type = converted %.loc8_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_38.1: ref %empty_tuple.type = temporary_storage @@ -959,12 +963,12 @@ fn G() { // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %.loc8_38.3 // CHECK:STDOUT: assign %y.var, %F.call.loc8_43 // CHECK:STDOUT: %.loc8_23.1: type = splice_block %.loc8_23.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_23.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_23.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_23.3: type = converted %.loc8_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = ref_binding y, %y.var // CHECK:STDOUT: %.loc8_30.1: type = splice_block %.loc8_30.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_30.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_30.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_30.3: type = converted %.loc8_30.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_48.1: ref %empty_tuple.type = temporary_storage diff --git a/toolchain/check/testdata/where_expr/constraints.carbon b/toolchain/check/testdata/where_expr/constraints.carbon index 586dea62bbc2..505c924a778e 100644 --- a/toolchain/check/testdata/where_expr/constraints.carbon +++ b/toolchain/check/testdata/where_expr/constraints.carbon @@ -308,6 +308,7 @@ fn F() { // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%Member [concrete] // CHECK:STDOUT: %.Self.420: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type.a09: type = facet_type <@I where TODO> [concrete] // CHECK:STDOUT: %U: %I_where.type.a09 = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %pattern_type.917: type = pattern_type %I_where.type.a09 [concrete] @@ -342,7 +343,7 @@ fn F() { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: // CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self.420] -// CHECK:STDOUT: %.loc12_37: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_37: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_21.2: type = where_expr %.Self.2 [concrete = constants.%I_where.type.a09] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc12_37 @@ -384,7 +385,7 @@ fn F() { // CHECK:STDOUT: %.Self.as_type.loc16_38: type = facet_access_type %.Self.ref.loc16_38 [symbolic_self = constants.%.Self.binding.as_type.765] // CHECK:STDOUT: %.loc16_38: type = converted %.Self.ref.loc16_38, %.Self.as_type.loc16_38 [symbolic_self = constants.%.Self.binding.as_type.765] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc16_50: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_50: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_14.2: type = where_expr %.Self.2 [concrete = constants.%I_where.type.e04] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type // CHECK:STDOUT: requirement_impls %.loc16_20, %J.ref @@ -521,6 +522,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %WithError.type: type = fn_type @WithError [concrete] // CHECK:STDOUT: %WithError: %WithError.type = struct_value () [concrete] @@ -536,9 +538,9 @@ fn F() { // CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %WithError.ref: %WithError.type = name_ref WithError, imports.%Main.WithError [concrete = constants.%WithError] -// CHECK:STDOUT: %.loc8_26: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_26: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_11.1: type = splice_block %.loc8_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc8_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_11.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_11.3: type = converted %.loc8_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, [concrete = ] diff --git a/toolchain/check/testdata/where_expr/designator.carbon b/toolchain/check/testdata/where_expr/designator.carbon index 38c992d786fe..b234f61b5069 100644 --- a/toolchain/check/testdata/where_expr/designator.carbon +++ b/toolchain/check/testdata/where_expr/designator.carbon @@ -141,6 +141,7 @@ fn G(T:! type where C(()) impls I(.Self)) {} // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%Member [concrete] // CHECK:STDOUT: %.Self.420: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where TODO> [concrete] // CHECK:STDOUT: %T: %I_where.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.917: type = pattern_type %I_where.type [concrete] @@ -172,7 +173,7 @@ fn G(T:! type where C(()) impls I(.Self)) {} // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: // CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self.420] -// CHECK:STDOUT: %.loc9_37: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc9_37: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_21.2: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc9_37 @@ -192,7 +193,7 @@ fn G(T:! type where C(()) impls I(.Self)) {} // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc11_29: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc11_41: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_41: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_23.2: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%I.type // CHECK:STDOUT: requirement_equivalent %impl.elem0, %.loc11_41 diff --git a/toolchain/check/testdata/where_expr/equal_rewrite.carbon b/toolchain/check/testdata/where_expr/equal_rewrite.carbon index cc6227a01f94..64ccf8cac621 100644 --- a/toolchain/check/testdata/where_expr/equal_rewrite.carbon +++ b/toolchain/check/testdata/where_expr/equal_rewrite.carbon @@ -230,6 +230,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %N.lookup_impl_witness: = lookup_impl_witness %.Self.2fb, @N [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %N.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %N_where.type: type = facet_type <@N where %impl.elem0 = %empty_struct_type> [concrete] // CHECK:STDOUT: %T: %N_where.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %N_where.type [concrete] @@ -253,7 +254,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc9_22: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%N.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc9_28.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc9_28.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_28.2: type = converted %.loc9_28.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc9_16.2: type = where_expr %.Self.2 [concrete = constants.%N_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%N.type @@ -290,6 +291,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] // CHECK:STDOUT: %A_where.type.75b: type = facet_type <@A where %impl.elem0 = bool> [concrete] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %A.lookup_impl_witness, element1 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %A_where.type.27d: type = facet_type <@A where %impl.elem0 = bool and %impl.elem1 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %D: %A_where.type.27d = symbolic_binding D, 0 [symbolic] // CHECK:STDOUT: %pattern_type.f94: type = pattern_type %A_where.type.27d [concrete] @@ -326,7 +328,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type.loc10_48: type = facet_access_type %.Self.ref.loc10_48 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_48: type = converted %.Self.ref.loc10_48, %.Self.as_type.loc10_48 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%A.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.loc10_54.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_54.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_54.2: type = converted %.loc10_54.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_42.2: type = where_expr %.Self.3 [concrete = constants.%A_where.type.27d] { // CHECK:STDOUT: requirement_base_facet_type constants.%A_where.type.75b @@ -490,6 +492,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.binding.as_type: type = symbolic_binding_type .Self, %.Self.c58 [symbolic_self] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %.Self.c58, @J [symbolic_self] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %J.lookup_impl_witness, element1 [symbolic_self] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] @@ -519,7 +522,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type.loc10_29: type = facet_access_type %.Self.ref.loc10_29 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc10_29: type = converted %.Self.ref.loc10_29, %.Self.as_type.loc10_29 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc10_35.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_35.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_35.2: type = converted %.loc10_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.Self.ref.loc10_41: %J.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self.c58] // CHECK:STDOUT: %L.ref: %J.assoc_type = name_ref L, @L.%assoc1 [concrete = constants.%assoc1] @@ -557,7 +560,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type.loc12_39: type = facet_access_type %.Self.ref.loc12_39 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %.loc12_39: type = converted %.Self.ref.loc12_39, %.Self.as_type.loc12_39 [symbolic_self = constants.%.Self.binding.as_type] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.loc12_45.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_45.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_45.2: type = converted %.loc12_45.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc12_19.2: type = where_expr %.Self.2 [concrete = constants.%J_where.type] { // CHECK:STDOUT: requirement_base_facet_type constants.%J.type diff --git a/toolchain/lower/testdata/array/assign_return_value.carbon b/toolchain/lower/testdata/array/assign_return_value.carbon index b9721574bd8e..f76eb2f74cdf 100644 --- a/toolchain/lower/testdata/array/assign_return_value.carbon +++ b/toolchain/lower/testdata/array/assign_return_value.carbon @@ -19,14 +19,14 @@ fn Run() { // CHECK:STDOUT: ; ModuleID = 'assign_return_value.carbon' // CHECK:STDOUT: source_filename = "assign_return_value.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc13_39 = internal constant { i32, i32 } { i32 12, i32 24 } +// CHECK:STDOUT: @tuple.014.loc13_39 = internal constant { i32, i32 } { i32 12, i32 24 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CF.Main(ptr sret({ i32, i32 }) %return) #0 !dbg !4 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %return, i32 0, i32 0, !dbg !7 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %return, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %return, ptr align 4 @tuple.loc13_39, i64 8, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %return, ptr align 4 @tuple.014.loc13_39, i64 8, i1 false), !dbg !8 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/array/base.carbon b/toolchain/lower/testdata/array/base.carbon index cb366808e49e..7593d63f3c2c 100644 --- a/toolchain/lower/testdata/array/base.carbon +++ b/toolchain/lower/testdata/array/base.carbon @@ -24,7 +24,7 @@ fn Run() { // CHECK:STDOUT: @array.237.loc14_3 = internal constant [1 x i32] [i32 1] // CHECK:STDOUT: @array.b91.loc15_3 = internal constant [2 x double] [double 1.110000e+01, double 2.200000e+00] // CHECK:STDOUT: @array.1cb.loc16_3 = internal constant [5 x {}] zeroinitializer -// CHECK:STDOUT: @tuple.loc17_3 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } +// CHECK:STDOUT: @tuple.ee6.loc17_3 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @main() #0 !dbg !4 { @@ -52,7 +52,7 @@ fn Run() { // CHECK:STDOUT: %tuple.elem0.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !15 // CHECK:STDOUT: %tuple.elem1.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 1, !dbg !15 // CHECK:STDOUT: %tuple.elem2.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 2, !dbg !15 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %d.var, ptr align 4 @tuple.loc17_3, i64 12, i1 false), !dbg !10 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %d.var, ptr align 4 @tuple.ee6.loc17_3, i64 12, i1 false), !dbg !10 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %e.var), !dbg !11 // CHECK:STDOUT: %tuple.elem0.loc18.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !16 // CHECK:STDOUT: %.loc18_26.1 = load i32, ptr %tuple.elem0.loc18.tuple.elem, align 4, !dbg !16 diff --git a/toolchain/lower/testdata/class/generic.carbon b/toolchain/lower/testdata/class/generic.carbon index fb2079c7c27d..5082e0d468c7 100644 --- a/toolchain/lower/testdata/class/generic.carbon +++ b/toolchain/lower/testdata/class/generic.carbon @@ -159,7 +159,7 @@ fn AccessTuple() -> (i32, i32, i32) { // CHECK:STDOUT: ; ModuleID = 'create_generic.carbon' // CHECK:STDOUT: source_filename = "create_generic.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc22_28.6 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @tuple.21c.loc22_28.6 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CInts.Main(ptr sret({ i32, i32 }) %return) #0 !dbg !4 { @@ -178,7 +178,7 @@ fn AccessTuple() -> (i32, i32, i32) { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CTuples.Main(ptr sret({ { i32, i32 }, { i32, i32 } }) %return) #0 !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CMake.Main.a862d5c8b748242e(ptr %return, ptr @tuple.loc22_28.6, ptr @tuple.loc22_28.6), !dbg !13 +// CHECK:STDOUT: call void @_CMake.Main.a862d5c8b748242e(ptr %return, ptr @tuple.21c.loc22_28.6, ptr @tuple.21c.loc22_28.6), !dbg !13 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/index/array_element_access.carbon b/toolchain/lower/testdata/index/array_element_access.carbon index f3edec94a846..253ce0e9b025 100644 --- a/toolchain/lower/testdata/index/array_element_access.carbon +++ b/toolchain/lower/testdata/index/array_element_access.carbon @@ -23,7 +23,7 @@ fn Run() { // CHECK:STDOUT: ; ModuleID = 'array_element_access.carbon' // CHECK:STDOUT: source_filename = "array_element_access.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc12_37 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @tuple.21c.loc12_37 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: @array.loc14_40 = internal constant [2 x i32] [i32 1, i32 2] // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind @@ -31,7 +31,7 @@ fn Run() { // CHECK:STDOUT: entry: // CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %return, i32 0, i32 0, !dbg !7 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %return, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %return, ptr align 4 @tuple.loc12_37, i64 8, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %return, ptr align 4 @tuple.21c.loc12_37, i64 8, i1 false), !dbg !8 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/operators/assignment.carbon b/toolchain/lower/testdata/operators/assignment.carbon index eab7750f21ce..aa1b621fba13 100644 --- a/toolchain/lower/testdata/operators/assignment.carbon +++ b/toolchain/lower/testdata/operators/assignment.carbon @@ -20,7 +20,7 @@ fn Main() { // CHECK:STDOUT: ; ModuleID = 'assignment.carbon' // CHECK:STDOUT: source_filename = "assignment.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc17_5 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @tuple.21c.loc17_5 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CMain.Main() #0 !dbg !4 { @@ -33,7 +33,7 @@ fn Main() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %b.var), !dbg !8 // CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.loc17_5, i64 8, i1 false), !dbg !11 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.21c.loc17_5, i64 8, i1 false), !dbg !11 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/pointer/address_of_field.carbon b/toolchain/lower/testdata/pointer/address_of_field.carbon index 81330abbbad9..54bf3ed5d114 100644 --- a/toolchain/lower/testdata/pointer/address_of_field.carbon +++ b/toolchain/lower/testdata/pointer/address_of_field.carbon @@ -20,7 +20,7 @@ fn F() { // CHECK:STDOUT: ; ModuleID = 'address_of_field.carbon' // CHECK:STDOUT: source_filename = "address_of_field.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @struct.loc16_3 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @struct.ed5.loc16_3 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: declare void @_CG.Main(ptr) // CHECK:STDOUT: @@ -31,7 +31,7 @@ fn F() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %s.var), !dbg !7 // CHECK:STDOUT: %.loc16_46.3.a = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %.loc16_46.6.b = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %s.var, ptr align 4 @struct.loc16_3, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %s.var, ptr align 4 @struct.ed5.loc16_3, i64 8, i1 false), !dbg !7 // CHECK:STDOUT: %.loc17.b = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 1, !dbg !9 // CHECK:STDOUT: call void @_CG.Main(ptr %.loc17.b), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 diff --git a/toolchain/lower/testdata/struct/member_access.carbon b/toolchain/lower/testdata/struct/member_access.carbon index 18633c2679da..b45f1ea71cda 100644 --- a/toolchain/lower/testdata/struct/member_access.carbon +++ b/toolchain/lower/testdata/struct/member_access.carbon @@ -20,7 +20,7 @@ fn Run() -> i32 { // CHECK:STDOUT: ; ModuleID = 'member_access.carbon' // CHECK:STDOUT: source_filename = "member_access.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @struct.loc14_3 = internal constant { double, i32 } { double 0.000000e+00, i32 1 } +// CHECK:STDOUT: @struct.454.loc14_3 = internal constant { double, i32 } { double 0.000000e+00, i32 1 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @main() #0 !dbg !4 { @@ -31,7 +31,7 @@ fn Run() -> i32 { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %x.var), !dbg !7 // CHECK:STDOUT: %.loc14_48.3.a = getelementptr inbounds nuw { double, i32 }, ptr %x.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %.loc14_48.6.b = getelementptr inbounds nuw { double, i32 }, ptr %x.var, i32 0, i32 1, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %x.var, ptr align 8 @struct.loc14_3, i64 16, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %x.var, ptr align 8 @struct.454.loc14_3, i64 16, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %y.var), !dbg !8 // CHECK:STDOUT: %.loc15_17.1.b = getelementptr inbounds nuw { double, i32 }, ptr %x.var, i32 0, i32 1, !dbg !11 // CHECK:STDOUT: %.loc15_17.2 = load i32, ptr %.loc15_17.1.b, align 4, !dbg !11 diff --git a/toolchain/lower/testdata/struct/two_entries.carbon b/toolchain/lower/testdata/struct/two_entries.carbon index b9c54c5b94ea..782d4b51665b 100644 --- a/toolchain/lower/testdata/struct/two_entries.carbon +++ b/toolchain/lower/testdata/struct/two_entries.carbon @@ -19,7 +19,7 @@ fn Run() -> i32 { // CHECK:STDOUT: ; ModuleID = 'two_entries.carbon' // CHECK:STDOUT: source_filename = "two_entries.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @struct.loc14_3 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @struct.ed5.loc14_3 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @main() #0 !dbg !4 { @@ -29,7 +29,7 @@ fn Run() -> i32 { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %x.var), !dbg !7 // CHECK:STDOUT: %.loc14_46.3.a = getelementptr inbounds nuw { i32, i32 }, ptr %x.var, i32 0, i32 0, !dbg !9 // CHECK:STDOUT: %.loc14_46.6.b = getelementptr inbounds nuw { i32, i32 }, ptr %x.var, i32 0, i32 1, !dbg !9 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %x.var, ptr align 4 @struct.loc14_3, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %x.var, ptr align 4 @struct.ed5.loc14_3, i64 8, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %y.var), !dbg !8 // CHECK:STDOUT: %.loc15_31.1.a = getelementptr inbounds nuw { i32, i32 }, ptr %x.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %.loc15_31.2 = load i32, ptr %.loc15_31.1.a, align 4, !dbg !10 diff --git a/toolchain/lower/testdata/tuple/access/element_access.carbon b/toolchain/lower/testdata/tuple/access/element_access.carbon index ef6854a53b04..0c452236fe7b 100644 --- a/toolchain/lower/testdata/tuple/access/element_access.carbon +++ b/toolchain/lower/testdata/tuple/access/element_access.carbon @@ -20,7 +20,7 @@ fn Run() -> i32 { // CHECK:STDOUT: ; ModuleID = 'element_access.carbon' // CHECK:STDOUT: source_filename = "element_access.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc14_3 = internal constant { i32, i32, i32 } { i32 0, i32 1, i32 2 } +// CHECK:STDOUT: @tuple.d9f.loc14_3 = internal constant { i32, i32, i32 } { i32 0, i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @main() #0 !dbg !4 { @@ -32,7 +32,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %tuple.elem0.loc14.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 1, !dbg !10 // CHECK:STDOUT: %tuple.elem2.loc14.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 2, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @tuple.loc14_3, i64 12, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @tuple.d9f.loc14_3, i64 12, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %b.var), !dbg !8 // CHECK:STDOUT: %tuple.elem0.loc15.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 0, !dbg !11 // CHECK:STDOUT: %.loc15_17 = load i32, ptr %tuple.elem0.loc15.tuple.elem, align 4, !dbg !11 diff --git a/toolchain/lower/testdata/tuple/access/return_value_access.carbon b/toolchain/lower/testdata/tuple/access/return_value_access.carbon index ab444df0d3ff..261f8df23d19 100644 --- a/toolchain/lower/testdata/tuple/access/return_value_access.carbon +++ b/toolchain/lower/testdata/tuple/access/return_value_access.carbon @@ -19,14 +19,14 @@ fn Run() { // CHECK:STDOUT: ; ModuleID = 'return_value_access.carbon' // CHECK:STDOUT: source_filename = "return_value_access.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc13_39 = internal constant { i32, i32 } { i32 12, i32 24 } +// CHECK:STDOUT: @tuple.014.loc13_39 = internal constant { i32, i32 } { i32 12, i32 24 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CF.Main(ptr sret({ i32, i32 }) %return) #0 !dbg !4 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %return, i32 0, i32 0, !dbg !7 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %return, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %return, ptr align 4 @tuple.loc13_39, i64 8, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %return, ptr align 4 @tuple.014.loc13_39, i64 8, i1 false), !dbg !8 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/tuple/two_entries.carbon b/toolchain/lower/testdata/tuple/two_entries.carbon index 4b78e2d5e8cf..2bfb98c1370c 100644 --- a/toolchain/lower/testdata/tuple/two_entries.carbon +++ b/toolchain/lower/testdata/tuple/two_entries.carbon @@ -19,7 +19,7 @@ fn Run() -> i32 { // CHECK:STDOUT: ; ModuleID = 'two_entries.carbon' // CHECK:STDOUT: source_filename = "two_entries.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc14_3 = internal constant { i32, i32 } { i32 12, i32 7 } +// CHECK:STDOUT: @tuple.d1d.loc14_3 = internal constant { i32, i32 } { i32 12, i32 7 } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @main() #0 !dbg !4 { @@ -29,7 +29,7 @@ fn Run() -> i32 { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %x.var), !dbg !7 // CHECK:STDOUT: %tuple.elem0.loc14.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %x.var, i32 0, i32 0, !dbg !9 // CHECK:STDOUT: %tuple.elem1.loc14.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %x.var, i32 0, i32 1, !dbg !9 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %x.var, ptr align 4 @tuple.loc14_3, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %x.var, ptr align 4 @tuple.d1d.loc14_3, i64 8, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %y.var), !dbg !8 // CHECK:STDOUT: %tuple.elem0.loc15_23.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %x.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %.loc15_23.1 = load i32, ptr %tuple.elem0.loc15_23.1.tuple.elem, align 4, !dbg !10 diff --git a/toolchain/lower/testdata/var/global.carbon b/toolchain/lower/testdata/var/global.carbon index 8fc48ccb2f1a..30758901773c 100644 --- a/toolchain/lower/testdata/var/global.carbon +++ b/toolchain/lower/testdata/var/global.carbon @@ -129,7 +129,7 @@ var (_: i32, _: i32) = (3, 4); // CHECK:STDOUT: source_filename = "tuple_in_var.carbon" // CHECK:STDOUT: // CHECK:STDOUT: @_Cd.Main = global { i32, i32 } zeroinitializer -// CHECK:STDOUT: @tuple.loc4_1 = internal constant { i32, i32 } { i32 4, i32 5 } +// CHECK:STDOUT: @tuple.0a0.loc4_1 = internal constant { i32, i32 } { i32 4, i32 5 } // CHECK:STDOUT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @_C__global_init.Main, ptr null }] // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind @@ -147,7 +147,7 @@ var (_: i32, _: i32) = (3, 4); // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_C__global_init.Main() #0 !dbg !10 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 @_Cd.Main, ptr align 4 @tuple.loc4_1, i64 8, i1 false), !dbg !11 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 @_Cd.Main, ptr align 4 @tuple.0a0.loc4_1, i64 8, i1 false), !dbg !11 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/sem_ir/inst_namer.cpp b/toolchain/sem_ir/inst_namer.cpp index 22cf211693cf..fa4b1dd64903 100644 --- a/toolchain/sem_ir/inst_namer.cpp +++ b/toolchain/sem_ir/inst_namer.cpp @@ -1212,6 +1212,20 @@ auto InstNamer::NamingContext::NameInst() -> void { AddInstName("str"); return; } + case CARBON_KIND(StructType inst): { + const auto& fields = sem_ir().struct_type_fields().Get(inst.fields_id); + if (fields.empty()) { + AddInstName("empty_struct_type"); + return; + } + std::string name = "struct_type"; + for (auto field : fields) { + name += "."; + name += sem_ir().names().GetIRBaseName(field.name_id).str(); + } + AddInstName(std::move(name)); + return; + } case CARBON_KIND(StructValue inst): { if (auto fn_ty = sem_ir().types().TryGetAs(inst.type_id)) { AddEntityNameAndMaybePush(fn_ty->function_id); @@ -1239,20 +1253,6 @@ auto InstNamer::NamingContext::NameInst() -> void { } return; } - case CARBON_KIND(StructType inst): { - const auto& fields = sem_ir().struct_type_fields().Get(inst.fields_id); - if (fields.empty()) { - AddInstName("empty_struct_type"); - return; - } - std::string name = "struct_type"; - for (auto field : fields) { - name += "."; - name += sem_ir().names().GetIRBaseName(field.name_id).str(); - } - AddInstName(std::move(name)); - return; - } case CARBON_KIND(TupleAccess inst): { RawStringOstream out; out << "tuple.elem" << inst.index.index; diff --git a/toolchain/sem_ir/type_iterator.cpp b/toolchain/sem_ir/type_iterator.cpp index f38de7f145de..2e8d7b05ae74 100644 --- a/toolchain/sem_ir/type_iterator.cpp +++ b/toolchain/sem_ir/type_iterator.cpp @@ -79,6 +79,10 @@ auto TypeIterator::ProcessTypeId(TypeId type_id) -> std::optional { case CARBON_KIND(SemIR::SymbolicBindingType bind): { return Step::SymbolicBinding{.entity_name_id = bind.entity_name_id}; } + case CARBON_KIND(TupleAccess access): { + auto facet_type_id = sem_ir_->insts().Get(access.tuple_id).type_id(); + return Step::SymbolicType{.facet_type_id = facet_type_id}; + } // ==== Concrete types ==== diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index ff8f9d622e31..dcd29cf39142 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -1618,7 +1618,8 @@ struct StructLiteral { static constexpr auto Kind = InstKind::StructLiteral.Define< Parse::NodeIdOneOf>( - {.ir_name = "struct_literal", .constant_kind = InstConstantKind::Never}); + {.ir_name = "struct_literal", + .constant_kind = InstConstantKind::Indirect}); TypeId type_id; InstBlockId elements_id; @@ -1740,7 +1741,8 @@ struct TupleLiteral { static constexpr auto Kind = InstKind::TupleLiteral.Define< Parse::NodeIdOneOf>( - {.ir_name = "tuple_literal", .constant_kind = InstConstantKind::Never}); + {.ir_name = "tuple_literal", + .constant_kind = InstConstantKind::Indirect}); TypeId type_id; InstBlockId elements_id;