diff --git a/toolchain/check/class.cpp b/toolchain/check/class.cpp index f71a0a97b528..1c74cb2cab03 100644 --- a/toolchain/check/class.cpp +++ b/toolchain/check/class.cpp @@ -123,7 +123,7 @@ static auto AddStructTypeFields( SemIR::ElementIndex{static_cast(struct_type_fields.size())}; if (field_decl.type_id == SemIR::ErrorInst::TypeId) { struct_type_fields.push_back( - {.name_id = field_decl.name_id, + {.name_id = field.name_id, .type_inst_id = SemIR::ErrorInst::TypeInstId}); continue; } @@ -131,7 +131,7 @@ static auto AddStructTypeFields( context.sem_ir().types().GetAs( field_decl.type_id); struct_type_fields.push_back( - {.name_id = field_decl.name_id, + {.name_id = field.name_id, .type_inst_id = unbound_element_type.element_type_inst_id}); } auto fields_id = diff --git a/toolchain/check/cpp/constant.cpp b/toolchain/check/cpp/constant.cpp index 519c2d43f129..409b1ef82852 100644 --- a/toolchain/check/cpp/constant.cpp +++ b/toolchain/check/cpp/constant.cpp @@ -79,10 +79,10 @@ static auto MapLValueToConstant(Context& context, SemIR::LocId loc_id, const SemIR::FieldDecl& field_decl_inst = context.insts().GetAs(field_inst_id); + const auto& field = context.fields().Get(field_decl_inst.field_id); qual_type = field_decl->getType(); - inst_id = PerformMemberAccess(context, loc_id, inst_id, - field_decl_inst.name_id); + inst_id = PerformMemberAccess(context, loc_id, inst_id, field.name_id); } } diff --git a/toolchain/check/cpp/export.cpp b/toolchain/check/cpp/export.cpp index 5bc9a68b901a..3d9b228c726a 100644 --- a/toolchain/check/cpp/export.cpp +++ b/toolchain/check/cpp/export.cpp @@ -502,9 +502,10 @@ static auto CreateCppFieldDecl(Context& context, } // Get the field's C++ identifier. - auto* identifier_info = GetClangIdentifierInfo(context, field_decl.name_id); + const auto& field = context.fields().Get(field_decl.field_id); + auto* identifier_info = GetClangIdentifierInfo(context, field.name_id); CARBON_CHECK(identifier_info, "field with non-identifier name {0}", - field_decl.name_id); + field.name_id); // Create the `clang::FieldDecl`. auto* cpp_field_decl = clang::FieldDecl::Create( @@ -514,7 +515,7 @@ static auto CreateCppFieldDecl(Context& context, /*Mutable=*/true, clang::ICIS_NoInit); cpp_field_decl->setInvalidDecl(invalid); - SetCppClassMemberAccess(class_scope, field_decl.name_id, cpp_field_decl); + SetCppClassMemberAccess(class_scope, field.name_id, cpp_field_decl); record_decl->addHiddenDecl(cpp_field_decl); diff --git a/toolchain/check/cpp/import.cpp b/toolchain/check/cpp/import.cpp index 5d1c8eeea577..bfe044286421 100644 --- a/toolchain/check/cpp/import.cpp +++ b/toolchain/check/cpp/import.cpp @@ -811,8 +811,16 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id, } auto field_name_id = AddIdentifierName(context, field->getName()); + + BeginExprRegionForPattern(context); + auto [field_type_inst_id, field_type_id] = ImportCppType(context, import_ir_inst_id, field->getType()); + + SemIR::ExprRegionId type_region_id = + ConsumeExprRegionForPattern(context, field_type_inst_id); + EndEmptyExprRegionForPattern(context); + if (!field_type_inst_id.has_value()) { // TODO: For now, just skip over fields whose types we can't map. continue; @@ -822,6 +830,7 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id, // TODO: Consider doing this lazily instead. auto field_id = context.fields().Add({.index = SemIR::ElementIndex(fields.size()), + .name_id = field_name_id, // TODO: import initializers. .initializer_id = SemIR::InstId::None}); auto field_decl_id = AddInst( @@ -830,8 +839,9 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id, SemIR::FieldDecl{ .type_id = GetUnboundElementType( context, class_type_inst_id, field_type_inst_id), - .name_id = field_name_id, .field_id = field_id, + .type_region_id = type_region_id + })); // The imported SemIR::FieldDecl represents the original declaration `decl`, // which is either the field or the indirect field declaration. diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index ef99f8eaa885..60d9aa15089c 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -180,6 +180,9 @@ class ImportContext { auto import_entity_names() -> const SemIR::EntityNameStore& { return import_ir().entity_names(); } + auto import_expr_regions() -> const SemIR::ExprRegionStore& { + return import_ir().expr_regions(); + } auto import_facet_types() -> const SemIR::DeclaredFacetTypeStore& { return import_ir().declared_facet_types(); } @@ -265,6 +268,9 @@ class ImportContext { auto local_entity_names() -> SemIR::EntityNameStore& { return local_ir().entity_names(); } + auto local_expr_regions() -> SemIR::ExprRegionStore& { + return local_ir().expr_regions(); + } auto local_facet_types() -> SemIR::DeclaredFacetTypeStore& { return local_ir().declared_facet_types(); } @@ -2303,6 +2309,11 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::FieldDecl inst, SemIR::InstId import_inst_id) -> ResolveResult { + auto import_expr_region = + resolver.import_expr_regions().Get(inst.type_region_id); + SemIR::ExprRegion expr_region{ + .result_id = AddImportRef(resolver, import_expr_region.result_id)}; + auto const_id = GetLocalConstantId(resolver, inst.type_id); const auto& import_field = resolver.import_ir().fields().Get(inst.field_id); auto initializer_id = @@ -2311,13 +2322,20 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, return ResolveResult::Retry(); } + auto type_region_id = resolver.local_expr_regions().Add(expr_region); + auto field_id = resolver.local_ir().fields().Add( - {.index = import_field.index, .initializer_id = initializer_id}); + {.index = import_field.index, + .name_id = GetLocalNameId(resolver, import_field.name_id), + .initializer_id = initializer_id}); return ResolveResult::Unique( resolver, import_inst_id, - {.type_id = resolver.local_types().GetTypeIdForTypeConstantId(const_id), - .name_id = GetLocalNameId(resolver, inst.name_id), - .field_id = field_id}); + { + .type_id = + resolver.local_types().GetTypeIdForTypeConstantId(const_id), + .field_id = field_id, + .type_region_id = type_region_id, + }); } static auto TryResolveTypedInst(ImportRefResolver& resolver, diff --git a/toolchain/check/pattern.cpp b/toolchain/check/pattern.cpp index ae638a3b249a..4b41437e7eba 100644 --- a/toolchain/check/pattern.cpp +++ b/toolchain/check/pattern.cpp @@ -126,33 +126,6 @@ auto AddBindingForPattern(Context& context, SemIR::LocId name_loc, pattern.kind); } - // Handle non-static `var` decls in a class by creating a `FieldDecl`. - if (InNonStaticFieldDecl(context)) { - auto class_decl = - context.scope_stack().TryGetCurrentScopeAs(); - auto name_id = context.entity_names().Get(pattern.entity_name_id).name_id; - auto& class_info = context.classes().Get(class_decl->class_id); - auto field_type_id = GetUnboundElementType( - context, context.types().GetTypeInstId(class_info.self_type_id), - context.types().GetTypeInstId(binding_type_id)); - - if (name_id == SemIR::NameId::Underscore) { - CARBON_DIAGNOSTIC(FieldNamedUnderscore, Error, - "expected identifier in field declaration"); - context.emitter().Emit(name_loc, FieldNamedUnderscore); - } - - auto field_id = - context.fields().Add({.index = SemIR::ElementIndex::None, - .initializer_id = SemIR::InstId::None}); - auto field_decl_id = AddInst( - context, name_loc, - {.type_id = field_type_id, .name_id = name_id, .field_id = field_id}); - context.field_decls_stack().AppendToTop(field_decl_id); - - return field_decl_id; - } - auto bind_id = AddInstInNoBlock( context, SemIR::LocIdAndInst::RuntimeVerified( context.sem_ir(), name_loc, @@ -172,6 +145,38 @@ auto AddBindingPattern(Context& context, SemIR::LocId name_loc, SemIR::ExprRegionId type_region_id, SemIR::TypeId scrutinee_type_id, SemIR::AnyBindingPattern pattern) -> BindingPatternInfo { + // Handle non-static `var` decls in a class by creating a `FieldDecl`. + if (InNonStaticFieldDecl(context)) { + auto class_decl = + context.scope_stack().TryGetCurrentScopeAs(); + auto name_id = context.entity_names().Get(pattern.entity_name_id).name_id; + auto& class_info = context.classes().Get(class_decl->class_id); + auto field_type_id = GetUnboundElementType( + context, context.types().GetTypeInstId(class_info.self_type_id), + context.types().GetTypeInstId(scrutinee_type_id)); + + if (name_id == SemIR::NameId::Underscore) { + CARBON_DIAGNOSTIC(FieldNamedUnderscore, Error, + "expected identifier in field declaration"); + context.emitter().Emit(name_loc, FieldNamedUnderscore); + } + + auto field_id = + context.fields().Add({.index = SemIR::ElementIndex::None, + .name_id = name_id, + .initializer_id = SemIR::InstId::None}); + auto field_decl_id = + AddInst(context, name_loc, + { + .type_id = field_type_id, + .field_id = field_id, + .type_region_id = type_region_id, + }); + context.field_decls_stack().AppendToTop(field_decl_id); + + return {.pattern_id = field_decl_id, .bind_id = field_decl_id}; + } + auto binding_pattern_id = AddInst(context, SemIR::LocIdAndInst::RuntimeVerified(context.sem_ir(), name_loc, pattern)); diff --git a/toolchain/check/testdata/alias/import_order.carbon b/toolchain/check/testdata/alias/import_order.carbon index b870f639301a..f25605ea2c9b 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,13 +64,16 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc4: %C.elem = field_decl v, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl v, element0, %.loc4_19.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.v [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .v = %.loc4 +// CHECK:STDOUT: .v = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -109,8 +113,9 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %Main.d: type = import_ref Main//a, d, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.146: = import_ref Main//a, loc4_22, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.0c6: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.a44] -// CHECK:STDOUT: %.a44: %C.elem = field_decl v, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.3e4: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %field_decl] +// CHECK:STDOUT: %Main.import_ref.5f5 = import_ref Main//a, loc4_19, unloaded +// CHECK:STDOUT: %field_decl: %C.elem = field_decl v, element0, %Main.import_ref.5f5 in [concrete] {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -161,7 +166,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .v = imports.%Main.import_ref.0c6 +// CHECK:STDOUT: .v = imports.%Main.import_ref.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -176,7 +181,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_24.1, %.loc7_24.5 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%d_val.var, %.loc7_1 // 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.0c6 [concrete = imports.%.a44] +// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.3e4 [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 [concrete = constants.%.4c6] // CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) [concrete = constants.%struct.898] // CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete = constants.%.f57] @@ -187,7 +192,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_29.1, %.loc8_29.5 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c_val.var, %.loc8_1 // 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.0c6 [concrete = imports.%.a44] +// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.3e4 [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 [concrete = constants.%.f57] // CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) [concrete = constants.%struct.2ea] // CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete = constants.%.db9] @@ -198,7 +203,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc9_1: init %C = converted %.loc9_29.1, %.loc9_29.5 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%b_val.var, %.loc9_1 // 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.0c6 [concrete = imports.%.a44] +// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.3e4 [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 [concrete = constants.%.db9] // CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) [concrete = constants.%struct.da5] // CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete = constants.%.5b1] diff --git a/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon b/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon index 703f76bf609a..99999e03182b 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon @@ -78,10 +78,10 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: function50000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block50000007, call_params_id: inst_block50000008, body: [inst_block5000000B]} // CHECK:STDOUT: function50000001: {name: name3, parent_scope: name_scope50000001, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, cpp_thunk_decl: inst50000032} // CHECK:STDOUT: function50000002: {name: name6, parent_scope: name_scope50000001, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, cpp_thunk_callee: inst5000002F} -// CHECK:STDOUT: function50000003: {name: name3, parent_scope: name_scope50000001, call_param_patterns_id: inst_block5000000F, call_params_id: inst_block50000010, cpp_thunk_decl: inst50000047} -// CHECK:STDOUT: function50000004: {name: name6, parent_scope: name_scope50000001, call_param_patterns_id: inst_block50000015, call_params_id: inst_block50000016, cpp_thunk_callee: inst5000003D} +// CHECK:STDOUT: function50000003: {name: name3, parent_scope: name_scope50000001, call_param_patterns_id: inst_block50000010, call_params_id: inst_block50000011, cpp_thunk_decl: inst50000047} +// CHECK:STDOUT: function50000004: {name: name6, parent_scope: name_scope50000001, call_param_patterns_id: inst_block50000016, call_params_id: inst_block50000017, cpp_thunk_callee: inst5000003D} // CHECK:STDOUT: classes: -// CHECK:STDOUT: class50000000: {name: name2, parent_scope: name_scope50000001, self_type_id: type(inst50000014), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope50000002, body_block_id: inst_block5000000C, adapt_id: inst, base_id: inst, complete_type_witness_id: inst50000027, vtable_decl_id: inst}} +// CHECK:STDOUT: class50000000: {name: name2, parent_scope: name_scope50000001, self_type_id: type(inst50000014), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope50000002, body_block_id: inst_block5000000D, adapt_id: inst, base_id: inst, complete_type_witness_id: inst50000027, vtable_decl_id: inst}} // CHECK:STDOUT: interfaces: {} // CHECK:STDOUT: associated_constants: {} // CHECK:STDOUT: impls: {} @@ -218,7 +218,7 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: inst50000021: {kind: StructValue, arg0: inst_block_empty, type: type(inst5000001F)} // CHECK:STDOUT: inst50000022: {kind: PointerType, arg0: inst50000014, type: type(TypeType)} // CHECK:STDOUT: inst50000023: {kind: UnboundElementType, arg0: inst50000014, arg1: inst50000022, type: type(TypeType)} -// CHECK:STDOUT: inst50000024: {kind: FieldDecl, arg0: name5, arg1: field50000000, type: type(inst50000023)} +// CHECK:STDOUT: inst50000024: {kind: FieldDecl, arg0: field50000000, arg1: region50000001, type: type(inst50000023)} // CHECK:STDOUT: inst50000025: {kind: CustomLayoutType, arg0: struct_type_fields50000001, arg1: custom_layout50000001, type: type(TypeType)} // CHECK:STDOUT: inst50000026: {kind: CustomLayoutType, arg0: struct_type_fields50000002, arg1: custom_layout50000001, type: type(TypeType)} // CHECK:STDOUT: inst50000027: {kind: CompleteTypeWitness, arg0: inst50000025, type: type(inst(WitnessType))} @@ -243,7 +243,7 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: inst5000003A: {kind: WrapperBindingPattern, arg0: entity_name50000001, arg1: inst50000039, type: type(inst50000016)} // CHECK:STDOUT: inst5000003B: {kind: WrapperBinding, arg0: entity_name50000001, arg1: inst5000003C, type: type(inst50000014)} // CHECK:STDOUT: inst5000003C: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst50000014)} -// CHECK:STDOUT: inst5000003D: {kind: FunctionDecl, arg0: function50000003, arg1: inst_block50000012, type: type(inst5000003E)} +// CHECK:STDOUT: inst5000003D: {kind: FunctionDecl, arg0: function50000003, arg1: inst_block50000013, type: type(inst5000003E)} // CHECK:STDOUT: inst5000003E: {kind: FunctionType, arg0: function50000003, arg1: specific, type: type(TypeType)} // CHECK:STDOUT: inst5000003F: {kind: StructValue, arg0: inst_block_empty, type: type(inst5000003E)} // CHECK:STDOUT: inst50000040: {kind: PatternType, arg0: inst50000022, type: type(TypeType)} @@ -253,12 +253,12 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: inst50000044: {kind: WrapperBindingPattern, arg0: entity_name50000000, arg1: inst50000042, type: type(inst50000040)} // CHECK:STDOUT: inst50000045: {kind: WrapperBinding, arg0: entity_name50000002, arg1: inst50000046, type: type(inst50000022)} // CHECK:STDOUT: inst50000046: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst50000022)} -// CHECK:STDOUT: inst50000047: {kind: FunctionDecl, arg0: function50000004, arg1: inst_block50000018, type: type(inst50000048)} +// CHECK:STDOUT: inst50000047: {kind: FunctionDecl, arg0: function50000004, arg1: inst_block50000019, type: type(inst50000048)} // CHECK:STDOUT: inst50000048: {kind: FunctionType, arg0: function50000004, arg1: specific, type: type(TypeType)} // CHECK:STDOUT: inst50000049: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000048)} // CHECK:STDOUT: inst5000004A: {kind: ValueAsRef, arg0: inst50000038, type: type(inst50000014)} // CHECK:STDOUT: inst5000004B: {kind: AddrOf, arg0: inst5000004A, type: type(inst50000022)} -// CHECK:STDOUT: inst5000004C: {kind: Call, arg0: inst50000047, arg1: inst_block5000001A, type: type(inst50000020)} +// CHECK:STDOUT: inst5000004C: {kind: Call, arg0: inst50000047, arg1: inst_block5000001B, type: type(inst50000020)} // CHECK:STDOUT: inst5000004D: {kind: NameRef, arg0: name(Cpp), arg1: inst50000011, type: type(inst(NamespaceType))} // CHECK:STDOUT: inst5000004E: {kind: NameRef, arg0: name3, arg1: inst5000002C, type: type(inst5000002B)} // CHECK:STDOUT: inst5000004F: {kind: NameRef, arg0: name(Cpp), arg1: inst50000011, type: type(inst(NamespaceType))} @@ -273,7 +273,7 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: inst50000058: {kind: AcquireValue, arg0: inst50000057, type: type(inst50000014)} // CHECK:STDOUT: inst50000059: {kind: ValueAsRef, arg0: inst50000058, type: type(inst50000014)} // CHECK:STDOUT: inst5000005A: {kind: AddrOf, arg0: inst50000059, type: type(inst50000022)} -// CHECK:STDOUT: inst5000005B: {kind: Call, arg0: inst50000047, arg1: inst_block5000001C, type: type(inst50000020)} +// CHECK:STDOUT: inst5000005B: {kind: Call, arg0: inst50000047, arg1: inst_block5000001D, type: type(inst50000020)} // CHECK:STDOUT: inst5000005C: {kind: Return} // CHECK:STDOUT: bundles: {} // CHECK:STDOUT: constant_values: @@ -407,45 +407,46 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: 17: inst5000005A // CHECK:STDOUT: 18: inst5000005B // CHECK:STDOUT: 19: inst5000005C -// CHECK:STDOUT: inst_block5000000C: +// CHECK:STDOUT: inst_block5000000C: {} +// CHECK:STDOUT: inst_block5000000D: // CHECK:STDOUT: 0: inst50000024 // CHECK:STDOUT: 1: inst50000025 // CHECK:STDOUT: 2: inst50000027 -// CHECK:STDOUT: inst_block5000000D: {} -// CHECK:STDOUT: inst_block5000000E: -// CHECK:STDOUT: 0: inst5000003A +// CHECK:STDOUT: inst_block5000000E: {} // CHECK:STDOUT: inst_block5000000F: -// CHECK:STDOUT: 0: inst50000039 +// CHECK:STDOUT: 0: inst5000003A // CHECK:STDOUT: inst_block50000010: -// CHECK:STDOUT: 0: inst5000003C +// CHECK:STDOUT: 0: inst50000039 // CHECK:STDOUT: inst_block50000011: +// CHECK:STDOUT: 0: inst5000003C +// CHECK:STDOUT: inst_block50000012: // CHECK:STDOUT: 0: inst50000039 // CHECK:STDOUT: 1: inst5000003A -// CHECK:STDOUT: inst_block50000012: +// CHECK:STDOUT: inst_block50000013: // CHECK:STDOUT: 0: inst5000003C // CHECK:STDOUT: 1: inst5000003B -// CHECK:STDOUT: inst_block50000013: {} -// CHECK:STDOUT: inst_block50000014: -// CHECK:STDOUT: 0: inst50000043 +// CHECK:STDOUT: inst_block50000014: {} // CHECK:STDOUT: inst_block50000015: -// CHECK:STDOUT: 0: inst50000041 +// CHECK:STDOUT: 0: inst50000043 // CHECK:STDOUT: inst_block50000016: -// CHECK:STDOUT: 0: inst50000046 +// CHECK:STDOUT: 0: inst50000041 // CHECK:STDOUT: inst_block50000017: +// CHECK:STDOUT: 0: inst50000046 +// CHECK:STDOUT: inst_block50000018: // CHECK:STDOUT: 0: inst50000041 // CHECK:STDOUT: 1: inst50000043 -// CHECK:STDOUT: inst_block50000018: +// CHECK:STDOUT: inst_block50000019: // CHECK:STDOUT: 0: inst50000046 // CHECK:STDOUT: 1: inst50000045 -// CHECK:STDOUT: inst_block50000019: -// CHECK:STDOUT: 0: inst50000038 // CHECK:STDOUT: inst_block5000001A: -// CHECK:STDOUT: 0: inst5000004B +// CHECK:STDOUT: 0: inst50000038 // CHECK:STDOUT: inst_block5000001B: -// CHECK:STDOUT: 0: inst50000058 +// CHECK:STDOUT: 0: inst5000004B // CHECK:STDOUT: inst_block5000001C: -// CHECK:STDOUT: 0: inst5000005A +// CHECK:STDOUT: 0: inst50000058 // CHECK:STDOUT: inst_block5000001D: +// CHECK:STDOUT: 0: inst5000005A +// CHECK:STDOUT: inst_block5000001E: // CHECK:STDOUT: 0: instF // CHECK:STDOUT: 1: inst50000010 // CHECK:STDOUT: 2: inst5000001E diff --git a/toolchain/check/testdata/class/abstract/abstract.carbon b/toolchain/check/testdata/class/abstract/abstract.carbon index bc300689ae8f..07feff28e1bb 100644 --- a/toolchain/check/testdata/class/abstract/abstract.carbon +++ b/toolchain/check/testdata/class/abstract/abstract.carbon @@ -275,14 +275,16 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Contains { -// CHECK:STDOUT: %.loc14: = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: = field_decl a, element0, %Abstract.ref in [concrete] { +// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness [concrete = ] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Contains // CHECK:STDOUT: .Abstract = -// CHECK:STDOUT: .a = %.loc14 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_var.carbon @@ -624,7 +626,10 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %.loc7: %Derived.elem.ce6 = base_decl %Abstract.ref, element0 [concrete] -// CHECK:STDOUT: %.loc9: %Derived.elem.1ef = field_decl d, element1 [concrete] +// CHECK:STDOUT: %field_decl: %Derived.elem.1ef = field_decl d, element1, %.loc9_11.2 in [concrete] { +// CHECK:STDOUT: %.loc9_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct.a40] +// CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.008 [concrete = constants.%complete_type.3c7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -632,7 +637,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Abstract = // CHECK:STDOUT: .base = %.loc7 -// CHECK:STDOUT: .d = %.loc9 +// CHECK:STDOUT: .d = %field_decl // CHECK:STDOUT: extend %Abstract.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -662,6 +667,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem.ce6: type = unbound_element_type %Derived, %Abstract [concrete] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Derived.elem.1ef: 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.3c7: = complete_type_witness %struct_type.base.d [concrete] @@ -719,7 +725,10 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %.loc7: %Derived.elem.ce6 = base_decl %Abstract.ref, element0 [concrete] -// CHECK:STDOUT: %.loc9: %Derived.elem.1ef = field_decl d, element1 [concrete] +// CHECK:STDOUT: %field_decl: %Derived.elem.1ef = field_decl d, element1, %.loc9_11.2 in [concrete] { +// CHECK:STDOUT: %.loc9_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d [concrete = constants.%complete_type.3c7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -727,7 +736,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Abstract = // CHECK:STDOUT: .base = %.loc7 -// CHECK:STDOUT: .d = %.loc9 +// CHECK:STDOUT: .d = %field_decl // CHECK:STDOUT: extend %Abstract.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -754,7 +763,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: %complete_type.3c7: = complete_type_witness %struct_type.base.d.008 [concrete] // CHECK:STDOUT: %pattern_type.746: type = pattern_type %Derived [concrete] // CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete] -// CHECK:STDOUT: %d.patt.2df: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete] +// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete] // CHECK:STDOUT: %.469: Core.Form = init_form %empty_struct_type [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %empty_struct_type [concrete] @@ -784,7 +793,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: %AccessViaBase.decl: %AccessViaBase.type = fn_decl @AccessViaBase [concrete = constants.%AccessViaBase] { // CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt] -// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df] +// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete = constants.%return.param_patt] // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc13_34.2 [concrete = constants.%return.patt] // CHECK:STDOUT: } { @@ -799,7 +808,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: } // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [concrete = constants.%Access] { // CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt] -// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df] +// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete = constants.%return.param_patt] // CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc17_27.2 [concrete = constants.%return.patt] // CHECK:STDOUT: } { @@ -815,19 +824,25 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { -// CHECK:STDOUT: %.loc4: %Abstract.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Abstract.elem = field_decl a, element0, %.loc4_11.2 in [concrete] { +// CHECK:STDOUT: %.loc4_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc4_11.2: type = converted %.loc4_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.225 [concrete = constants.%complete_type.8c6] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract -// CHECK:STDOUT: .a = %.loc4 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %.loc8: %Derived.elem.ce6 = base_decl %Abstract.ref, element0 [concrete] -// CHECK:STDOUT: %.loc10: %Derived.elem.1ef = field_decl d, element1 [concrete] +// CHECK:STDOUT: %field_decl: %Derived.elem.1ef = field_decl d, element1, %.loc10_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.008 [concrete = constants.%complete_type.3c7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -835,7 +850,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Abstract = // CHECK:STDOUT: .base = %.loc8 -// CHECK:STDOUT: .d = %.loc10 +// CHECK:STDOUT: .d = %field_decl // CHECK:STDOUT: .a = // CHECK:STDOUT: extend %Abstract.ref // CHECK:STDOUT: } @@ -846,7 +861,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: %base.ref: %Derived.elem.ce6 = name_ref base, @Derived.%.loc8 [concrete = @Derived.%.loc8] // CHECK:STDOUT: %.loc14_11.1: ref %Abstract = class_element_access %d.ref, element0 // CHECK:STDOUT: %.loc14_11.2: %Abstract = acquire_value %.loc14_11.1 -// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%.loc4 [concrete = @Abstract.%.loc4] +// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%field_decl [concrete = @Abstract.%field_decl] // CHECK:STDOUT: %.loc14_16.1: ref %empty_struct_type = class_element_access %.loc14_11.2, element0 // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_16.2: %empty_struct_type = converted %.loc14_16.1, %empty_struct [concrete = constants.%empty_struct] @@ -858,7 +873,7 @@ fn Assign(ref a: Abstract) { // CHECK:STDOUT: fn @Access(%d.param: %Derived) -> out %return.param: %empty_struct_type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%.loc4 [concrete = @Abstract.%.loc4] +// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%field_decl [concrete = @Abstract.%field_decl] // CHECK:STDOUT: %.loc18_11.1: %Abstract = as_compatible %d.ref // CHECK:STDOUT: %.loc18_11.2: ref %Abstract = class_element_access %.loc18_11.1, element0 // CHECK:STDOUT: %.loc18_11.3: ref %Abstract = converted %d.ref, %.loc18_11.2 diff --git a/toolchain/check/testdata/class/abstract/fail_abstract_in_struct.carbon b/toolchain/check/testdata/class/abstract/fail_abstract_in_struct.carbon index 540d077bbae2..6f044b2d1af8 100644 --- a/toolchain/check/testdata/class/abstract/fail_abstract_in_struct.carbon +++ b/toolchain/check/testdata/class/abstract/fail_abstract_in_struct.carbon @@ -122,6 +122,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: %Contains: type = class_type @Contains [concrete] +// CHECK:STDOUT: %struct_type.m1.868: type = struct_type {.m1: %Abstract1} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -142,14 +143,17 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Contains { -// CHECK:STDOUT: %.loc13: = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: = field_decl a, element0, %struct_type.m1 in [concrete] { +// CHECK:STDOUT: %Abstract1.ref: type = name_ref Abstract1, file.%Abstract1.decl [concrete = constants.%Abstract1] +// CHECK:STDOUT: %struct_type.m1: type = struct_type {.m1: %Abstract1} [concrete = constants.%struct_type.m1.868] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness [concrete = ] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Contains // CHECK:STDOUT: .Abstract1 = -// CHECK:STDOUT: .a = %.loc13 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_var.carbon diff --git a/toolchain/check/testdata/class/abstract/fail_abstract_in_tuple.carbon b/toolchain/check/testdata/class/abstract/fail_abstract_in_tuple.carbon index 070914f862b7..ae98d53e1ef0 100644 --- a/toolchain/check/testdata/class/abstract/fail_abstract_in_tuple.carbon +++ b/toolchain/check/testdata/class/abstract/fail_abstract_in_tuple.carbon @@ -132,6 +132,9 @@ fn Var5() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // 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.b06: type = tuple_type (%Abstract1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -161,14 +164,18 @@ fn Var5() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Contains { -// CHECK:STDOUT: %.loc13: = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: = field_decl a, element0, %.loc13_21.2 in [concrete] { +// 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) [concrete = constants.%tuple] +// CHECK:STDOUT: %.loc13_21.2: type = converted %.loc13_21.1, constants.%tuple.type.b06 [concrete = constants.%tuple.type.b06] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness [concrete = ] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Contains // CHECK:STDOUT: .Abstract1 = -// CHECK:STDOUT: .a = %.loc13 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_var.carbon diff --git a/toolchain/check/testdata/class/access/access_modifiers.carbon b/toolchain/check/testdata/class/access/access_modifiers.carbon index eda3ddbcb64e..f14467435bc3 100644 --- a/toolchain/check/testdata/class/access/access_modifiers.carbon +++ b/toolchain/check/testdata/class/access/access_modifiers.carbon @@ -192,7 +192,7 @@ class A { // CHECK:STDOUT: %struct: %struct_type.radius.f47 = struct_value (%int_5.64b) [concrete] // CHECK:STDOUT: %Circle.val: %Circle = struct_value (%int_5.eef) [concrete] // CHECK:STDOUT: %circle.patt: %pattern_type.f70 = value_binding_pattern circle [concrete] -// CHECK:STDOUT: %radius.patt.a1f: %pattern_type.6b6 = value_binding_pattern radius [concrete] +// CHECK:STDOUT: %radius.patt: %pattern_type.6b6 = value_binding_pattern radius [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc20_36.4 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.4: %Destroy.Op.type.1d8f74.4 = struct_value () [concrete] // CHECK:STDOUT: } @@ -208,7 +208,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Circle -// CHECK:STDOUT: .radius [private] = %.loc4 +// CHECK:STDOUT: .radius [private] = %field_decl // CHECK:STDOUT: .SOME_INTERNAL_CONSTANT [private] = %SOME_INTERNAL_CONSTANT // CHECK:STDOUT: .SomeInternalFunction [private] = %Circle.SomeInternalFunction.decl // CHECK:STDOUT: .Make = %Circle.Make.decl @@ -249,7 +249,7 @@ class A { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %radius: %i32 = wrapper_binding radius, [concrete = ] // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %radius.patt: %pattern_type.6b6 = value_binding_pattern radius [concrete = constants.%radius.patt.a1f] +// CHECK:STDOUT: %radius.patt: %pattern_type.6b6 = value_binding_pattern radius [concrete = constants.%radius.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %circle.ref.loc36: %Circle = name_ref circle, %circle // CHECK:STDOUT: %radius.ref.loc36: = name_ref radius, [concrete = ] @@ -288,7 +288,7 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.939: %pattern_type.6b6 = value_binding_pattern x [concrete] +// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = value_binding_pattern x [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -298,7 +298,7 @@ class A { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %x: %i32 = wrapper_binding x, [concrete = ] // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = value_binding_pattern x [concrete = constants.%x.patt.939] +// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = value_binding_pattern x [concrete = constants.%x.patt] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -336,7 +336,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Circle -// CHECK:STDOUT: .radius [private] = %.loc4 +// CHECK:STDOUT: .radius [private] = %field_decl // CHECK:STDOUT: .GetRadius = %Circle.GetRadius.decl // CHECK:STDOUT: .SomeInternalFunction [private] = %Circle.SomeInternalFunction.decl // CHECK:STDOUT: .Compute = %Circle.Compute.decl @@ -345,7 +345,7 @@ class A { // CHECK:STDOUT: fn @Circle.GetRadius(%self.param: %Circle) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Circle = name_ref self, %self -// CHECK:STDOUT: %radius.ref: %Circle.elem = name_ref radius, @Circle.%.loc4 [concrete = @Circle.%.loc4] +// CHECK:STDOUT: %radius.ref: %Circle.elem = name_ref radius, @Circle.%field_decl [concrete = @Circle.%field_decl] // CHECK:STDOUT: %.loc8_16.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc8_16.2: %i32 = acquire_value %.loc8_16.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/access/inheritance_access.carbon b/toolchain/check/testdata/class/access/inheritance_access.carbon index 7981681fc9c8..9b99057c364e 100644 --- a/toolchain/check/testdata/class/access/inheritance_access.carbon +++ b/toolchain/check/testdata/class/access/inheritance_access.carbon @@ -349,15 +349,19 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Shape { -// CHECK:STDOUT: %.loc5: %Shape.elem = field_decl x, element0 [concrete] -// CHECK:STDOUT: %.loc6: %Shape.elem = field_decl y, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5: %Shape.elem = field_decl x, element0, %i32.loc5 in [concrete] { +// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc6: %Shape.elem = field_decl y, element1, %i32.loc6 in [concrete] { +// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x.y [concrete = constants.%complete_type.292] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Shape -// CHECK:STDOUT: .x [protected] = %.loc5 -// CHECK:STDOUT: .y [protected] = %.loc6 +// CHECK:STDOUT: .x [protected] = %field_decl.loc5 +// CHECK:STDOUT: .y [protected] = %field_decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Circle { @@ -396,13 +400,13 @@ class B { // CHECK:STDOUT: fn @Circle.GetPosition(%self.param: %Circle) -> out %return.param: %tuple.type.e55 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc13_13: %Circle = name_ref self, %self -// CHECK:STDOUT: %x.ref: %Shape.elem = name_ref x, @Shape.%.loc5 [concrete = @Shape.%.loc5] +// CHECK:STDOUT: %x.ref: %Shape.elem = name_ref x, @Shape.%field_decl.loc5 [concrete = @Shape.%field_decl.loc5] // CHECK:STDOUT: %.loc13_17.1: %Shape = as_compatible %self.ref.loc13_13 // CHECK:STDOUT: %.loc13_17.2: ref %Shape = class_element_access %.loc13_17.1, element0 // CHECK:STDOUT: %.loc13_17.3: ref %Shape = converted %self.ref.loc13_13, %.loc13_17.2 // CHECK:STDOUT: %.loc13_17.4: ref %i32 = class_element_access %.loc13_17.3, element0 // CHECK:STDOUT: %self.ref.loc13_21: %Circle = name_ref self, %self -// CHECK:STDOUT: %y.ref: %Shape.elem = name_ref y, @Shape.%.loc6 [concrete = @Shape.%.loc6] +// CHECK:STDOUT: %y.ref: %Shape.elem = name_ref y, @Shape.%field_decl.loc6 [concrete = @Shape.%field_decl.loc6] // CHECK:STDOUT: %.loc13_25.1: %Shape = as_compatible %self.ref.loc13_21 // CHECK:STDOUT: %.loc13_25.2: ref %Shape = class_element_access %.loc13_25.1, element0 // CHECK:STDOUT: %.loc13_25.3: ref %Shape = converted %self.ref.loc13_21, %.loc13_25.2 @@ -793,13 +797,15 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Shape { -// CHECK:STDOUT: %.loc5: %Shape.elem = field_decl y, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Shape.elem = field_decl y, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.620] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Shape -// CHECK:STDOUT: .y [private] = %.loc5 +// CHECK:STDOUT: .y [private] = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Square { @@ -1407,7 +1413,9 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %.loc14: %B.elem = field_decl internal, element0 [concrete] +// CHECK:STDOUT: %field_decl: %B.elem = field_decl internal, element0, %Internal.ref in [concrete] { +// CHECK:STDOUT: %Internal.ref: type = name_ref Internal, file.%Internal.decl [concrete = constants.%Internal] +// CHECK:STDOUT: } // CHECK:STDOUT: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.G] { // CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a] // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] @@ -1437,7 +1445,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .Internal = -// CHECK:STDOUT: .internal [private] = %.loc14 +// CHECK:STDOUT: .internal [private] = %field_decl // CHECK:STDOUT: .G = %B.G.decl // CHECK:STDOUT: .SomeFunc = %B.SomeFunc.decl // CHECK:STDOUT: .A = @@ -1455,7 +1463,7 @@ class B { // CHECK:STDOUT: fn @B.SomeFunc(%self.param: %B) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %B = name_ref self, %self -// CHECK:STDOUT: %internal.ref: %B.elem = name_ref internal, @B.%.loc14 [concrete = @B.%.loc14] +// CHECK:STDOUT: %internal.ref: %B.elem = name_ref internal, @B.%field_decl [concrete = @B.%field_decl] // CHECK:STDOUT: %.loc44_16.1: ref %Internal = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc44_16.2: %Internal = acquire_value %.loc44_16.1 // CHECK:STDOUT: %INTERNAL_CONSTANT.ref: = name_ref INTERNAL_CONSTANT, [concrete = ] @@ -1505,13 +1513,15 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %A.elem = field_decl x, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .x [private] = %.loc5 +// CHECK:STDOUT: .x [private] = %field_decl // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1588,13 +1598,15 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %A.elem = field_decl x, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .x [protected] = %.loc5 +// CHECK:STDOUT: .x [protected] = %field_decl // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1624,7 +1636,7 @@ class B { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %B = name_ref self, %self // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %x.ref: %A.elem = name_ref x, @A.%.loc5 [concrete = @A.%.loc5] +// CHECK:STDOUT: %x.ref: %A.elem = name_ref x, @A.%field_decl [concrete = @A.%field_decl] // CHECK:STDOUT: %.loc12_9.1: %A = as_compatible %self.ref // CHECK:STDOUT: %.loc12_9.2: ref %A = class_element_access %.loc12_9.1, element0 // CHECK:STDOUT: %.loc12_9.3: ref %A = converted %self.ref, %.loc12_9.2 diff --git a/toolchain/check/testdata/class/adapter/adapt.carbon b/toolchain/check/testdata/class/adapter/adapt.carbon index 28fcf5cc8869..9cb334aadfa1 100644 --- a/toolchain/check/testdata/class/adapter/adapt.carbon +++ b/toolchain/check/testdata/class/adapter/adapt.carbon @@ -108,15 +108,19 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { -// CHECK:STDOUT: %.loc5: %SomeClass.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc6: %SomeClass.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5: %SomeClass.elem = field_decl a, element0, %i32.loc5 in [concrete] { +// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc6: %SomeClass.elem = field_decl b, element1, %i32.loc6 in [concrete] { +// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass -// CHECK:STDOUT: .a = %.loc5 -// CHECK:STDOUT: .b = %.loc6 +// CHECK:STDOUT: .a = %field_decl.loc5 +// CHECK:STDOUT: .b = %field_decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { diff --git a/toolchain/check/testdata/class/adapter/extend_adapt.carbon b/toolchain/check/testdata/class/adapter/extend_adapt.carbon index e616def7f242..3c318d1e1daa 100644 --- a/toolchain/check/testdata/class/adapter/extend_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/extend_adapt.carbon @@ -163,7 +163,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.7b9: = complete_type_witness %struct_type.a.b [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.80b: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %TestStaticMemberFunction.type: type = fn_type @TestStaticMemberFunction [concrete] // CHECK:STDOUT: %TestStaticMemberFunction: %TestStaticMemberFunction.type = struct_value () [concrete] // CHECK:STDOUT: %TestAdapterMethod.type: type = fn_type @TestAdapterMethod [concrete] @@ -193,7 +193,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %SomeClassAdapter.decl.loc15: type = class_decl @SomeClassAdapter [concrete = constants.%SomeClassAdapter] {} {} // CHECK:STDOUT: %TestStaticMemberFunction.decl: %TestStaticMemberFunction.type = fn_decl @TestStaticMemberFunction [concrete = constants.%TestStaticMemberFunction] { // CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.80b] +// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param call_param0 // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [concrete = constants.%SomeClassAdapter] @@ -201,7 +201,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %TestAdapterMethod.decl: %TestAdapterMethod.type = fn_decl @TestAdapterMethod [concrete = constants.%TestAdapterMethod] { // CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.80b] +// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param call_param0 // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [concrete = constants.%SomeClassAdapter] @@ -224,8 +224,12 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { -// CHECK:STDOUT: %.loc7: %SomeClass.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc8: %SomeClass.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc7: %SomeClass.elem = field_decl a, element0, %i32.loc7 in [concrete] { +// CHECK:STDOUT: %i32.loc7: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc8: %SomeClass.elem = field_decl b, element1, %i32.loc8 in [concrete] { +// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %SomeClass.StaticMemberFunction.decl: %SomeClass.StaticMemberFunction.type = fn_decl @SomeClass.StaticMemberFunction [concrete = constants.%SomeClass.StaticMemberFunction] {} {} // CHECK:STDOUT: %SomeClass.AdapterMethod.decl: %SomeClass.AdapterMethod.type = fn_decl @SomeClass.AdapterMethod [concrete = constants.%SomeClass.AdapterMethod] { // CHECK:STDOUT: %self.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%self.param_patt] @@ -240,8 +244,8 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass -// CHECK:STDOUT: .a = %.loc7 -// CHECK:STDOUT: .b = %.loc8 +// CHECK:STDOUT: .a = %field_decl.loc7 +// CHECK:STDOUT: .b = %field_decl.loc8 // CHECK:STDOUT: .StaticMemberFunction = %SomeClass.StaticMemberFunction.decl // CHECK:STDOUT: .SomeClassAdapter = // CHECK:STDOUT: .AdapterMethod = %SomeClass.AdapterMethod.decl @@ -376,7 +380,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [concrete] // CHECK:STDOUT: %pattern_type.54b: type = pattern_type %SomeClassAdapter [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.80b: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] @@ -409,7 +413,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %SomeClassAdapter.decl: type = class_decl @SomeClassAdapter [concrete = constants.%SomeClassAdapter] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.80b] +// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a] // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { @@ -424,15 +428,19 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { -// CHECK:STDOUT: %.loc5: %SomeClass.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc6: %SomeClass.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5: %SomeClass.elem = field_decl a, element0, %i32.loc5 in [concrete] { +// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc6: %SomeClass.elem = field_decl b, element1, %i32.loc6 in [concrete] { +// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass -// CHECK:STDOUT: .a = %.loc5 -// CHECK:STDOUT: .b = %.loc6 +// CHECK:STDOUT: .a = %field_decl.loc5 +// CHECK:STDOUT: .b = %field_decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -451,7 +459,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: fn @F(%a.param: %SomeClassAdapter) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %SomeClassAdapter = name_ref a, %a -// CHECK:STDOUT: %b.ref: %SomeClass.elem = name_ref b, @SomeClass.%.loc6 [concrete = @SomeClass.%.loc6] +// CHECK:STDOUT: %b.ref: %SomeClass.elem = name_ref b, @SomeClass.%field_decl.loc6 [concrete = @SomeClass.%field_decl.loc6] // CHECK:STDOUT: %.loc21_11.1: %SomeClass = converted %a.ref, [concrete = ] // CHECK:STDOUT: %.loc21_11.2: %i32 = class_element_access , element1 [concrete = ] // CHECK:STDOUT: return 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 82b974794b72..311324aa37a1 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon @@ -169,29 +169,37 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithField { -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: adapt_decl %i32 [concrete] -// CHECK:STDOUT: %.loc13: %AdaptWithField.elem = field_decl n, element [concrete] +// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: adapt_decl %i32.loc8 [concrete] +// CHECK:STDOUT: %field_decl: %AdaptWithField.elem = field_decl n, element, %i32.loc13 in [concrete] { +// CHECK:STDOUT: %i32.loc13: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptWithField -// CHECK:STDOUT: .n = %.loc13 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithFields { -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: adapt_decl %i32 [concrete] -// CHECK:STDOUT: %.loc25: %AdaptWithFields.elem = field_decl a, element [concrete] -// CHECK:STDOUT: %.loc26: %AdaptWithFields.elem = field_decl b, element [concrete] -// CHECK:STDOUT: %.loc27: %AdaptWithFields.elem = field_decl c, element [concrete] +// CHECK:STDOUT: %i32.loc20: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: adapt_decl %i32.loc20 [concrete] +// CHECK:STDOUT: %field_decl.loc25: %AdaptWithFields.elem = field_decl a, element, %i32.loc25 in [concrete] { +// CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc26: %AdaptWithFields.elem = field_decl b, element, %i32.loc26 in [concrete] { +// CHECK:STDOUT: %i32.loc26: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc27: %AdaptWithFields.elem = field_decl c, element, %i32.loc27 in [concrete] { +// CHECK:STDOUT: %i32.loc27: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptWithFields -// CHECK:STDOUT: .a = %.loc25 -// CHECK:STDOUT: .b = %.loc26 -// CHECK:STDOUT: .c = %.loc27 +// CHECK:STDOUT: .a = %field_decl.loc25 +// CHECK:STDOUT: .b = %field_decl.loc26 +// CHECK:STDOUT: .c = %field_decl.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_adapt_with_base_and_fields.carbon @@ -241,7 +249,9 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: class @AdaptWithBaseAndFields { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc7: %AdaptWithBaseAndFields.elem.8fd = base_decl %Base.ref, element [concrete] -// CHECK:STDOUT: %.loc8: %AdaptWithBaseAndFields.elem.3f0 = field_decl n, element [concrete] +// CHECK:STDOUT: %field_decl: %AdaptWithBaseAndFields.elem.3f0 = field_decl n, element, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // 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] @@ -251,7 +261,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: .Self = constants.%AdaptWithBaseAndFields // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc7 -// CHECK:STDOUT: .n = %.loc8 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index fd4d73cd7cb2..84efc58e0070 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -109,7 +109,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %complete_type.7b9: = complete_type_witness %struct_type.a.b.b4c [concrete] // CHECK:STDOUT: %AdaptC: type = class_type @AdaptC [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] -// CHECK:STDOUT: %a.patt.c32: %pattern_type.98b = value_binding_pattern a [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [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: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] @@ -136,7 +136,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.0c6, %int_2.295) [concrete] // CHECK:STDOUT: %.c76: ref %C = temporary invalid, %C.val [concrete] // CHECK:STDOUT: %pattern_type.720: type = pattern_type %AdaptC [concrete] -// CHECK:STDOUT: %b.patt.658: %pattern_type.720 = value_binding_pattern b [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete] // CHECK:STDOUT: %c.patt: %pattern_type.98b = value_binding_pattern c [concrete] // CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete] // CHECK:STDOUT: %return.param_patt.89a: %pattern_type.98b = out_param_pattern [concrete] @@ -207,12 +207,12 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = wrapper_binding a, %.loc13_27.11 // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt.c32] +// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %AdaptC.ref.loc15: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC] // CHECK:STDOUT: %b: %AdaptC = wrapper_binding b, @__global_init.%.loc15_19.2 // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt.658] +// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref.loc17: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: %C = wrapper_binding c, @__global_init.%.loc17_14.2 @@ -254,15 +254,19 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc6: %C.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5: %C.elem = field_decl a, element0, %i32.loc5 in [concrete] { +// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc6: %C.elem = field_decl b, element1, %i32.loc6 in [concrete] { +// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .a = %.loc5 -// CHECK:STDOUT: .b = %.loc6 +// CHECK:STDOUT: .a = %field_decl.loc5 +// CHECK:STDOUT: .b = %field_decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptC { @@ -323,7 +327,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %complete_type.7b9: = complete_type_witness %struct_type.a.b.b4c [concrete] // CHECK:STDOUT: %AdaptC: type = class_type @AdaptC [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] -// CHECK:STDOUT: %a.patt.c32: %pattern_type.98b = value_binding_pattern a [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [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: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] @@ -350,7 +354,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.0c6, %int_2.295) [concrete] // CHECK:STDOUT: %.c76: ref %C = temporary invalid, %C.val [concrete] // CHECK:STDOUT: %pattern_type.720: type = pattern_type %AdaptC [concrete] -// CHECK:STDOUT: %b.patt.658: %pattern_type.720 = value_binding_pattern b [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete] // CHECK:STDOUT: %c.patt: %pattern_type.98b = value_binding_pattern c [concrete] // CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete] // CHECK:STDOUT: %return.param_patt.89a: %pattern_type.98b = out_param_pattern [concrete] @@ -421,13 +425,13 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = wrapper_binding a, %.loc13_27.11 // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt.c32] +// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc24: %AdaptC = converted @__global_init.%a.ref, [concrete = ] // CHECK:STDOUT: %AdaptC.ref.loc24: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC] // CHECK:STDOUT: %b: %AdaptC = wrapper_binding b, [concrete = ] // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt.658] +// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc33: %C = converted @__global_init.%b.ref, [concrete = ] // CHECK:STDOUT: %C.ref.loc33: type = name_ref C, %C.decl [concrete = constants.%C] @@ -470,15 +474,19 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc6: %C.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5: %C.elem = field_decl a, element0, %i32.loc5 in [concrete] { +// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc6: %C.elem = field_decl b, element1, %i32.loc6 in [concrete] { +// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .a = %.loc5 -// CHECK:STDOUT: .b = %.loc6 +// CHECK:STDOUT: .a = %field_decl.loc5 +// CHECK:STDOUT: .b = %field_decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptC { diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index e982fbe69620..d71beaba72aa 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -162,7 +162,9 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.param.loc20: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc20: ref %i32 = return_slot %return.param.loc20 // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc22: %Class.elem = field_decl k, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl k, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.k [concrete = constants.%complete_type.d82] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -170,7 +172,7 @@ fn Run() -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .G = %Class.G.decl -// CHECK:STDOUT: .k = %.loc22 +// CHECK:STDOUT: .k = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Class.F(%n.param: %i32) -> out %return.param: %i32 { diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index 8c345a6e70d2..29636e464f9e 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -88,7 +88,9 @@ class C { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc18: %C.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl a, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a [concrete = constants.%complete_type.388] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -96,13 +98,13 @@ class C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .C = // CHECK:STDOUT: .F = %C.F.decl -// CHECK:STDOUT: .a = %.loc18 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.F(%c.param: %C) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%.loc18 [concrete = @C.%.loc18] +// CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc16_31.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc16_31.2: %i32 = acquire_value %.loc16_31.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/field/compound_field.carbon b/toolchain/check/testdata/class/field/compound_field.carbon index 7347bc04e89c..c22c9a2ec56e 100644 --- a/toolchain/check/testdata/class/field/compound_field.carbon +++ b/toolchain/check/testdata/class/field/compound_field.carbon @@ -61,7 +61,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %complete_type.9b3: = complete_type_witness %struct_type.base.d.e.26c [concrete] // CHECK:STDOUT: %pattern_type.746: type = pattern_type %Derived [concrete] // CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete] -// CHECK:STDOUT: %d.patt.2df: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete] +// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete] // CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] @@ -134,7 +134,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: %AccessDerived.decl: %AccessDerived.type = fn_decl @AccessDerived [concrete = constants.%AccessDerived] { // CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt] -// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df] +// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a] // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { @@ -148,7 +148,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } // CHECK:STDOUT: %AccessBase.decl: %AccessBase.type = fn_decl @AccessBase [concrete = constants.%AccessBase] { // CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt] -// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df] +// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a] // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { @@ -199,24 +199,34 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc17: %Base.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %.loc18: %Base.elem = field_decl c, element2 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %Base.elem = field_decl a, element0, %i32.loc16 in [concrete] { +// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %Base.elem = field_decl b, element1, %i32.loc17 in [concrete] { +// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc18: %Base.elem = field_decl c, element2, %i32.loc18 in [concrete] { +// CHECK:STDOUT: %i32.loc18: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.c [concrete = constants.%complete_type.bae] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc16 -// CHECK:STDOUT: .b = %.loc17 -// CHECK:STDOUT: .c = %.loc18 +// CHECK:STDOUT: .a = %field_decl.loc16 +// CHECK:STDOUT: .b = %field_decl.loc17 +// CHECK:STDOUT: .c = %field_decl.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc22: %Derived.elem.93c = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %.loc24: %Derived.elem.577 = field_decl d, element1 [concrete] -// CHECK:STDOUT: %.loc25: %Derived.elem.577 = field_decl e, element2 [concrete] +// CHECK:STDOUT: %field_decl.loc24: %Derived.elem.577 = field_decl d, element1, %i32.loc24 in [concrete] { +// CHECK:STDOUT: %i32.loc24: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc25: %Derived.elem.577 = field_decl e, element2, %i32.loc25 in [concrete] { +// CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.e.26c [concrete = constants.%complete_type.9b3] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -224,8 +234,8 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc22 -// CHECK:STDOUT: .d = %.loc24 -// CHECK:STDOUT: .e = %.loc25 +// CHECK:STDOUT: .d = %field_decl.loc24 +// CHECK:STDOUT: .e = %field_decl.loc25 // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -233,7 +243,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref.loc29_10: %Derived = name_ref d, %d // CHECK:STDOUT: %Derived.ref.loc29: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %d.ref.loc29_20: %Derived.elem.577 = name_ref d, @Derived.%.loc24 [concrete = @Derived.%.loc24] +// CHECK:STDOUT: %d.ref.loc29_20: %Derived.elem.577 = name_ref d, @Derived.%field_decl.loc24 [concrete = @Derived.%field_decl.loc24] // CHECK:STDOUT: %.loc29_11.1: ref %i32 = class_element_access %d.ref.loc29_10, element1 // CHECK:STDOUT: %.loc29_11.2: %i32 = acquire_value %.loc29_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -248,7 +258,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc17 [concrete = @Base.%.loc17] +// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%field_decl.loc17 [concrete = @Base.%field_decl.loc17] // CHECK:STDOUT: %.loc33_11.1: %Base = as_compatible %d.ref // CHECK:STDOUT: %.loc33_11.2: ref %Base = class_element_access %.loc33_11.1, element0 // CHECK:STDOUT: %.loc33_11.3: ref %Base = converted %d.ref, %.loc33_11.2 @@ -266,7 +276,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.64c = name_ref p, %p // CHECK:STDOUT: %Derived.ref.loc37: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %d.ref: %Derived.elem.577 = name_ref d, @Derived.%.loc24 [concrete = @Derived.%.loc24] +// CHECK:STDOUT: %d.ref: %Derived.elem.577 = name_ref d, @Derived.%field_decl.loc24 [concrete = @Derived.%field_decl.loc24] // CHECK:STDOUT: %.loc37_12.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %.loc37_12.2: ref %i32 = class_element_access %.loc37_12.1, element1 // CHECK:STDOUT: %addr: %ptr.d08 = addr_of %.loc37_12.2 @@ -282,7 +292,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.64c = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc17 [concrete = @Base.%.loc17] +// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%field_decl.loc17 [concrete = @Base.%field_decl.loc17] // CHECK:STDOUT: %.loc41_12.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %.loc41_12.2: ref %Base = as_compatible %.loc41_12.1 // CHECK:STDOUT: %.loc41_12.3: ref %Base = class_element_access %.loc41_12.2, element0 diff --git a/toolchain/check/testdata/class/field/field_access.carbon b/toolchain/check/testdata/class/field/field_access.carbon index 8171af51dbe6..330f57808240 100644 --- a/toolchain/check/testdata/class/field/field_access.carbon +++ b/toolchain/check/testdata/class/field/field_access.carbon @@ -131,15 +131,19 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl j, element0 [concrete] -// CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %Class.elem = field_decl j, element0, %i32.loc16 in [concrete] { +// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %Class.elem = field_decl k, element1, %i32.loc17 in [concrete] { +// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.j.k [concrete = constants.%complete_type.212] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .j = %.loc16 -// CHECK:STDOUT: .k = %.loc17 +// CHECK:STDOUT: .j = %field_decl.loc16 +// CHECK:STDOUT: .k = %field_decl.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -160,7 +164,7 @@ fn Run() { // CHECK:STDOUT: %c.var_patt: %pattern_type.f15 = var_pattern %c.patt [concrete = constants.%c.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref.loc22: ref %Class = name_ref c, %c -// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16] // CHECK:STDOUT: %.loc22_4: ref %i32 = class_element_access %c.ref.loc22, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0.loc22: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -171,7 +175,7 @@ fn Run() { // CHECK:STDOUT: %.loc22_7: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.0c6] // CHECK:STDOUT: assign %.loc22_4, %.loc22_7 // CHECK:STDOUT: %c.ref.loc23: ref %Class = name_ref c, %c -// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17] // CHECK:STDOUT: %.loc23_4: ref %i32 = class_element_access %c.ref.loc23, element1 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc23: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -183,7 +187,7 @@ fn Run() { // CHECK:STDOUT: assign %.loc23_4, %.loc23_7 // CHECK:STDOUT: %cj.var: ref %i32 = var_storage %cj.var_patt // CHECK:STDOUT: %c.ref.loc24: ref %Class = name_ref c, %c -// CHECK:STDOUT: %j.ref.loc24: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %j.ref.loc24: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16] // CHECK:STDOUT: %.loc24_25.1: ref %i32 = class_element_access %c.ref.loc24, element0 // CHECK:STDOUT: %.loc24_25.2: %i32 = acquire_value %.loc24_25.1 // CHECK:STDOUT: %impl.elem0.loc24: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -200,7 +204,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %ck.var: ref %i32 = var_storage %ck.var_patt // CHECK:STDOUT: %c.ref.loc25: ref %Class = name_ref c, %c -// CHECK:STDOUT: %k.ref.loc25: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %k.ref.loc25: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17] // CHECK:STDOUT: %.loc25_25.1: ref %i32 = class_element_access %c.ref.loc25, element1 // CHECK:STDOUT: %.loc25_25.2: %i32 = acquire_value %.loc25_25.1 // CHECK:STDOUT: %impl.elem0.loc25: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/field/field_access_in_value.carbon b/toolchain/check/testdata/class/field/field_access_in_value.carbon index 51223b1f933c..47b243f2b070 100644 --- a/toolchain/check/testdata/class/field/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field/field_access_in_value.carbon @@ -133,15 +133,19 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl j, element0 [concrete] -// CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %Class.elem = field_decl j, element0, %i32.loc16 in [concrete] { +// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %Class.elem = field_decl k, element1, %i32.loc17 in [concrete] { +// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.j.k [concrete = constants.%complete_type.212] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .j = %.loc16 -// CHECK:STDOUT: .k = %.loc17 +// CHECK:STDOUT: .j = %field_decl.loc16 +// CHECK:STDOUT: .k = %field_decl.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Test() { @@ -162,7 +166,7 @@ fn Test() { // CHECK:STDOUT: %cv.var_patt: %pattern_type.f15 = var_pattern %cv.patt [concrete = constants.%cv.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %cv.ref.loc22: ref %Class = name_ref cv, %cv -// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16] // CHECK:STDOUT: %.loc22_5: ref %i32 = class_element_access %cv.ref.loc22, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0.loc22: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -173,7 +177,7 @@ fn Test() { // CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.0c6] // CHECK:STDOUT: assign %.loc22_5, %.loc22_8 // CHECK:STDOUT: %cv.ref.loc23: ref %Class = name_ref cv, %cv -// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17] // CHECK:STDOUT: %.loc23_5: ref %i32 = class_element_access %cv.ref.loc23, element1 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc23: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -192,7 +196,7 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: %cj.var: ref %i32 = var_storage %cj.var_patt // CHECK:STDOUT: %c.ref.loc25: %Class = name_ref c, %c -// CHECK:STDOUT: %j.ref.loc25: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %j.ref.loc25: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16] // CHECK:STDOUT: %.loc25_25.1: ref %i32 = class_element_access %c.ref.loc25, element0 // CHECK:STDOUT: %.loc25_25.2: %i32 = acquire_value %.loc25_25.1 // CHECK:STDOUT: %impl.elem0.loc25: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -209,7 +213,7 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: %ck.var: ref %i32 = var_storage %ck.var_patt // CHECK:STDOUT: %c.ref.loc26: %Class = name_ref c, %c -// CHECK:STDOUT: %k.ref.loc26: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %k.ref.loc26: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17] // CHECK:STDOUT: %.loc26_25.1: ref %i32 = class_element_access %c.ref.loc26, element1 // CHECK:STDOUT: %.loc26_25.2: %i32 = acquire_value %.loc26_25.1 // CHECK:STDOUT: %impl.elem0.loc26: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/field/field_initializer.carbon b/toolchain/check/testdata/class/field/field_initializer.carbon index b6334f4e8735..fdd5b609d7a3 100644 --- a/toolchain/check/testdata/class/field/field_initializer.carbon +++ b/toolchain/check/testdata/class/field/field_initializer.carbon @@ -133,7 +133,9 @@ var C: Class = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0, initializer = inst6400010D [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl field, element0, initializer = inst6400010B, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff] // CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] // CHECK:STDOUT: %bound_method.loc5_20.1: = bound_method %int_123, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] @@ -147,7 +149,7 @@ var C: Class = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .field = %.loc5_12 +// CHECK:STDOUT: .field = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index 0c00e920208b..6c9596bde8b4 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -137,8 +137,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T.67d) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67d [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T.67d [symbolic] // CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T.67d} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x.0c5 [symbolic] @@ -151,8 +149,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete] // 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.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] @@ -160,6 +156,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] @@ -229,22 +226,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc4_10.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_10.1) [symbolic = %C (constants.%C.1d0)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc4_10.1 [symbolic = %C.elem (constants.%C.elem.4d5)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_10.1 (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] // CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_10.2 [symbolic = %T.loc4_10.1 (constants.%T.67d)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.1d0 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -269,7 +266,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.3b7] // CHECK:STDOUT: %.loc13_13.1: %C.3b7 = as_compatible %a.ref // CHECK:STDOUT: %.loc13_13.2: %C.3b7 = converted %a.ref, %.loc13_13.1 -// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%.loc5 [concrete = @C.%.loc5] +// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc13_23.1: ref %i32 = class_element_access %.loc13_13.2, element0 // CHECK:STDOUT: %.loc13_23.2: %i32 = acquire_value %.loc13_23.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -291,8 +288,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %C => constants.%C.3b7 // CHECK:STDOUT: %C.elem => constants.%C.elem.29b // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 @@ -319,19 +314,16 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T.67d [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67d [symbolic] // CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] // CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %pattern_type.e90: type = pattern_type %Adapter [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete] @@ -360,12 +352,13 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.7e3: = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.735)] // CHECK:STDOUT: %Main.import_ref.189 = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.ba1: @C.%C.elem (%C.elem.4d5) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.c54] +// CHECK:STDOUT: %Main.import_ref.21b: @C.%C.elem (%C.elem.4d5) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %field_decl] // CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//adapt_specific_type, loc4_10, loaded [symbolic = @C.%T (constants.%T.67d)] // CHECK:STDOUT: %Main.import_ref.9e9: = import_ref Main//adapt_specific_type, loc10_1, loaded [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: %Main.import_ref.58b = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %.c54: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.57f = import_ref Main//adapt_specific_type, loc5_10, unloaded +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %Main.import_ref.57f in [concrete] {} // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] // CHECK:STDOUT: %Copy.impl_witness_table.8d2 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] @@ -410,8 +403,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1d0)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T [symbolic = %C.elem (constants.%C.elem.4d5)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] @@ -422,7 +413,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.189 -// CHECK:STDOUT: .x = imports.%Main.import_ref.ba1 +// CHECK:STDOUT: .x = imports.%Main.import_ref.21b // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -434,7 +425,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.3b7] // CHECK:STDOUT: %.loc7_13.1: %C.3b7 = as_compatible %a.ref // CHECK:STDOUT: %.loc7_13.2: %C.3b7 = converted %a.ref, %.loc7_13.1 -// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.ba1 [concrete = imports.%.c54] +// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.21b [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc7_23.1: ref %i32 = class_element_access %.loc7_13.2, element0 // CHECK:STDOUT: %.loc7_23.2: %i32 = acquire_value %.loc7_23.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -456,8 +447,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %C => constants.%C.3b7 // CHECK:STDOUT: %C.elem => constants.%C.elem.29b // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 @@ -476,8 +465,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d1c4.1 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T [symbolic] // CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x.0c5 [symbolic] @@ -489,8 +476,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete] // 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.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] @@ -498,6 +483,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] @@ -557,22 +543,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc4_10.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)] -// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d1c4.1) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_10.1) [symbolic = %C (constants.%C.1d0)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc4_10.1 [symbolic = %C.elem (constants.%C.elem.4d5)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_10.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] // CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_10.2 [symbolic = %T.loc4_10.1 (constants.%T)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.1d0 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -594,7 +580,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: fn @Access(%a.param: %Adapter) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a -// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%.loc5 [concrete = @C.%.loc5] +// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc21_11.1: %C.3b7 = converted %a.ref, [concrete = ] // CHECK:STDOUT: %.loc21_11.2: %i32 = class_element_access , element0 [concrete = ] // CHECK:STDOUT: return @@ -611,8 +597,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %C => constants.%C.3b7 // CHECK:STDOUT: %C.elem => constants.%C.elem.29b // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 @@ -631,8 +615,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T [symbolic] // CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x.0c5 [symbolic] @@ -644,8 +626,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete] // 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.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] @@ -685,22 +665,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc7_10.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc7_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc7_10.1) [symbolic = %C (constants.%C.1d0)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc7_10.1 [symbolic = %C.elem (constants.%C.elem.4d5)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc7_10.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] // CHECK:STDOUT: %complete_type.loc9_1.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc8: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_10.2 [symbolic = %T.loc7_10.1 (constants.%T)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc9_1.1: = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc9_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.1d0 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc8 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -729,8 +709,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %C => constants.%C.3b7 // CHECK:STDOUT: %C.elem => constants.%C.elem.29b // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 @@ -754,19 +732,16 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T [symbolic] -// CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d1c4.1 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] // CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] // CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %pattern_type.e90: type = pattern_type %Adapter [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete] @@ -786,13 +761,14 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.7e3: = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.735)] // CHECK:STDOUT: %Main.import_ref.189 = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.ba1: @C.%C.elem (%C.elem.4d5) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.c54] +// CHECK:STDOUT: %Main.import_ref.21b: @C.%C.elem (%C.elem.4d5) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %field_decl] // CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//extend_adapt_specific_type_library, loc7_10, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.9e9: = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: %Main.import_ref.58b = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.6b2392.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [concrete = constants.%C.3b7] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %.c54: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.57f = import_ref Main//extend_adapt_specific_type_library, loc8_10, unloaded +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %Main.import_ref.57f in [concrete] {} // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -836,8 +812,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)] -// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d1c4.1) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1d0)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T [symbolic = %C.elem (constants.%C.elem.4d5)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] @@ -848,14 +822,14 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.189 -// CHECK:STDOUT: .x = imports.%Main.import_ref.ba1 +// CHECK:STDOUT: .x = imports.%Main.import_ref.21b // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedAccess(%a.param: %Adapter) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a -// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.ba1 [concrete = imports.%.c54] +// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.21b [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc15_11.1: %C.3b7 = converted %a.ref, [concrete = ] // CHECK:STDOUT: %.loc15_11.2: %i32 = class_element_access , element0 [concrete = ] // CHECK:STDOUT: return @@ -872,8 +846,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %C => constants.%C.3b7 // CHECK:STDOUT: %C.elem => constants.%C.elem.29b // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 @@ -1156,13 +1128,15 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc11: %C.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .n = %.loc11 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedConvert(%a.param: %Adapter.0d1) -> out %return.param: %i32 { @@ -1185,7 +1159,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.ref.loc15: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc15_13.1: %C = as_compatible %a.ref // CHECK:STDOUT: %.loc15_13.2: %C = converted %a.ref, %.loc15_13.1 -// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc11 [concrete = @C.%.loc11] +// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc15_18.1: ref %i32 = class_element_access %.loc15_13.2, element0 // CHECK:STDOUT: %.loc15_18.2: %i32 = acquire_value %.loc15_18.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index 31c171b93c3d..ac2865e25157 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -101,8 +101,6 @@ fn H() { // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [concrete] // CHECK:STDOUT: %Base.798: type = class_type @Base, @Base(%T.67d) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67d [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %Base.elem.a3c: type = unbound_element_type %Base.798, %T.67d [symbolic] // CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T.67d} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x.0c5 [symbolic] @@ -118,8 +116,6 @@ fn H() { // CHECK:STDOUT: %complete_type.620: = complete_type_witness %struct_type.y [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Base.947: type = class_type @Base, @Base(%Param) [concrete] -// CHECK:STDOUT: %pattern_type.116: type = pattern_type %Param [concrete] -// CHECK:STDOUT: %x.patt.6d5: %pattern_type.116 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %Base.elem.3f2: type = unbound_element_type %Base.947, %Param [concrete] // CHECK:STDOUT: %struct_type.x.301: type = struct_type {.x: %Param} [concrete] // CHECK:STDOUT: %complete_type.38f: = complete_type_witness %struct_type.x.301 [concrete] @@ -201,33 +197,35 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc4_18.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_18.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %x.patt: @Base.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_18.1) [symbolic = %Base (constants.%Base.798)] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %T.loc4_18.1 [symbolic = %Base.elem (constants.%Base.elem.a3c)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T.loc4_18.1 (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] // CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_18.2 [symbolic = %T.loc4_18.1 (constants.%T.67d)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base.798 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Param { -// CHECK:STDOUT: %.loc9: %Param.elem = field_decl y, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Param.elem = field_decl y, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.620] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Param -// CHECK:STDOUT: .y = %.loc9 +// CHECK:STDOUT: .y = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -250,12 +248,12 @@ fn H() { // CHECK:STDOUT: fn @DoubleFieldAccess(%d.param: %Derived) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, @Base.%.loc5 [concrete = @Base.%.loc5] +// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc17_11.1: %Base.947 = as_compatible %d.ref // CHECK:STDOUT: %.loc17_11.2: ref %Base.947 = class_element_access %.loc17_11.1, element0 // CHECK:STDOUT: %.loc17_11.3: ref %Base.947 = converted %d.ref, %.loc17_11.2 // CHECK:STDOUT: %.loc17_11.4: ref %Param = class_element_access %.loc17_11.3, element0 -// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, @Param.%.loc9 [concrete = @Param.%.loc9] +// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, @Param.%field_decl [concrete = @Param.%field_decl] // CHECK:STDOUT: %.loc17_13.1: ref %i32 = class_element_access %.loc17_11.4, element0 // CHECK:STDOUT: %.loc17_13.2: %i32 = acquire_value %.loc17_13.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -277,8 +275,6 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.620 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.116 -// CHECK:STDOUT: %x.patt => constants.%x.patt.6d5 // CHECK:STDOUT: %Base => constants.%Base.947 // CHECK:STDOUT: %Base.elem => constants.%Base.elem.3f2 // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.301 @@ -304,15 +300,11 @@ fn H() { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Base.elem.a3c: type = unbound_element_type %Base.798, %T.67d [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67d [symbolic] // CHECK:STDOUT: %Base.947: type = class_type @Base, @Base(%Param) [concrete] // CHECK:STDOUT: %struct_type.x.301: type = struct_type {.x: %Param} [concrete] // CHECK:STDOUT: %complete_type.38f: = complete_type_witness %struct_type.x.301 [concrete] // CHECK:STDOUT: %Base.elem.3f2: type = unbound_element_type %Base.947, %Param [concrete] -// CHECK:STDOUT: %pattern_type.116: type = pattern_type %Param [concrete] -// CHECK:STDOUT: %x.patt.6d5: %pattern_type.116 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %struct_type.base.a1b: type = struct_type {.base: %Base.947} [concrete] // CHECK:STDOUT: %complete_type.90c: = complete_type_witness %struct_type.base.a1b [concrete] // CHECK:STDOUT: %pattern_type.746: type = pattern_type %Derived [concrete] @@ -350,18 +342,20 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.cb0: = import_ref Main//extend_generic_base, loc10_1, loaded [concrete = constants.%complete_type.620] // CHECK:STDOUT: %Main.import_ref.61b = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.573: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.8bf] +// CHECK:STDOUT: %Main.import_ref.a22: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %field_decl.864] // CHECK:STDOUT: %Main.import_ref.7e3: = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.735)] // CHECK:STDOUT: %Main.import_ref.821 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.da1: @Base.%Base.elem (%Base.elem.a3c) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.866] +// CHECK:STDOUT: %Main.import_ref.be5: @Base.%Base.elem (%Base.elem.a3c) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %field_decl.2df] // CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//extend_generic_base, loc4_18, loaded [symbolic = @Base.%T (constants.%T.67d)] // CHECK:STDOUT: %Main.import_ref.58d: = import_ref Main//extend_generic_base, loc14_1, loaded [concrete = constants.%complete_type.90c] // CHECK:STDOUT: %Main.import_ref.87c = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.4a4 = import_ref Main//extend_generic_base, loc13_27, unloaded // CHECK:STDOUT: %Main.import_ref.c669b4.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [concrete = constants.%Base.947] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %.866: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0 [concrete] -// CHECK:STDOUT: %.8bf: %Param.elem = field_decl y, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.57f = import_ref Main//extend_generic_base, loc5_10, unloaded +// CHECK:STDOUT: %field_decl.2df: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0, %Main.import_ref.57f in [concrete] {} +// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//extend_generic_base, loc9_10, unloaded +// CHECK:STDOUT: %field_decl.864: %Param.elem = field_decl y, element0, %Main.import_ref.69c in [concrete] {} // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] // CHECK:STDOUT: %Copy.impl_witness_table.8d2 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] @@ -409,7 +403,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.61b -// CHECK:STDOUT: .y = imports.%Main.import_ref.573 +// CHECK:STDOUT: .y = imports.%Main.import_ref.a22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Base(imports.%Main.import_ref.b3b: type) [from "extend_generic_base.carbon"] { @@ -418,8 +412,6 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %x.patt: @Base.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.798)] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %T [symbolic = %Base.elem (constants.%Base.elem.a3c)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] @@ -430,19 +422,19 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.821 -// CHECK:STDOUT: .x = imports.%Main.import_ref.da1 +// CHECK:STDOUT: .x = imports.%Main.import_ref.be5 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedDoubleFieldAccess(%d.param: %Derived) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, imports.%Main.import_ref.da1 [concrete = imports.%.866] +// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, imports.%Main.import_ref.be5 [concrete = imports.%field_decl.2df] // CHECK:STDOUT: %.loc7_11.1: %Base.947 = as_compatible %d.ref // CHECK:STDOUT: %.loc7_11.2: ref %Base.947 = class_element_access %.loc7_11.1, element0 // CHECK:STDOUT: %.loc7_11.3: ref %Base.947 = converted %d.ref, %.loc7_11.2 // CHECK:STDOUT: %.loc7_11.4: ref %Param = class_element_access %.loc7_11.3, element0 -// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.573 [concrete = imports.%.8bf] +// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.a22 [concrete = imports.%field_decl.864] // CHECK:STDOUT: %.loc7_13.1: ref %i32 = class_element_access %.loc7_11.4, element0 // CHECK:STDOUT: %.loc7_13.2: %i32 = acquire_value %.loc7_13.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -464,8 +456,6 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.620 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.116 -// CHECK:STDOUT: %x.patt => constants.%x.patt.6d5 // CHECK:STDOUT: %Base => constants.%Base.947 // CHECK:STDOUT: %Base.elem => constants.%Base.elem.3f2 // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.301 diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index 8c88ff3e1984..07f039528962 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -63,7 +63,6 @@ class Declaration(T: type); // CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T.f84) [symbolic] // CHECK:STDOUT: %Class.GetValue: %Class.GetValue.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.d83: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %k.patt: %pattern_type.2c66b4.2 = ref_binding_pattern k [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %T.as_type} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [symbolic] @@ -128,13 +127,11 @@ class Declaration(T: type); // CHECK:STDOUT: %Class.GetAddr: @Class.%Class.GetAddr.type (%Class.GetAddr.type) = struct_value () [symbolic = %Class.GetAddr (constants.%Class.GetAddr)] // CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T.loc5_14.1) [symbolic = %Class.GetValue.type (constants.%Class.GetValue.type)] // CHECK:STDOUT: %Class.GetValue: @Class.%Class.GetValue.type (%Class.GetValue.type) = struct_value () [symbolic = %Class.GetValue (constants.%Class.GetValue)] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type (constants.%T.as_type)] -// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)] -// CHECK:STDOUT: %k.patt: @Class.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern k [symbolic = %k.patt (constants.%k.patt)] +// CHECK:STDOUT: %T.as_type.loc14_10.2: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc14_10.2 [symbolic = %require_complete (constants.%require_complete.d83)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.as_type (%T.as_type)} [symbolic = %struct_type.k (constants.%struct_type.k)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type.loc14_10.2 [symbolic = %Class.elem (constants.%Class.elem)] +// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.as_type.loc14_10.2 (%T.as_type)} [symbolic = %struct_type.k (constants.%struct_type.k)] // CHECK:STDOUT: %complete_type.loc15_1.2: = complete_type_witness %struct_type.k [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { @@ -177,7 +174,11 @@ class Declaration(T: type); // CHECK:STDOUT: %return.param: ref @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = out_param call_param1 // CHECK:STDOUT: %return: ref @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc14: @Class.%Class.elem (%Class.elem) = field_decl k, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl k, element0, %.loc14 in [concrete] { +// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)] +// CHECK:STDOUT: %T.as_type.loc14_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc14: type = converted %T.ref, %T.as_type.loc14_10.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc15_1.1: = complete_type_witness constants.%struct_type.k [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc15_1.1 // CHECK:STDOUT: @@ -186,7 +187,7 @@ class Declaration(T: type); // CHECK:STDOUT: .T = // CHECK:STDOUT: .GetAddr = %Class.GetAddr.decl // CHECK:STDOUT: .GetValue = %Class.GetValue.decl -// CHECK:STDOUT: .k = %.loc14 +// CHECK:STDOUT: .k = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -225,7 +226,7 @@ class Declaration(T: type); // CHECK:STDOUT: fn(%self.param: ref @Class.GetAddr.%Class (%Class)) -> out %return.param: @Class.GetAddr.%ptr.loc6_28.1 (%ptr.215) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref @Class.GetAddr.%Class (%Class) = name_ref self, %self -// CHECK:STDOUT: %k.ref: @Class.GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc14 [concrete = @Class.%.loc14] +// CHECK:STDOUT: %k.ref: @Class.GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc7_17: ref @Class.GetAddr.%T.as_type.loc6_28.1 (%T.as_type) = class_element_access %self.ref, element0 // CHECK:STDOUT: %addr: @Class.GetAddr.%ptr.loc6_28.1 (%ptr.215) = addr_of %.loc7_17 // CHECK:STDOUT: %impl.elem0.loc7_12.1: @Class.GetAddr.%.loc7_12.4 (%.45d) = impl_witness_access constants.%Copy.lookup_impl_witness.cf6, element0 [symbolic = %impl.elem0.loc7_12.2 (constants.%impl.elem0.c5d)] @@ -266,7 +267,7 @@ class Declaration(T: type); // CHECK:STDOUT: fn(%self.param: @Class.GetValue.%Class (%Class)) -> out %return.param: @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: @Class.GetValue.%Class (%Class) = name_ref self, %self -// CHECK:STDOUT: %k.ref: @Class.GetValue.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc14 [concrete = @Class.%.loc14] +// CHECK:STDOUT: %k.ref: @Class.GetValue.%Class.elem (%Class.elem) = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc11_16.1: ref @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc11_16.2: @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = acquire_value %.loc11_16.1 // CHECK:STDOUT: %impl.elem0.loc11_16.1: @Class.GetValue.%.loc11_16.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.bd2)] @@ -290,10 +291,8 @@ class Declaration(T: type); // CHECK:STDOUT: %Class.GetAddr => constants.%Class.GetAddr // CHECK:STDOUT: %Class.GetValue.type => constants.%Class.GetValue.type // CHECK:STDOUT: %Class.GetValue => constants.%Class.GetValue -// CHECK:STDOUT: %T.as_type => constants.%T.as_type +// CHECK:STDOUT: %T.as_type.loc14_10.2 => constants.%T.as_type // CHECK:STDOUT: %require_complete => constants.%require_complete.d83 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 -// CHECK:STDOUT: %k.patt => constants.%k.patt // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %struct_type.k => constants.%struct_type.k diff --git a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon index 33190ec63e65..ace76a2cc71f 100644 --- a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon +++ b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon @@ -65,19 +65,25 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %A.elem.5cd: type = unbound_element_type %A.6bc, %B [symbolic] // CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] +// CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.48d: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.0f9: %Int.as.ImplicitAs.impl.Convert.type.48d = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.590: = impl_witness imports.%ImplicitAs.impl_witness_table.204, @Int.as.ImplicitAs.impl(%int_32) [concrete] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.683: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.69e: %Int.as.ImplicitAs.impl.Convert.type.683 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.8de: %ImplicitAs.type.7cb = facet_value %i32, (%ImplicitAs.impl_witness.590) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.177: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %ImplicitAs.facet.8de) [concrete] +// CHECK:STDOUT: %.e3f: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.177, %ImplicitAs.facet.8de [concrete] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.c18: = bound_method %N.37f, %Int.as.ImplicitAs.impl.Convert.69e [symbolic] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.69e, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.7c3: = bound_method %N.37f, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.7c3(%N.37f) [symbolic] // CHECK:STDOUT: %iN.builtin.9da: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call [symbolic] // CHECK:STDOUT: %require_complete.468: = require_complete_type %iN.builtin.9da [symbolic] -// CHECK:STDOUT: %pattern_type.075: type = pattern_type %iN.builtin.9da [symbolic] -// CHECK:STDOUT: %n.patt: %pattern_type.075 = ref_binding_pattern n [symbolic] // CHECK:STDOUT: %A.elem.81f: type = unbound_element_type %A.6bc, %iN.builtin.9da [symbolic] // CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: %iN.builtin.9da} [symbolic] // CHECK:STDOUT: %complete_type.877: = complete_type_witness %struct_type.base.n [symbolic] @@ -121,6 +127,8 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.32e: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.48d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.0f9)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.204 = impl_witness_table (%Core.import_ref.32e), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -199,12 +207,10 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %A: type = class_type @A, @A(%N.loc6_10.1) [symbolic = %A (constants.%A.6bc)] // CHECK:STDOUT: %A.elem.loc7: type = unbound_element_type %A, constants.%B [symbolic = %A.elem.loc7 (constants.%A.elem.5cd)] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc6_10.1, constants.%Int.as.ImplicitAs.impl.Convert.69e [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.c18)] -// CHECK:STDOUT: %bound_method: = bound_method %N.loc6_10.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method (constants.%bound_method.7c3)] -// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method(%N.loc6_10.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call (constants.%Int.as.ImplicitAs.impl.Convert.call)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call [symbolic = %iN.builtin (constants.%iN.builtin.9da)] +// CHECK:STDOUT: %bound_method.loc9_14.3: = bound_method %N.loc6_10.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc9_14.3 (constants.%bound_method.7c3)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2: init Core.IntLiteral = call %bound_method.loc9_14.3(%N.loc6_10.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 [symbolic = %iN.builtin (constants.%iN.builtin.9da)] // CHECK:STDOUT: %require_complete: = require_complete_type %iN.builtin [symbolic = %require_complete (constants.%require_complete.468)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.075)] -// CHECK:STDOUT: %n.patt: @A.%pattern_type (%pattern_type.075) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt)] // CHECK:STDOUT: %A.elem.loc9: type = unbound_element_type %A, %iN.builtin [symbolic = %A.elem.loc9 (constants.%A.elem.81f)] // CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: @A.%iN.builtin (%iN.builtin.9da)} [symbolic = %struct_type.base.n (constants.%struct_type.base.n)] // CHECK:STDOUT: %complete_type.loc10_1.2: = complete_type_witness %struct_type.base.n [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.877)] @@ -212,7 +218,20 @@ fn F(a: A(0)*) { // CHECK:STDOUT: class { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc7: @A.%A.elem.loc7 (%A.elem.5cd) = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %.loc9: @A.%A.elem.loc9 (%A.elem.81f) = field_decl n, element1 [concrete] +// CHECK:STDOUT: %field_decl: @A.%A.elem.loc9 (%A.elem.81f) = field_decl n, element1, %.loc9_15.2 in [concrete] { +// CHECK:STDOUT: %Int.ref: %Int.type.9c0 = name_ref Int, file.%Int.decl [concrete = constants.%Int.c4a] +// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc6_10.2 [symbolic = %N.loc6_10.1 (constants.%N.37f)] +// CHECK:STDOUT: %impl.elem0: %.e3f = impl_witness_access constants.%ImplicitAs.impl_witness.590, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.69e] +// CHECK:STDOUT: %bound_method.loc9_14.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.c18)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc9_14.2: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc9_14.3 (constants.%bound_method.7c3)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc9_14.1: init Core.IntLiteral = call %bound_method.loc9_14.2(%N.ref) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc9_14.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc9_14.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc9_14.2: Core.IntLiteral = converted %N.ref, %.loc9_14.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%.loc9_14.2) [symbolic = %iN.builtin (constants.%iN.builtin.9da)] +// CHECK:STDOUT: %.loc9_15.1: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin.9da)] +// CHECK:STDOUT: %.loc9_15.2: type = converted %Int.call, %.loc9_15.1 [symbolic = %iN.builtin (constants.%iN.builtin.9da)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc10_1.1: = complete_type_witness constants.%struct_type.base.n [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.877)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc10_1.1 // CHECK:STDOUT: @@ -222,7 +241,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: .base = %.loc7 // CHECK:STDOUT: .Int = // CHECK:STDOUT: .N = -// CHECK:STDOUT: .n = %.loc9 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -260,12 +279,10 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %A => constants.%A.32a // CHECK:STDOUT: %A.elem.loc7 => constants.%A.elem.dc2 // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound.319 -// CHECK:STDOUT: %bound_method => constants.%bound_method.df0 -// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call => constants.%int_0.5c6 +// CHECK:STDOUT: %bound_method.loc9_14.3 => constants.%bound_method.df0 +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 => constants.%int_0.5c6 // CHECK:STDOUT: %iN.builtin => // CHECK:STDOUT: %require_complete => -// CHECK:STDOUT: %pattern_type => -// CHECK:STDOUT: %n.patt => // CHECK:STDOUT: %A.elem.loc9 => // CHECK:STDOUT: %struct_type.base.n => // CHECK:STDOUT: %complete_type.loc10_1.2 => diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index 07529f27f2d8..e5c45a92a66d 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -45,8 +45,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class.7bc: type = class_type @Class, @Class(%T.67d) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67d [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic] -// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %Class.elem.959: type = unbound_element_type %Class.7bc, %T.67d [symbolic] // CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T.67d} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x.0c5 [symbolic] @@ -67,7 +65,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %Class.elem.344: type = unbound_element_type %Class.1b7, %i32 [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] @@ -101,7 +98,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %return.patt.f449d7.1: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %x.patt.f3eeb3.1: %pattern_type.2c66b4.2 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %Class.elem.14b853.1: type = unbound_element_type %Class.c74ef3.1, %T.as_type [symbolic] // CHECK:STDOUT: %struct_type.x.ac1e9e.1: type = struct_type {.x: %T.as_type} [symbolic] // CHECK:STDOUT: %complete_type.b8dd1a.1: = complete_type_witness %struct_type.x.ac1e9e.1 [symbolic] @@ -120,7 +116,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.d83f06.2: = require_complete_type %U.as_type.c1c [symbolic] -// CHECK:STDOUT: %x.patt.f3eeb3.2: %pattern_type.2c66b4.3 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %Class.elem.14b853.2: type = unbound_element_type %Class.c74ef3.2, %U.as_type.c1c [symbolic] // CHECK:STDOUT: %struct_type.x.ac1e9e.2: type = struct_type {.x: %U.as_type.c1c} [symbolic] // CHECK:STDOUT: %complete_type.b8dd1a.2: = complete_type_witness %struct_type.x.ac1e9e.2 [symbolic] @@ -239,29 +234,29 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc5_14.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %x.patt: @Class.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class.7bc)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc5_14.1 [symbolic = %Class.elem (constants.%Class.elem.959)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.loc5_14.1 (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] // CHECK:STDOUT: %complete_type.loc7_1.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc7_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc6: @Class.%Class.elem (%Class.elem.959) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem.959) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.67d)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc7_1.1: = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc7_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc7_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.7bc // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc6 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param: %Class.1b7) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class.1b7 = name_ref c, %c -// CHECK:STDOUT: %x.ref: %Class.elem.344 = name_ref x, @Class.%.loc6 [concrete = @Class.%.loc6] +// CHECK:STDOUT: %x.ref: %Class.elem.344 = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc10_11.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc10_11.2: %i32 = acquire_value %.loc10_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -298,7 +293,7 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: fn(%c.param: @G.%Class.loc13_38.1 (%Class.c74ef3.1)) -> out %return.param: @G.%T.as_type.loc13_38.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: @G.%Class.loc13_38.1 (%Class.c74ef3.1) = name_ref c, %c -// CHECK:STDOUT: %x.ref: @G.%Class.elem (%Class.elem.14b853.1) = name_ref x, @Class.%.loc6 [concrete = @Class.%.loc6] +// CHECK:STDOUT: %x.ref: @G.%Class.elem (%Class.elem.14b853.1) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc14_11.1: ref @G.%T.as_type.loc13_38.1 (%T.as_type) = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc14_11.2: @G.%T.as_type.loc13_38.1 (%T.as_type) = acquire_value %.loc14_11.1 // CHECK:STDOUT: %impl.elem0.loc14_11.1: @G.%.loc14_11.5 (%.c29330.1) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c332.1, element0 [symbolic = %impl.elem0.loc14_11.2 (constants.%impl.elem0.bd2456.1)] @@ -339,7 +334,7 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: fn(%c.param: @H.%Class.loc17_38.1 (%Class.c74ef3.2)) -> out %return.param: @H.%U.as_type.loc17_38.1 (%U.as_type.c1c) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: @H.%Class.loc17_38.1 (%Class.c74ef3.2) = name_ref c, %c -// CHECK:STDOUT: %x.ref: @H.%Class.elem (%Class.elem.14b853.2) = name_ref x, @Class.%.loc6 [concrete = @Class.%.loc6] +// CHECK:STDOUT: %x.ref: @H.%Class.elem (%Class.elem.14b853.2) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc18_11.1: ref @H.%U.as_type.loc17_38.1 (%U.as_type.c1c) = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc18_11.2: @H.%U.as_type.loc17_38.1 (%U.as_type.c1c) = acquire_value %.loc18_11.1 // CHECK:STDOUT: %impl.elem0.loc18_11.1: @H.%.loc18_11.5 (%.c29330.2) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c332.2, element0 [symbolic = %impl.elem0.loc18_11.2 (constants.%impl.elem0.bd2456.2)] @@ -365,8 +360,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %Class => constants.%Class.1b7 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.344 // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 @@ -379,8 +372,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.d83f06.1 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 -// CHECK:STDOUT: %x.patt => constants.%x.patt.f3eeb3.1 // CHECK:STDOUT: %Class => constants.%Class.c74ef3.1 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.14b853.1 // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.ac1e9e.1 @@ -407,8 +398,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.d83f06.2 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.3 -// CHECK:STDOUT: %x.patt => constants.%x.patt.f3eeb3.2 // CHECK:STDOUT: %Class => constants.%Class.c74ef3.2 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.14b853.2 // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.ac1e9e.2 diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 9992e291cc9b..a385c731eb2b 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -210,7 +210,9 @@ class Class(U: type) { // CHECK:STDOUT: %CompleteClass.F: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type) = struct_value () [symbolic = %CompleteClass.F (constants.%CompleteClass.F)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc7: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem) = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem) = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %CompleteClass.F.decl: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type) = fn_decl @CompleteClass.F [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F)] { // CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a] // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] @@ -225,7 +227,7 @@ class Class(U: type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%CompleteClass.bae -// CHECK:STDOUT: .n = %.loc7 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: .F = %CompleteClass.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -290,8 +292,6 @@ class Class(U: type) { // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %pattern_type.51d1c4.2: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %x.patt: %pattern_type.51d1c4.2 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x [symbolic] @@ -346,7 +346,7 @@ class Class(U: type) { // CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.0aa: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: %Main.import_ref.5db = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.29d = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %Main.import_ref.bfc = import_ref Main//foo, loc7_8, unloaded // CHECK:STDOUT: %Main.import_ref.a02 = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: %Main.import_ref.b3bc94.3: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] @@ -391,22 +391,22 @@ class Class(U: type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.2)] -// CHECK:STDOUT: %x.patt: @Class.%pattern_type (%pattern_type.51d1c4.2) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.1 [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x)] // CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @Class.%Class.elem (%Class.elem) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4 [symbolic = %T.1 (constants.%T)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness constants.%struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -425,7 +425,7 @@ class Class(U: type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.5db -// CHECK:STDOUT: .n = imports.%Main.import_ref.29d +// CHECK:STDOUT: .n = imports.%Main.import_ref.bfc // CHECK:STDOUT: .F = imports.%Main.import_ref.a02 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -551,11 +551,12 @@ class Class(U: type) { // CHECK:STDOUT: %Main.import_ref.b3bc94.1: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T.67d)] // CHECK:STDOUT: %Main.import_ref.0aa: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: %Main.import_ref.5db = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.111: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = import_ref Main//foo, loc7_8, loaded [concrete = %.5a2] +// CHECK:STDOUT: %Main.import_ref.082: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = import_ref Main//foo, loc7_8, loaded [concrete = %field_decl] // CHECK:STDOUT: %Main.import_ref.895: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.4ea) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F.c7a)] // CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T.67d)] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %.5a2: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = field_decl n, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//foo, loc7_10, unloaded +// CHECK:STDOUT: %field_decl: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = field_decl n, element0, %Main.import_ref.69c in [concrete] {} // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] // CHECK:STDOUT: %Copy.impl_witness_table.8d2 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] @@ -607,7 +608,7 @@ class Class(U: type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.5db -// CHECK:STDOUT: .n = imports.%Main.import_ref.111 +// CHECK:STDOUT: .n = imports.%Main.import_ref.082 // CHECK:STDOUT: .F = imports.%Main.import_ref.895 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -682,7 +683,7 @@ class Class(U: type) { // CHECK:STDOUT: %v.var_patt: %pattern_type.97d = var_pattern %v.patt [concrete = constants.%v.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %v.ref: ref %CompleteClass.d55 = name_ref v, %v -// CHECK:STDOUT: %n.ref: %CompleteClass.elem.2cc = name_ref n, imports.%Main.import_ref.111 [concrete = imports.%.5a2] +// CHECK:STDOUT: %n.ref: %CompleteClass.elem.2cc = name_ref n, imports.%Main.import_ref.082 [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc12_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc12_11.2: %i32 = acquire_value %.loc12_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -780,7 +781,7 @@ class Class(U: type) { // CHECK:STDOUT: %Main.import_ref.b3bc94.1: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.0aa: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: %Main.import_ref.5db = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.29d = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %Main.import_ref.bfc = import_ref Main//foo, loc7_8, unloaded // CHECK:STDOUT: %Main.import_ref.a02 = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] @@ -816,7 +817,7 @@ class Class(U: type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.5db -// CHECK:STDOUT: .n = imports.%Main.import_ref.29d +// CHECK:STDOUT: .n = imports.%Main.import_ref.bfc // CHECK:STDOUT: .F = imports.%Main.import_ref.a02 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -969,14 +970,16 @@ class Class(U: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc17: = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: = field_decl x, element0, in [concrete] { +// CHECK:STDOUT: %T.ref: = name_ref T, [concrete = ] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness [concrete = ] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.7bcfd6.2 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc17 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index d343457208d9..c8e4df660707 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -279,7 +279,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %v.var_patt.loc10_3.1: @InitFromStructGeneric.%pattern_type.loc10 (%pattern_type.0b6) = var_pattern %v.patt.loc10_8.1 [symbolic = %v.var_patt.loc10_3.2 (constants.%v.var_patt.8cf)] // CHECK:STDOUT: } // CHECK:STDOUT: %v.ref: ref @InitFromStructGeneric.%Class.loc10_17.2 (%Class.55b) = name_ref v, %v -// CHECK:STDOUT: %k.ref: @InitFromStructGeneric.%Class.elem (%Class.elem.b97) = name_ref k, @Class.%.loc5 [concrete = @Class.%.loc5] +// CHECK:STDOUT: %k.ref: @InitFromStructGeneric.%Class.elem (%Class.elem.b97) = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc11_11.1: ref @InitFromStructGeneric.%T.as_type.loc9_66.1 (%T.as_type.74b) = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc11_11.2: @InitFromStructGeneric.%T.as_type.loc9_66.1 (%T.as_type.74b) = acquire_value %.loc11_11.1 // CHECK:STDOUT: %impl.elem0.loc11: @InitFromStructGeneric.%.loc10_27.3 (%.018) = impl_witness_access constants.%Copy.lookup_impl_witness.4df, element0 [symbolic = %impl.elem0.loc10_27.2 (constants.%impl.elem0.170)] @@ -333,7 +333,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %v.var_patt: %pattern_type.82c = var_pattern %v.patt [concrete = constants.%v.var_patt.68c] // CHECK:STDOUT: } // CHECK:STDOUT: %v.ref: ref %Class.a32 = name_ref v, %v -// CHECK:STDOUT: %k.ref: %Class.elem.8f3 = name_ref k, @Class.%.loc5 [concrete = @Class.%.loc5] +// CHECK:STDOUT: %k.ref: %Class.elem.8f3 = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc16_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc16_11.2: %i32 = acquire_value %.loc16_11.1 // CHECK:STDOUT: %impl.elem0.loc16: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/generic/member_access.carbon b/toolchain/check/testdata/class/generic/member_access.carbon index f5e6ce2c08ec..ca8f9d339a1e 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -74,7 +74,6 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic] // CHECK:STDOUT: %require_complete.d83: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic] -// CHECK:STDOUT: %x.patt.f3e: %pattern_type.2c66b4.2 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %Class.elem.1ee: type = unbound_element_type %Class.575, %T.as_type [symbolic] // CHECK:STDOUT: %pattern_type.e18: type = pattern_type %Class.575 [symbolic] // CHECK:STDOUT: %self.param_patt.aaa: %pattern_type.e18 = value_param_pattern [symbolic] @@ -127,7 +126,6 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] -// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %Class.elem.d3c: type = unbound_element_type %Class.e86, %i32 [concrete] // CHECK:STDOUT: %Class.Get.type.45c: type = fn_type @Class.Get, @Class(%Copy.facet.1e1) [concrete] // CHECK:STDOUT: %Class.Get.28a: %Class.Get.type.45c = struct_value () [concrete] @@ -181,7 +179,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.575 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: .Get = %Class.Get.decl // CHECK:STDOUT: .GetAddr = %Class.GetAddr.decl // CHECK:STDOUT: } @@ -203,7 +201,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: fn(%self.param: @Class.Get.%Class (%Class.575)) -> out %return.param: @Class.Get.%T.as_type.loc7_19.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: @Class.Get.%Class (%Class.575) = name_ref self, %self -// CHECK:STDOUT: %x.ref: @Class.Get.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%.loc5 [concrete = @Class.%.loc5] +// CHECK:STDOUT: %x.ref: @Class.Get.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc9_16.1: ref @Class.Get.%T.as_type.loc7_19.1 (%T.as_type) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc9_16.2: @Class.Get.%T.as_type.loc7_19.1 (%T.as_type) = acquire_value %.loc9_16.1 // CHECK:STDOUT: %impl.elem0.loc9_16.1: @Class.Get.%.loc9_16.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc9_16.2 (constants.%impl.elem0.bd2)] @@ -235,7 +233,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: fn(%self.param: ref @Class.GetAddr.%Class (%Class.575)) -> out %return.param: @Class.GetAddr.%ptr.loc13_28.1 (%ptr.215) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref @Class.GetAddr.%Class (%Class.575) = name_ref self, %self -// CHECK:STDOUT: %x.ref: @Class.GetAddr.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%.loc5 [concrete = @Class.%.loc5] +// CHECK:STDOUT: %x.ref: @Class.GetAddr.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc15_17: ref @Class.GetAddr.%T.as_type.loc13_28.1 (%T.as_type) = class_element_access %self.ref, element0 // CHECK:STDOUT: %addr: @Class.GetAddr.%ptr.loc13_28.1 (%ptr.215) = addr_of %.loc15_17 // CHECK:STDOUT: %impl.elem0.loc15_12.1: @Class.GetAddr.%.loc15_12.4 (%.45d) = impl_witness_access constants.%Copy.lookup_impl_witness.cf6, element0 [symbolic = %impl.elem0.loc15_12.2 (constants.%impl.elem0.c5d)] @@ -254,7 +252,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: fn @DirectFieldAccess(%x.param: %Class.e86) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref.loc22_10: %Class.e86 = name_ref x, %x -// CHECK:STDOUT: %x.ref.loc22_11: %Class.elem.d3c = name_ref x, @Class.%.loc5 [concrete = @Class.%.loc5] +// CHECK:STDOUT: %x.ref.loc22_11: %Class.elem.d3c = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc22_11.1: ref %i32 = class_element_access %x.ref.loc22_10, element0 // CHECK:STDOUT: %.loc22_11.2: %i32 = acquire_value %.loc22_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -304,10 +302,8 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: %T.loc4_14.1 => constants.%T.f84 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T.as_type => constants.%T.as_type +// CHECK:STDOUT: %T.as_type.loc5_10.2 => constants.%T.as_type // CHECK:STDOUT: %require_complete => constants.%require_complete.d83 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 -// CHECK:STDOUT: %x.patt => constants.%x.patt.f3e // CHECK:STDOUT: %Class => constants.%Class.575 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.1ee // CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.0dd @@ -350,10 +346,8 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) { // CHECK:STDOUT: %T.loc4_14.1 => constants.%Copy.facet.1e1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T.as_type => constants.%i32 +// CHECK:STDOUT: %T.as_type.loc5_10.2 => constants.%i32 // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.29f // CHECK:STDOUT: %Class => constants.%Class.e86 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.d3c // CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.45c diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index 6aaed4c669c7..916182ef3c43 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -61,7 +61,7 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic] // CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %n.param_patt: %pattern_type.2c66b4.2 = value_param_pattern [symbolic] -// CHECK:STDOUT: %n.patt.364: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic] +// CHECK:STDOUT: %n.patt: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic] // CHECK:STDOUT: %.1ce700.2: Core.Form = init_form %T.as_type [symbolic] // CHECK:STDOUT: %return.param_patt.bf4475.2: %pattern_type.2c66b4.2 = out_param_pattern [symbolic] // CHECK:STDOUT: %return.patt.f44: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic] @@ -73,7 +73,6 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.f84) [symbolic] // CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.d83: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %n.patt.4d3: %pattern_type.2c66b4.2 = ref_binding_pattern n [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T.as_type} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [symbolic] @@ -116,19 +115,17 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.loc5_14.1) [symbolic = %Class.G.type (constants.%Class.G.type)] // CHECK:STDOUT: %Class.G: @Class.%Class.G.type (%Class.G.type) = struct_value () [symbolic = %Class.G (constants.%Class.G)] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type (constants.%T.as_type)] -// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)] -// CHECK:STDOUT: %n.patt: @Class.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt.4d3)] +// CHECK:STDOUT: %T.as_type.loc14_10.2: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc14_10.2 [symbolic = %require_complete (constants.%require_complete.d83)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type.loc14_10.2 [symbolic = %Class.elem (constants.%Class.elem)] +// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type.loc14_10.2 (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)] // CHECK:STDOUT: %complete_type.loc15_1.2: = complete_type_witness %struct_type.n [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] { // CHECK:STDOUT: %n.param_patt.loc6_9.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6_9.2 (constants.%n.param_patt)] -// CHECK:STDOUT: %n.patt.loc6_9.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.1 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt.364)] +// CHECK:STDOUT: %n.patt.loc6_9.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.1 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt)] // CHECK:STDOUT: %return.param_patt.loc6_17.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6_17.2 (constants.%return.param_patt.bf4475.2)] // CHECK:STDOUT: %return.patt.loc6_14.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc6_17.1, %.loc6_17.3 [symbolic = %return.patt.loc6_14.2 (constants.%return.patt.f44)] // CHECK:STDOUT: } { @@ -165,7 +162,11 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %return.param: ref @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = out_param call_param1 // CHECK:STDOUT: %return: ref @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc14: @Class.%Class.elem (%Class.elem) = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl n, element0, %.loc14 in [concrete] { +// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)] +// CHECK:STDOUT: %T.as_type.loc14_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc14: type = converted %T.ref, %T.as_type.loc14_10.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc15_1.1: = complete_type_witness constants.%struct_type.n [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc15_1.1 // CHECK:STDOUT: @@ -174,7 +175,7 @@ class C(T: Core.Copy) { // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .G = %Class.G.decl -// CHECK:STDOUT: .n = %.loc14 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -183,7 +184,7 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %T.as_type.loc6_11.1: type = facet_access_type %T [symbolic = %T.as_type.loc6_11.1 (constants.%T.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc6_11.1 [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)] // CHECK:STDOUT: %n.param_patt.loc6_9.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6_9.2 (constants.%n.param_patt)] -// CHECK:STDOUT: %n.patt.loc6_9.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.2 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt.364)] +// CHECK:STDOUT: %n.patt.loc6_9.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.2 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt)] // CHECK:STDOUT: %.loc6_17.2: Core.Form = init_form %T.as_type.loc6_11.1 [symbolic = %.loc6_17.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %return.param_patt.loc6_17.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6_17.2 (constants.%return.param_patt.bf4475.2)] // CHECK:STDOUT: %return.patt.loc6_14.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc6_17.2, %T.as_type.loc6_11.1 [symbolic = %return.patt.loc6_14.2 (constants.%return.patt.f44)] @@ -236,7 +237,7 @@ class C(T: Core.Copy) { // CHECK:STDOUT: fn(%self.param: @Class.G.%Class (%Class)) -> out %return.param: @Class.G.%T.as_type.loc10_17.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: @Class.G.%Class (%Class) = name_ref self, %self -// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc14 [concrete = @Class.%.loc14] +// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc11_16.1: ref @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc11_16.2: @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = acquire_value %.loc11_16.1 // CHECK:STDOUT: %impl.elem0.loc11_16.1: @Class.G.%.loc11_16.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.bd2)] @@ -260,10 +261,8 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %Class.F => constants.%Class.F // CHECK:STDOUT: %Class.G.type => constants.%Class.G.type // CHECK:STDOUT: %Class.G => constants.%Class.G -// CHECK:STDOUT: %T.as_type => constants.%T.as_type +// CHECK:STDOUT: %T.as_type.loc14_10.2 => constants.%T.as_type // CHECK:STDOUT: %require_complete => constants.%require_complete.d83 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 -// CHECK:STDOUT: %n.patt => constants.%n.patt.4d3 // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %struct_type.n => constants.%struct_type.n @@ -275,7 +274,7 @@ class C(T: Core.Copy) { // CHECK:STDOUT: %T.as_type.loc6_11.1 => constants.%T.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 // CHECK:STDOUT: %n.param_patt.loc6_9.2 => constants.%n.param_patt -// CHECK:STDOUT: %n.patt.loc6_9.2 => constants.%n.patt.364 +// CHECK:STDOUT: %n.patt.loc6_9.2 => constants.%n.patt // CHECK:STDOUT: %.loc6_17.2 => constants.%.1ce700.2 // CHECK:STDOUT: %return.param_patt.loc6_17.2 => constants.%return.param_patt.bf4475.2 // CHECK:STDOUT: %return.patt.loc6_14.2 => constants.%return.patt.f44 @@ -309,6 +308,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] @@ -348,14 +348,17 @@ 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: @C.%C.elem (%C.elem) = field_decl data, element0 [concrete] +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem) = field_decl data, element0, %.loc13_14.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.data [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %C.F.decl -// CHECK:STDOUT: .data = %.loc13 +// CHECK:STDOUT: .data = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -367,7 +370,7 @@ class C(T: Core.Copy) { // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %data.ref: @C.F.%C.elem (%C.elem) = name_ref data, @C.%.loc13 [concrete = @C.%.loc13] +// CHECK:STDOUT: %data.ref: @C.F.%C.elem (%C.elem) = name_ref data, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/member_lookup.carbon b/toolchain/check/testdata/class/generic/member_lookup.carbon index 98fb055ab289..35586134628a 100644 --- a/toolchain/check/testdata/class/generic/member_lookup.carbon +++ b/toolchain/check/testdata/class/generic/member_lookup.carbon @@ -121,7 +121,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: fn(%x.param: @AccessDerived.%Derived.loc13_44.1 (%Derived.e87)) -> out %return.param: @AccessDerived.%T.as_type.loc13_44.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @AccessDerived.%Derived.loc13_44.1 (%Derived.e87) = name_ref x, %x -// CHECK:STDOUT: %d.ref: @AccessDerived.%Derived.elem (%Derived.elem.eb3) = name_ref d, @Derived.%.loc10 [concrete = @Derived.%.loc10] +// CHECK:STDOUT: %d.ref: @AccessDerived.%Derived.elem (%Derived.elem.eb3) = name_ref d, @Derived.%field_decl [concrete = @Derived.%field_decl] // CHECK:STDOUT: %.loc15_11.1: ref @AccessDerived.%T.as_type.loc13_44.1 (%T.as_type) = class_element_access %x.ref, element1 // CHECK:STDOUT: %.loc15_11.2: @AccessDerived.%T.as_type.loc13_44.1 (%T.as_type) = acquire_value %.loc15_11.1 // CHECK:STDOUT: %impl.elem0.loc15_11.1: @AccessDerived.%.loc15_11.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc15_11.2 (constants.%impl.elem0.bd2)] @@ -154,7 +154,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: fn(%x.param: @AccessBase.%Derived.loc19_41.1 (%Derived.e87)) -> out %return.param: @AccessBase.%T.as_type.loc19_41.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @AccessBase.%Derived.loc19_41.1 (%Derived.e87) = name_ref x, %x -// CHECK:STDOUT: %b.ref: @AccessBase.%Base.elem (%Base.elem.209) = name_ref b, @Base.%.loc5 [concrete = @Base.%.loc5] +// CHECK:STDOUT: %b.ref: @AccessBase.%Base.elem (%Base.elem.209) = name_ref b, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc21_11.1: @AccessBase.%Base (%Base.146) = as_compatible %x.ref // CHECK:STDOUT: %.loc21_11.2: ref @AccessBase.%Base (%Base.146) = class_element_access %.loc21_11.1, element0 // CHECK:STDOUT: %.loc21_11.3: ref @AccessBase.%Base (%Base.146) = converted %x.ref, %.loc21_11.2 diff --git a/toolchain/check/testdata/class/generic/member_out_of_line.carbon b/toolchain/check/testdata/class/generic/member_out_of_line.carbon index 0e819e2e26f7..de7246ea8c29 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -128,7 +128,7 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic] // CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %n.param_patt: %pattern_type.2c66b4.2 = value_param_pattern [symbolic] -// CHECK:STDOUT: %n.patt.364: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic] +// CHECK:STDOUT: %n.patt: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic] // CHECK:STDOUT: %.1ce700.2: Core.Form = init_form %T.as_type [symbolic] // CHECK:STDOUT: %return.param_patt.bf4475.2: %pattern_type.2c66b4.2 = out_param_pattern [symbolic] // CHECK:STDOUT: %return.patt.f44: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic] @@ -140,7 +140,6 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.f84) [symbolic] // CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.d83: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %n.patt.4d3: %pattern_type.2c66b4.2 = ref_binding_pattern n [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T.as_type} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [symbolic] @@ -174,7 +173,7 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [symbolic = constants.%Class.F] { // CHECK:STDOUT: %n.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6 (constants.%n.param_patt)] -// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt.364)] +// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt)] // CHECK:STDOUT: %return.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6 (constants.%return.param_patt.bf4475.2)] // CHECK:STDOUT: %return.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc11, %.loc11_35.2 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)] // CHECK:STDOUT: } { @@ -234,19 +233,17 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.loc5_14.1) [symbolic = %Class.G.type (constants.%Class.G.type)] // CHECK:STDOUT: %Class.G: @Class.%Class.G.type (%Class.G.type) = struct_value () [symbolic = %Class.G (constants.%Class.G)] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type (constants.%T.as_type)] -// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)] -// CHECK:STDOUT: %n.patt: @Class.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt.4d3)] +// CHECK:STDOUT: %T.as_type.loc8_10.2: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc8_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc8_10.2 [symbolic = %require_complete (constants.%require_complete.d83)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type.loc8_10.2 [symbolic = %Class.elem (constants.%Class.elem)] +// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type.loc8_10.2 (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)] // CHECK:STDOUT: %complete_type.loc9_1.2: = complete_type_witness %struct_type.n [symbolic = %complete_type.loc9_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] { // CHECK:STDOUT: %n.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6 (constants.%n.param_patt)] -// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt.364)] +// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt)] // CHECK:STDOUT: %return.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6 (constants.%return.param_patt.bf4475.2)] // CHECK:STDOUT: %return.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc11, %.loc11_35.2 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)] // CHECK:STDOUT: } { @@ -283,7 +280,11 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %return.param.loc7: ref @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = out_param call_param1 // CHECK:STDOUT: %return.loc7: ref @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = return_slot %return.param.loc7 // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8: @Class.%Class.elem (%Class.elem) = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl n, element0, %.loc8 in [concrete] { +// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)] +// CHECK:STDOUT: %T.as_type.loc8_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc8_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc8: type = converted %T.ref, %T.as_type.loc8_10.1 [symbolic = %T.as_type.loc8_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc9_1.1: = complete_type_witness constants.%struct_type.n [symbolic = %complete_type.loc9_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc9_1.1 // CHECK:STDOUT: @@ -292,7 +293,7 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .G = %Class.G.decl -// CHECK:STDOUT: .n = %.loc8 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -301,7 +302,7 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %T.as_type.loc6_11.1: type = facet_access_type %T.loc6 [symbolic = %T.as_type.loc6_11.1 (constants.%T.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc6_11.1 [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)] // CHECK:STDOUT: %n.param_patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6 (constants.%n.param_patt)] -// CHECK:STDOUT: %n.patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6 [symbolic = %n.patt.loc6 (constants.%n.patt.364)] +// CHECK:STDOUT: %n.patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6 [symbolic = %n.patt.loc6 (constants.%n.patt)] // CHECK:STDOUT: %.loc6_17.1: Core.Form = init_form %T.as_type.loc6_11.1 [symbolic = %.loc6_17.1 (constants.%.1ce700.2)] // CHECK:STDOUT: %return.param_patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6 (constants.%return.param_patt.bf4475.2)] // CHECK:STDOUT: %return.patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc6, %T.as_type.loc6_11.1 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)] @@ -354,7 +355,7 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: fn(%self.param.loc15: @Class.G.%Class (%Class)) -> out %return.param.loc15: @Class.G.%T.as_type.loc7_17.1 (%T.as_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: @Class.G.%Class (%Class) = name_ref self, %self.loc15 -// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc8 [concrete = @Class.%.loc8] +// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc16_14.1: ref @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc16_14.2: @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = acquire_value %.loc16_14.1 // CHECK:STDOUT: %impl.elem0.loc16_14.1: @Class.G.%.loc16_14.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc16_14.2 (constants.%impl.elem0.bd2)] @@ -378,10 +379,8 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %Class.F => constants.%Class.F // CHECK:STDOUT: %Class.G.type => constants.%Class.G.type // CHECK:STDOUT: %Class.G => constants.%Class.G -// CHECK:STDOUT: %T.as_type => constants.%T.as_type +// CHECK:STDOUT: %T.as_type.loc8_10.2 => constants.%T.as_type // CHECK:STDOUT: %require_complete => constants.%require_complete.d83 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 -// CHECK:STDOUT: %n.patt => constants.%n.patt.4d3 // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %struct_type.n => constants.%struct_type.n @@ -393,7 +392,7 @@ fn Generic(unused T: ()).WrongType() {} // CHECK:STDOUT: %T.as_type.loc6_11.1 => constants.%T.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 // CHECK:STDOUT: %n.param_patt.loc6 => constants.%n.param_patt -// CHECK:STDOUT: %n.patt.loc6 => constants.%n.patt.364 +// CHECK:STDOUT: %n.patt.loc6 => constants.%n.patt // CHECK:STDOUT: %.loc6_17.1 => constants.%.1ce700.2 // CHECK:STDOUT: %return.param_patt.loc6 => constants.%return.param_patt.bf4475.2 // CHECK:STDOUT: %return.patt.loc6 => constants.%return.patt.f44 diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index 23ff9c85ed62..9731448c1204 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -74,7 +74,6 @@ fn Test() -> i32 { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic] // CHECK:STDOUT: %require_complete.d83: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic] -// CHECK:STDOUT: %n.patt.872: %pattern_type.2c66b4.2 = ref_binding_pattern n [symbolic] // CHECK:STDOUT: %Inner.elem.51d: type = unbound_element_type %Inner.06b, %T.as_type [symbolic] // CHECK:STDOUT: %struct_type.n.797: type = struct_type {.n: %T.as_type} [symbolic] // CHECK:STDOUT: %complete_type.22c: = complete_type_witness %struct_type.n.797 [symbolic] @@ -117,7 +116,6 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.84a: type = class_type @Inner, @Inner(%Copy.facet.1e1) [concrete] // CHECK:STDOUT: %Outer.F.type.791: type = fn_type @Outer.F, @Outer(%Copy.facet.1e1) [concrete] // CHECK:STDOUT: %Outer.F.728: %Outer.F.type.791 = struct_value () [concrete] -// CHECK:STDOUT: %n.patt.e55: %pattern_type.6b6 = ref_binding_pattern n [concrete] // CHECK:STDOUT: %Inner.elem.a49: type = unbound_element_type %Inner.84a, %i32 [concrete] // CHECK:STDOUT: %struct_type.n.9ed: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.cdf: = complete_type_witness %struct_type.n.9ed [concrete] @@ -250,24 +248,26 @@ fn Test() -> i32 { // CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_14.2: %Copy.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: %Copy.type = symbolic_binding T, 0 [symbolic = %T (constants.%T.f84)] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic = %T.as_type (constants.%T.as_type)] -// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)] -// CHECK:STDOUT: %n.patt: @Inner.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt.872)] +// CHECK:STDOUT: %T.as_type.loc6_12.2: type = facet_access_type %T [symbolic = %T.as_type.loc6_12.2 (constants.%T.as_type)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc6_12.2 [symbolic = %require_complete (constants.%require_complete.d83)] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T) [symbolic = %Inner (constants.%Inner.06b)] -// CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %T.as_type [symbolic = %Inner.elem (constants.%Inner.elem.51d)] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Inner.%T.as_type (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n.797)] +// CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %T.as_type.loc6_12.2 [symbolic = %Inner.elem (constants.%Inner.elem.51d)] +// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Inner.%T.as_type.loc6_12.2 (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n.797)] // CHECK:STDOUT: %complete_type.loc7_3.2: = complete_type_witness %struct_type.n [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.22c)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc6: @Inner.%Inner.elem (%Inner.elem.51d) = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Inner.%Inner.elem (%Inner.elem.51d) = field_decl n, element0, %.loc6 in [concrete] { +// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Outer.%T.loc4_14.2 [symbolic = %T (constants.%T.f84)] +// CHECK:STDOUT: %T.as_type.loc6_12.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc6_12.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc6: type = converted %T.ref, %T.as_type.loc6_12.1 [symbolic = %T.as_type.loc6_12.2 (constants.%T.as_type)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc7_3.1: = complete_type_witness constants.%struct_type.n.797 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.22c)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc7_3.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner.06b // CHECK:STDOUT: .T = -// CHECK:STDOUT: .n = %.loc6 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -353,7 +353,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %c.var_patt: %pattern_type.4f49 = var_pattern %c.patt [concrete = constants.%c.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref: ref %Inner.84a = name_ref c, %c -// CHECK:STDOUT: %n.ref: %Inner.elem.a49 = name_ref n, @Inner.%.loc6 [concrete = @Inner.%.loc6] +// CHECK:STDOUT: %n.ref: %Inner.elem.a49 = name_ref n, @Inner.%field_decl [concrete = @Inner.%field_decl] // CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1 // CHECK:STDOUT: %impl.elem0.loc14: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -396,10 +396,8 @@ fn Test() -> i32 { // CHECK:STDOUT: specific @Inner(constants.%T.f84) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%T.f84 -// CHECK:STDOUT: %T.as_type => constants.%T.as_type +// CHECK:STDOUT: %T.as_type.loc6_12.2 => constants.%T.as_type // CHECK:STDOUT: %require_complete => constants.%require_complete.d83 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2 -// CHECK:STDOUT: %n.patt => constants.%n.patt.872 // CHECK:STDOUT: %Inner => constants.%Inner.06b // CHECK:STDOUT: %Inner.elem => constants.%Inner.elem.51d // CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.797 @@ -432,10 +430,8 @@ fn Test() -> i32 { // CHECK:STDOUT: specific @Inner(constants.%Copy.facet.1e1) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%Copy.facet.1e1 -// CHECK:STDOUT: %T.as_type => constants.%i32 +// CHECK:STDOUT: %T.as_type.loc6_12.2 => constants.%i32 // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %n.patt => constants.%n.patt.e55 // CHECK:STDOUT: %Inner => constants.%Inner.84a // CHECK:STDOUT: %Inner.elem => constants.%Inner.elem.a49 // CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.9ed diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index 28a1567c7742..d4c875febc20 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -646,15 +646,19 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %.loc5: %D.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc6: %D.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5: %D.elem = field_decl a, element0, %i32.loc5 in [concrete] { +// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc6: %D.elem = field_decl b, element1, %i32.loc6 in [concrete] { +// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D -// CHECK:STDOUT: .a = %.loc5 -// CHECK:STDOUT: .b = %.loc6 +// CHECK:STDOUT: .a = %field_decl.loc5 +// CHECK:STDOUT: .b = %field_decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @E(%F.loc9_10.2: %D) { diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index 49778f8b5a47..f593c3cee275 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -115,13 +115,15 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Field { -// CHECK:STDOUT: %.loc8: %Field.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Field.elem = field_decl x, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Field -// CHECK:STDOUT: .x = %.loc8 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared { @@ -271,11 +273,12 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.777 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.9e9: = import_ref Main//a, loc9_1, loaded [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: %Main.import_ref.4ae = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.5c1: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.860] +// CHECK:STDOUT: %Main.import_ref.3ec: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %field_decl] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %.860: %Field.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//a, loc8_10, unloaded +// CHECK:STDOUT: %field_decl: %Field.elem = field_decl x, element0, %Main.import_ref.69c in [concrete] {} // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.fbb203.1 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.bc9: %ForwardDeclared.F.type = import_ref Main//a, loc14_13, loaded [concrete = constants.%ForwardDeclared.F] @@ -319,7 +322,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.4ae -// CHECK:STDOUT: .x = imports.%Main.import_ref.5c1 +// CHECK:STDOUT: .x = imports.%Main.import_ref.3ec // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.1 [from "a.carbon"] { @@ -376,7 +379,7 @@ fn Run() { // CHECK:STDOUT: %b.var_patt: %pattern_type.f17 = var_pattern %b.patt [concrete = constants.%b.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %b.ref: ref %Field = name_ref b, %b -// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.5c1 [concrete = imports.%.860] +// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.3ec [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc10_4: ref %i32 = class_element_access %b.ref, element0 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc10: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index 298544a409ef..caab87d77ecf 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -57,14 +57,17 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle { -// CHECK:STDOUT: %.loc5: %Cycle.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Cycle.elem = field_decl a, element0, %ptr in [concrete] { +// CHECK:STDOUT: %Cycle.ref: type = name_ref Cycle, file.%Cycle.decl [concrete = constants.%Cycle] +// CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Cycle // CHECK:STDOUT: .Cycle = -// CHECK:STDOUT: .a = %.loc5 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -104,7 +107,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f0: = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type.de4] // CHECK:STDOUT: %Main.import_ref.3b0 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.40b = import_ref Main//a, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.ec9 = import_ref Main//a, loc5_8, unloaded // CHECK:STDOUT: %Core.DefaultOrUnformed: type = import_ref Core//prelude/parts/default, DefaultOrUnformed, loaded [concrete = constants.%DefaultOrUnformed.type] // CHECK:STDOUT: %Core.import_ref.cc8: @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op.type (%T.as.DefaultOrUnformed.impl.Op.type.150) = import_ref Core//prelude/parts/default, loc{{\d+_\d+}}, loaded [symbolic = @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op (constants.%T.as.DefaultOrUnformed.impl.Op.53a)] // CHECK:STDOUT: %DefaultOrUnformed.impl_witness_table.856 = impl_witness_table (%Core.import_ref.cc8), @T.as.DefaultOrUnformed.impl [concrete] @@ -127,7 +130,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.3b0 -// CHECK:STDOUT: .a = imports.%Main.import_ref.40b +// CHECK:STDOUT: .a = imports.%Main.import_ref.ec9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/import_struct_cycle.carbon b/toolchain/check/testdata/class/import_struct_cycle.carbon index 8ab7b7aa63ff..263cb2d71a01 100644 --- a/toolchain/check/testdata/class/import_struct_cycle.carbon +++ b/toolchain/check/testdata/class/import_struct_cycle.carbon @@ -92,14 +92,18 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle { -// CHECK:STDOUT: %.loc10: %Cycle.elem = field_decl c, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Cycle.elem = field_decl c, element0, %struct_type.b in [concrete] { +// CHECK:STDOUT: %Cycle.ref: type = name_ref Cycle, file.%Cycle.decl.loc4 [concrete = constants.%Cycle] +// CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr] +// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %ptr} [concrete = constants.%struct_type.b] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.c [concrete = constants.%complete_type.663] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Cycle // CHECK:STDOUT: .Cycle = -// CHECK:STDOUT: .c = %.loc10 +// CHECK:STDOUT: .c = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -152,9 +156,10 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.281: = import_ref Main//a, loc11_1, loaded [concrete = constants.%complete_type.663] // CHECK:STDOUT: %Main.import_ref.3b0 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.697: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.ec0] +// CHECK:STDOUT: %Main.import_ref.169: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %field_decl] // CHECK:STDOUT: %a.var: ref %struct_type.b = var_storage constants.%a.var_patt [concrete] -// CHECK:STDOUT: %.ec0: %Cycle.elem = field_decl c, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.fd6 = import_ref Main//a, loc10_21, unloaded +// CHECK:STDOUT: %field_decl: %Cycle.elem = field_decl c, element0, %Main.import_ref.fd6 in [concrete] {} // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.e5f: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.ff5) = import_ref Core//prelude/parts/copy, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.ce9)] // CHECK:STDOUT: %Copy.impl_witness_table.fb0 = impl_witness_table (%Core.import_ref.e5f), @ptr.as.Copy.impl [concrete] @@ -177,7 +182,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.3b0 -// CHECK:STDOUT: .c = imports.%Main.import_ref.697 +// CHECK:STDOUT: .c = imports.%Main.import_ref.169 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -188,7 +193,7 @@ fn Run() { // CHECK:STDOUT: %.loc7_12.1: ref %ptr.5cd = struct_access %a.ref.loc7_11, element0 [concrete = constants.%.4d3] // CHECK:STDOUT: %.loc7_12.2: %ptr.5cd = acquire_value %.loc7_12.1 // CHECK:STDOUT: %.loc7_10: ref %Cycle = deref %.loc7_12.2 -// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.697 [concrete = imports.%.ec0] +// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.169 [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc7_15: ref %struct_type.b = class_element_access %.loc7_10, element0 // CHECK:STDOUT: %.loc7_17.1: ref %ptr.5cd = struct_access %.loc7_15, element0 // CHECK:STDOUT: %.loc7_17.2: %ptr.5cd = acquire_value %.loc7_17.1 diff --git a/toolchain/check/testdata/class/inheritance/base.carbon b/toolchain/check/testdata/class/inheritance/base.carbon index 88ab9fbbe8b0..61a44ab2fa89 100644 --- a/toolchain/check/testdata/class/inheritance/base.carbon +++ b/toolchain/check/testdata/class/inheritance/base.carbon @@ -102,7 +102,7 @@ class Derived { // CHECK:STDOUT: %int_7.690: %i32 = int_value 7 [concrete] // CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val, %int_7.690) [concrete] // CHECK:STDOUT: %d.param_patt: %pattern_type.4fd = value_param_pattern [concrete] -// CHECK:STDOUT: %d.patt.cd7: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete] +// CHECK:STDOUT: %d.patt: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.b59: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.e55: type = tuple_type (%i32, %i32) [concrete] @@ -163,7 +163,7 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [concrete = constants.%Access] { // CHECK:STDOUT: %d.param_patt: %pattern_type.4fd = value_param_pattern [concrete = constants.%d.param_patt] -// CHECK:STDOUT: %d.patt: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.cd7] +// CHECK:STDOUT: %d.patt: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.394 = out_param_pattern [concrete = constants.%return.param_patt.a90] // CHECK:STDOUT: %return.patt: %pattern_type.394 = return_slot_pattern %return.param_patt, %.loc17_35.2 [concrete = constants.%return.patt.2ed] // CHECK:STDOUT: } { @@ -181,19 +181,23 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc4: %Base.elem = field_decl b, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Base.elem = field_decl b, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.b.0bf [concrete = constants.%complete_type.330] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .b = %.loc4 +// CHECK:STDOUT: .b = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc8: %Derived.elem.e51 = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %.loc10: %Derived.elem.a2d = field_decl d, element1 [concrete] +// CHECK:STDOUT: %field_decl: %Derived.elem.a2d = field_decl d, element1, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.90a [concrete = constants.%complete_type.2d7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -201,7 +205,7 @@ class Derived { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc8 -// CHECK:STDOUT: .d = %.loc10 +// CHECK:STDOUT: .d = %field_decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -239,14 +243,14 @@ class Derived { // CHECK:STDOUT: fn @Access(%d.param: %Derived) -> out %return.param: %tuple.type.e55 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref.loc18_11: %Derived = name_ref d, %d -// CHECK:STDOUT: %d.ref.loc18_12: %Derived.elem.a2d = name_ref d, @Derived.%.loc10 [concrete = @Derived.%.loc10] +// CHECK:STDOUT: %d.ref.loc18_12: %Derived.elem.a2d = name_ref d, @Derived.%field_decl [concrete = @Derived.%field_decl] // CHECK:STDOUT: %.loc18_12.1: ref %i32 = class_element_access %d.ref.loc18_11, element1 // CHECK:STDOUT: %.loc18_12.2: %i32 = acquire_value %.loc18_12.1 // CHECK:STDOUT: %d.ref.loc18_16: %Derived = name_ref d, %d // CHECK:STDOUT: %base.ref: %Derived.elem.e51 = name_ref base, @Derived.%.loc8 [concrete = @Derived.%.loc8] // CHECK:STDOUT: %.loc18_17.1: ref %Base = class_element_access %d.ref.loc18_16, element0 // CHECK:STDOUT: %.loc18_17.2: %Base = acquire_value %.loc18_17.1 -// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc4 [concrete = @Base.%.loc4] +// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc18_22.1: ref %i32 = class_element_access %.loc18_17.2, element0 // CHECK:STDOUT: %.loc18_22.2: %i32 = acquire_value %.loc18_22.1 // CHECK:STDOUT: %.loc18_24.1: %tuple.type.e55 = tuple_literal (%.loc18_12.2, %.loc18_22.2) @@ -314,14 +318,16 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { -// CHECK:STDOUT: %.loc7: %Derived.elem = field_decl d, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Derived.elem = field_decl d, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.d [concrete = constants.%complete_type.5d0] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived -// CHECK:STDOUT: .d = %.loc7 +// CHECK:STDOUT: .d = %field_decl // CHECK:STDOUT: .Base = // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/inheritance/base_field.carbon b/toolchain/check/testdata/class/inheritance/base_field.carbon index d74b798c0817..6ab6f6ac8fb0 100644 --- a/toolchain/check/testdata/class/inheritance/base_field.carbon +++ b/toolchain/check/testdata/class/inheritance/base_field.carbon @@ -113,24 +113,34 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc17: %Base.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %.loc18: %Base.elem = field_decl c, element2 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %Base.elem = field_decl a, element0, %i32.loc16 in [concrete] { +// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %Base.elem = field_decl b, element1, %i32.loc17 in [concrete] { +// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc18: %Base.elem = field_decl c, element2, %i32.loc18 in [concrete] { +// CHECK:STDOUT: %i32.loc18: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.c [concrete = constants.%complete_type.bae] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc16 -// CHECK:STDOUT: .b = %.loc17 -// CHECK:STDOUT: .c = %.loc18 +// CHECK:STDOUT: .a = %field_decl.loc16 +// CHECK:STDOUT: .b = %field_decl.loc17 +// CHECK:STDOUT: .c = %field_decl.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc22: %Derived.elem.93c = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %.loc24: %Derived.elem.577 = field_decl d, element1 [concrete] -// CHECK:STDOUT: %.loc25: %Derived.elem.577 = field_decl e, element2 [concrete] +// CHECK:STDOUT: %field_decl.loc24: %Derived.elem.577 = field_decl d, element1, %i32.loc24 in [concrete] { +// CHECK:STDOUT: %i32.loc24: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc25: %Derived.elem.577 = field_decl e, element2, %i32.loc25 in [concrete] { +// CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.d.e.26c [concrete = constants.%complete_type.9b3] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -138,8 +148,8 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc22 -// CHECK:STDOUT: .d = %.loc24 -// CHECK:STDOUT: .e = %.loc25 +// CHECK:STDOUT: .d = %field_decl.loc24 +// CHECK:STDOUT: .e = %field_decl.loc25 // CHECK:STDOUT: .c = // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } @@ -148,7 +158,7 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.64c = name_ref p, %p // CHECK:STDOUT: %.loc29_12: ref %Derived = deref %p.ref -// CHECK:STDOUT: %c.ref: %Base.elem = name_ref c, @Base.%.loc18 [concrete = @Base.%.loc18] +// CHECK:STDOUT: %c.ref: %Base.elem = name_ref c, @Base.%field_decl.loc18 [concrete = @Base.%field_decl.loc18] // CHECK:STDOUT: %.loc29_15.1: ref %Base = as_compatible %.loc29_12 // CHECK:STDOUT: %.loc29_15.2: ref %Base = class_element_access %.loc29_15.1, element0 // CHECK:STDOUT: %.loc29_15.3: ref %Base = converted %.loc29_12, %.loc29_15.2 diff --git a/toolchain/check/testdata/class/inheritance/base_method.carbon b/toolchain/check/testdata/class/inheritance/base_method.carbon index b14c4ef0ebc2..bacf0f7eac43 100644 --- a/toolchain/check/testdata/class/inheritance/base_method.carbon +++ b/toolchain/check/testdata/class/inheritance/base_method.carbon @@ -121,7 +121,9 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Base.elem = field_decl a, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.param_patt: %pattern_type.912 = ref_param_pattern [concrete = constants.%self.param_patt.21c] // CHECK:STDOUT: %self.patt: %pattern_type.912 = wrapper_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.26b] @@ -135,7 +137,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: @@ -156,7 +158,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: fn @Base.F(%self.param.loc21: ref %Base) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self.loc21 -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc22_7: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/class/inheritance/import_base.carbon b/toolchain/check/testdata/class/inheritance/import_base.carbon index 3afa38432071..ac03183e29c6 100644 --- a/toolchain/check/testdata/class/inheritance/import_base.carbon +++ b/toolchain/check/testdata/class/inheritance/import_base.carbon @@ -102,8 +102,12 @@ fn Run() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [concrete = constants.%Base] // CHECK:STDOUT: %self: %Base = wrapper_binding self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8: %Base.elem = field_decl x, element0 [concrete] -// CHECK:STDOUT: %.loc9: %Base.elem = field_decl unused_y, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc8: %Base.elem = field_decl x, element0, %i32.loc8 in [concrete] { +// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc9: %Base.elem = field_decl unused_y, element1, %i32.loc9 in [concrete] { +// CHECK:STDOUT: %i32.loc9: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x.unused_y [concrete = constants.%complete_type.6c3] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -111,8 +115,8 @@ fn Run() { // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .Unused = %Base.Unused.decl -// CHECK:STDOUT: .x = %.loc8 -// CHECK:STDOUT: .unused_y = %.loc9 +// CHECK:STDOUT: .x = %field_decl.loc8 +// CHECK:STDOUT: .unused_y = %field_decl.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Child { @@ -204,8 +208,8 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.d68 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.bc9: %Base.F.type = import_ref Main//a, loc5_13, loaded [concrete = constants.%Base.F] // CHECK:STDOUT: %Main.import_ref.077 = import_ref Main//a, loc6_18, unloaded -// CHECK:STDOUT: %Main.import_ref.230: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.11f] -// CHECK:STDOUT: %Main.import_ref.9f4 = import_ref Main//a, loc9_15, unloaded +// CHECK:STDOUT: %Main.import_ref.dea: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %field_decl] +// CHECK:STDOUT: %Main.import_ref.bf9 = import_ref Main//a, loc9_15, unloaded // CHECK:STDOUT: %Main.import_ref.60e: = import_ref Main//a, loc14_1, loaded [concrete = constants.%complete_type.c02] // CHECK:STDOUT: %Main.import_ref.6e8 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.bd6 = import_ref Main//a, loc13_20, unloaded @@ -213,7 +217,8 @@ fn Run() { // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %.11f: %Base.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//a, loc8_10, unloaded +// CHECK:STDOUT: %field_decl: %Base.elem = field_decl x, element0, %Main.import_ref.69c in [concrete] {} // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -247,8 +252,8 @@ fn Run() { // CHECK:STDOUT: .Self = imports.%Main.import_ref.d68 // CHECK:STDOUT: .F = imports.%Main.import_ref.bc9 // CHECK:STDOUT: .Unused = imports.%Main.import_ref.077 -// CHECK:STDOUT: .x = imports.%Main.import_ref.230 -// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.9f4 +// CHECK:STDOUT: .x = imports.%Main.import_ref.dea +// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.bf9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -288,7 +293,7 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.860 = var_pattern %a.patt [concrete = constants.%a.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a -// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.230 [concrete = imports.%.11f] +// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.dea [concrete = imports.%field_decl] // CHECK:STDOUT: %.loc8_4.1: ref %Base = as_compatible %a.ref.loc8 // CHECK:STDOUT: %.loc8_4.2: ref %Base = class_element_access %.loc8_4.1, element0 // CHECK:STDOUT: %.loc8_4.3: ref %Base = converted %a.ref.loc8, %.loc8_4.2 diff --git a/toolchain/check/testdata/class/inheritance/self_conversion.carbon b/toolchain/check/testdata/class/inheritance/self_conversion.carbon index c626d158b102..e71f6bb039c5 100644 --- a/toolchain/check/testdata/class/inheritance/self_conversion.carbon +++ b/toolchain/check/testdata/class/inheritance/self_conversion.carbon @@ -170,13 +170,15 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Base.elem = field_decl a, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a [concrete = constants.%complete_type.388] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: .Base = // CHECK:STDOUT: } // CHECK:STDOUT: @@ -220,7 +222,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: fn @Derived.SelfBase(%self.param.loc26: %Base) -> out %return.param.loc26: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Base = name_ref self, %self.loc26 -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc27_14.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc27_14.2: %i32 = acquire_value %.loc27_14.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -234,7 +236,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: fn @Derived.RefSelfBase(%self.param.loc30: ref %Base) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self.loc30 -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc31_7: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index 004d0a6b1829..45e833a045cd 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -42,9 +42,9 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %struct_type.n.next: type = struct_type {.n: %i32, .next: %ptr.7ee} [concrete] // CHECK:STDOUT: %complete_type.dc3: = complete_type_witness %struct_type.n.next [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %n.patt.ae8: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete] // CHECK:STDOUT: %next.param_patt: %pattern_type.8c5 = value_param_pattern [concrete] -// CHECK:STDOUT: %next.patt.b38: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete] +// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete] // CHECK:STDOUT: %.d76: Core.Form = init_form %Class [concrete] // CHECK:STDOUT: %pattern_type.f15: type = pattern_type %Class [concrete] // CHECK:STDOUT: %return.param_patt.86e: %pattern_type.f15 = out_param_pattern [concrete] @@ -102,9 +102,9 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.ae8] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] // CHECK:STDOUT: %next.param_patt: %pattern_type.8c5 = value_param_pattern [concrete = constants.%next.param_patt] -// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt.b38] +// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.f15 = out_param_pattern [concrete = constants.%return.param_patt.86e] // CHECK:STDOUT: %return.patt: %pattern_type.f15 = return_slot_pattern %return.param_patt, %Class.ref.loc20_34 [concrete = constants.%return.patt.0b7] // CHECK:STDOUT: } { @@ -124,9 +124,9 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: } // CHECK:STDOUT: %MakeReorder.decl: %MakeReorder.type = fn_decl @MakeReorder [concrete = constants.%MakeReorder] { // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.ae8] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] // CHECK:STDOUT: %next.param_patt: %pattern_type.8c5 = value_param_pattern [concrete = constants.%next.param_patt] -// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt.b38] +// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt] // CHECK:STDOUT: %return.param_patt: %pattern_type.f15 = out_param_pattern [concrete = constants.%return.param_patt.86e] // CHECK:STDOUT: %return.patt: %pattern_type.f15 = return_slot_pattern %return.param_patt, %Class.ref.loc24_41 [concrete = constants.%return.patt.0b7] // CHECK:STDOUT: } { @@ -147,16 +147,21 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc16: %Class.elem.b98 = field_decl n, element0 [concrete] -// CHECK:STDOUT: %.loc17: %Class.elem.8da = field_decl next, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %Class.elem.b98 = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %Class.elem.8da = field_decl next, element1, %ptr in [concrete] { +// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.7ee] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n.next [concrete = constants.%complete_type.dc3] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .n = %.loc16 +// CHECK:STDOUT: .n = %field_decl.loc16 // CHECK:STDOUT: .Class = -// CHECK:STDOUT: .next = %.loc17 +// CHECK:STDOUT: .next = %field_decl.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make(%n.param: %i32, %next.param: %ptr.7ee) -> out %return.param: %Class { diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index ede7571cfde8..d3754a3edb09 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -114,7 +114,7 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc20_26.9: init %Class to %.loc20_26.3 = class_init (%.loc20_26.5, %.loc20_26.8) [concrete = constants.%Class.val] // CHECK:STDOUT: %.loc20_28.1: init %Class = converted %.loc20_26.1, %.loc20_26.9 [concrete = constants.%Class.val] // CHECK:STDOUT: %.loc20_28.2: ref %Class = temporary %.loc20_26.3, %.loc20_28.1 [concrete = constants.%.0e3] -// CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%.loc14 [concrete = @Class.%.loc14] +// CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%field_decl.loc14 [concrete = @Class.%field_decl.loc14] // CHECK:STDOUT: %.loc20_37.1: ref %i32 = class_element_access %.loc20_28.2, element0 [concrete = constants.%.d44] // CHECK:STDOUT: %.loc20_37.2: %i32 = acquire_value %.loc20_37.1 // CHECK:STDOUT: %impl.elem0.loc20_37: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 9471b7c8d7ea..99a42e75dc65 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -98,28 +98,36 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { -// CHECK:STDOUT: %.loc16: %Inner.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc17: %Inner.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %Inner.elem = field_decl a, element0, %i32.loc16 in [concrete] { +// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %Inner.elem = field_decl b, element1, %i32.loc17 in [concrete] { +// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner -// CHECK:STDOUT: .a = %.loc16 -// CHECK:STDOUT: .b = %.loc17 +// CHECK:STDOUT: .a = %field_decl.loc16 +// CHECK:STDOUT: .b = %field_decl.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { -// CHECK:STDOUT: %.loc23: %Outer.elem = field_decl c, element0 [concrete] -// CHECK:STDOUT: %.loc24: %Outer.elem = field_decl d, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc23: %Outer.elem = field_decl c, element0, %Inner.ref.loc23 in [concrete] { +// CHECK:STDOUT: %Inner.ref.loc23: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc24: %Outer.elem = field_decl d, element1, %Inner.ref.loc24 in [concrete] { +// CHECK:STDOUT: %Inner.ref.loc24: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.c.d.899 [concrete = constants.%complete_type.890] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer // CHECK:STDOUT: .Inner = -// CHECK:STDOUT: .c = %.loc23 -// CHECK:STDOUT: .d = %.loc24 +// CHECK:STDOUT: .c = %field_decl.loc23 +// CHECK:STDOUT: .d = %field_decl.loc24 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeInner() -> out %return.param: %Inner; diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index bfcfc62e271c..4cf1118a14a1 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -149,14 +149,16 @@ class A { // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc23: %B.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %B.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n.9ed [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .Make = %B.Make.decl -// CHECK:STDOUT: .n = %.loc23 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A.F() -> out %return.param: %i32 { @@ -167,7 +169,7 @@ class A { // CHECK:STDOUT: %.loc26_19.1: ref %B = temporary_storage // CHECK:STDOUT: %B.Make.call: init %B to %.loc26_19.1 = call %Make.ref() // CHECK:STDOUT: %.loc26_19.2: ref %B = temporary %.loc26_19.1, %B.Make.call -// CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%.loc23 [concrete = @B.%.loc23] +// CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%field_decl [concrete = @B.%field_decl] // CHECK:STDOUT: %.loc26_20.1: ref %i32 = class_element_access %.loc26_19.2, element0 // CHECK:STDOUT: %.loc26_20.2: %i32 = acquire_value %.loc26_20.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/method/call_without_method_syntax.carbon b/toolchain/check/testdata/class/method/call_without_method_syntax.carbon index 82a49c660a63..c58c27287e58 100644 --- a/toolchain/check/testdata/class/method/call_without_method_syntax.carbon +++ b/toolchain/check/testdata/class/method/call_without_method_syntax.carbon @@ -193,7 +193,9 @@ fn CallViaAlias(p: Point) -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param2 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc7: %Point.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Point.elem = field_decl x, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -202,13 +204,13 @@ fn CallViaAlias(p: Point) -> i32 { // CHECK:STDOUT: .Get = %Point.Get.decl // CHECK:STDOUT: .Point = // CHECK:STDOUT: .First = %Point.First.decl -// CHECK:STDOUT: .x = %.loc7 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Point.Get(%self.param: %Point) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Point = name_ref self, %self -// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%.loc7 [concrete = @Point.%.loc7] +// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%field_decl [concrete = @Point.%field_decl] // CHECK:STDOUT: %.loc4_36.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc4_36.2: %i32 = acquire_value %.loc4_36.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -222,7 +224,7 @@ fn CallViaAlias(p: Point) -> i32 { // CHECK:STDOUT: fn @Point.First(%self.param: %Point, %other.param: %Point) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Point = name_ref self, %self -// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%.loc7 [concrete = @Point.%.loc7] +// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%field_decl [concrete = @Point.%field_decl] // CHECK:STDOUT: %.loc5_59.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc5_59.2: %i32 = acquire_value %.loc5_59.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/method/generic_method.carbon b/toolchain/check/testdata/class/method/generic_method.carbon index 214de5530eaf..57f184c361da 100644 --- a/toolchain/check/testdata/class/method/generic_method.carbon +++ b/toolchain/check/testdata/class/method/generic_method.carbon @@ -33,7 +33,6 @@ fn Class(T: type).F(unused self, unused n: T) {} // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %a.patt: %pattern_type.51d = ref_binding_pattern a [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %pattern_type.36e: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %self.param_patt: %pattern_type.36e = value_param_pattern [symbolic] @@ -98,8 +97,6 @@ fn Class(T: type).F(unused self, unused n: T) {} // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_14.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc15_14.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %a.patt: @Class.%pattern_type (%pattern_type.51d) = ref_binding_pattern a [symbolic = %a.patt (constants.%a.patt)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc15_14.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc15_14.1 [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.loc15_14.1) [symbolic = %Class.F.type (constants.%Class.F.type)] @@ -108,7 +105,9 @@ fn Class(T: type).F(unused self, unused n: T) {} // CHECK:STDOUT: %complete_type.loc18_1.2: = complete_type_witness %struct_type.a [symbolic = %complete_type.loc18_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc16: @Class.%Class.elem (%Class.elem) = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl a, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.2 [symbolic = %T.loc15_14.1 (constants.%T)] +// CHECK:STDOUT: } // CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] { // CHECK:STDOUT: %self.param_patt.loc20: @Class.F.%pattern_type.loc17_8 (%pattern_type.36e) = value_param_pattern [symbolic = %self.param_patt.loc17 (constants.%self.param_patt)] // CHECK:STDOUT: %self.patt.loc20: @Class.F.%pattern_type.loc17_8 (%pattern_type.36e) = wrapper_binding_pattern self, %self.param_patt.loc20 [symbolic = %self.patt.loc17 (constants.%self.patt)] @@ -131,7 +130,7 @@ fn Class(T: type).F(unused self, unused n: T) {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = -// CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -162,8 +161,6 @@ fn Class(T: type).F(unused self, unused n: T) {} // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.944 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d -// CHECK:STDOUT: %a.patt => constants.%a.patt // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %Class.F.type => constants.%Class.F.type diff --git a/toolchain/check/testdata/class/method/method.carbon b/toolchain/check/testdata/class/method/method.carbon index 27f2ed40988d..559ae1c2c583 100644 --- a/toolchain/check/testdata/class/method/method.carbon +++ b/toolchain/check/testdata/class/method/method.carbon @@ -358,7 +358,9 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, %Class.F.decl [concrete = constants.%Class.F] // CHECK:STDOUT: %A: %Class.F.type = alias_binding A, %F.ref [concrete = constants.%Class.F] -// CHECK:STDOUT: %.loc21: %Class.elem = field_decl k, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl k, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.k.e7c [concrete = constants.%complete_type.d82] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -367,13 +369,13 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .A = %A -// CHECK:STDOUT: .k = %.loc21 +// CHECK:STDOUT: .k = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Class.F(%self.param.loc24: %Class) -> out %return.param.loc24: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc24 -// CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%.loc21 [concrete = @Class.%.loc21] +// CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc25_14.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc25_14.2: %i32 = acquire_value %.loc25_14.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index 10cc7a9f557f..20b39242d789 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -176,9 +176,18 @@ fn F(a: Outer*) { // CHECK:STDOUT: %Outer.F.decl: %Outer.F.type = fn_decl @Outer.F [concrete = constants.%Outer.F] {} {} // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [concrete = constants.%Inner] {} {} // CHECK:STDOUT: %Outer.H.decl: %Outer.H.type = fn_decl @Outer.H [concrete = constants.%Outer.H] {} {} -// CHECK:STDOUT: %.loc40: %Outer.elem.3ef = field_decl po, element0 [concrete] -// CHECK:STDOUT: %.loc41: %Outer.elem.3ef = field_decl qo, element1 [concrete] -// CHECK:STDOUT: %.loc42: %Outer.elem.fe3 = field_decl pi, element2 [concrete] +// CHECK:STDOUT: %field_decl.loc40: %Outer.elem.3ef = field_decl po, element0, %ptr.loc40 in [concrete] { +// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Outer [concrete = constants.%Outer] +// CHECK:STDOUT: %ptr.loc40: type = ptr_type %Self.ref [concrete = constants.%ptr.286] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc41: %Outer.elem.3ef = field_decl qo, element1, %ptr.loc41 in [concrete] { +// CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer] +// CHECK:STDOUT: %ptr.loc41: type = ptr_type %Outer.ref [concrete = constants.%ptr.286] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc42: %Outer.elem.fe3 = field_decl pi, element2, %ptr.loc42 in [concrete] { +// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %Inner.decl [concrete = constants.%Inner] +// CHECK:STDOUT: %ptr.loc42: type = ptr_type %Inner.ref [concrete = constants.%ptr.001] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.po.qo.pi [concrete = constants.%complete_type.a2f] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -188,26 +197,35 @@ fn F(a: Outer*) { // CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: .Outer = // CHECK:STDOUT: .H = %Outer.H.decl -// CHECK:STDOUT: .po = %.loc40 -// CHECK:STDOUT: .qo = %.loc41 -// CHECK:STDOUT: .pi = %.loc42 +// CHECK:STDOUT: .po = %field_decl.loc40 +// CHECK:STDOUT: .qo = %field_decl.loc41 +// CHECK:STDOUT: .pi = %field_decl.loc42 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { -// CHECK:STDOUT: %.loc23: %Inner.elem.df9 = field_decl pi, element0 [concrete] -// CHECK:STDOUT: %.loc24: %Inner.elem.2a2 = field_decl po, element1 [concrete] -// CHECK:STDOUT: %.loc25: %Inner.elem.df9 = field_decl qi, element2 [concrete] +// CHECK:STDOUT: %field_decl.loc23: %Inner.elem.df9 = field_decl pi, element0, %ptr.loc23 in [concrete] { +// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Inner [concrete = constants.%Inner] +// CHECK:STDOUT: %ptr.loc23: type = ptr_type %Self.ref [concrete = constants.%ptr.001] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc24: %Inner.elem.2a2 = field_decl po, element1, %ptr.loc24 in [concrete] { +// CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer] +// CHECK:STDOUT: %ptr.loc24: type = ptr_type %Outer.ref [concrete = constants.%ptr.286] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc25: %Inner.elem.df9 = field_decl qi, element2, %ptr.loc25 in [concrete] { +// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] +// CHECK:STDOUT: %ptr.loc25: type = ptr_type %Inner.ref [concrete = constants.%ptr.001] +// CHECK:STDOUT: } // CHECK:STDOUT: %Inner.G.decl: %Inner.G.type = fn_decl @Inner.G [concrete = constants.%Inner.G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.pi.po.qi [concrete = constants.%complete_type.cab] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner -// CHECK:STDOUT: .pi = %.loc23 +// CHECK:STDOUT: .pi = %field_decl.loc23 // CHECK:STDOUT: .Outer = -// CHECK:STDOUT: .po = %.loc24 +// CHECK:STDOUT: .po = %field_decl.loc24 // CHECK:STDOUT: .Inner = -// CHECK:STDOUT: .qi = %.loc25 +// CHECK:STDOUT: .qi = %field_decl.loc25 // CHECK:STDOUT: .G = %Inner.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: @@ -356,7 +374,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref.loc46: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc46_26: ref %Outer = deref %a.ref.loc46 -// CHECK:STDOUT: %pi.ref.loc46: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42] +// CHECK:STDOUT: %pi.ref.loc46: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42] // CHECK:STDOUT: %.loc46_29.1: ref %ptr.001 = class_element_access %.loc46_26, element2 // CHECK:STDOUT: %.loc46_29.2: %ptr.001 = acquire_value %.loc46_29.1 // CHECK:STDOUT: %.loc46_21: type = splice_block %ptr.loc46 [concrete = constants.%ptr.001] { @@ -370,7 +388,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: %a.ref.loc48_3: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc48_4.1: ref %Outer = deref %a.ref.loc48_3 -// CHECK:STDOUT: %po.ref.loc48: %Outer.elem.3ef = name_ref po, @Outer.%.loc40 [concrete = @Outer.%.loc40] +// CHECK:STDOUT: %po.ref.loc48: %Outer.elem.3ef = name_ref po, @Outer.%field_decl.loc40 [concrete = @Outer.%field_decl.loc40] // CHECK:STDOUT: %.loc48_4.2: ref %ptr.286 = class_element_access %.loc48_4.1, element0 // CHECK:STDOUT: %a.ref.loc48_11: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %impl.elem0.loc48: %.c11 = impl_witness_access constants.%Copy.impl_witness.d13, element0 [concrete = constants.%ptr.as.Copy.impl.Op.629] @@ -381,7 +399,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: assign %.loc48_4.2, %ptr.as.Copy.impl.Op.call.loc48 // CHECK:STDOUT: %a.ref.loc49_3: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc49_4.1: ref %Outer = deref %a.ref.loc49_3 -// CHECK:STDOUT: %qo.ref: %Outer.elem.3ef = name_ref qo, @Outer.%.loc41 [concrete = @Outer.%.loc41] +// CHECK:STDOUT: %qo.ref: %Outer.elem.3ef = name_ref qo, @Outer.%field_decl.loc41 [concrete = @Outer.%field_decl.loc41] // CHECK:STDOUT: %.loc49_4.2: ref %ptr.286 = class_element_access %.loc49_4.1, element1 // CHECK:STDOUT: %a.ref.loc49_11: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %impl.elem0.loc49: %.c11 = impl_witness_access constants.%Copy.impl_witness.d13, element0 [concrete = constants.%ptr.as.Copy.impl.Op.629] @@ -392,11 +410,11 @@ fn F(a: Outer*) { // CHECK:STDOUT: assign %.loc49_4.2, %ptr.as.Copy.impl.Op.call.loc49 // CHECK:STDOUT: %a.ref.loc50_3: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc50_4.1: ref %Outer = deref %a.ref.loc50_3 -// CHECK:STDOUT: %pi.ref.loc50_4: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42] +// CHECK:STDOUT: %pi.ref.loc50_4: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42] // CHECK:STDOUT: %.loc50_4.2: ref %ptr.001 = class_element_access %.loc50_4.1, element2 // CHECK:STDOUT: %a.ref.loc50_11: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc50_12.1: ref %Outer = deref %a.ref.loc50_11 -// CHECK:STDOUT: %pi.ref.loc50_12: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42] +// CHECK:STDOUT: %pi.ref.loc50_12: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42] // CHECK:STDOUT: %.loc50_12.2: ref %ptr.001 = class_element_access %.loc50_12.1, element2 // CHECK:STDOUT: %.loc50_12.3: %ptr.001 = acquire_value %.loc50_12.2 // CHECK:STDOUT: %impl.elem0.loc50: %.6b7 = impl_witness_access constants.%Copy.impl_witness.f7d, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b47] @@ -407,7 +425,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: assign %.loc50_4.2, %ptr.as.Copy.impl.Op.call.loc50 // CHECK:STDOUT: %b.ref.loc51: %ptr.001 = name_ref b, %b // CHECK:STDOUT: %.loc51_4.1: ref %Inner = deref %b.ref.loc51 -// CHECK:STDOUT: %po.ref.loc51: %Inner.elem.2a2 = name_ref po, @Inner.%.loc24 [concrete = @Inner.%.loc24] +// CHECK:STDOUT: %po.ref.loc51: %Inner.elem.2a2 = name_ref po, @Inner.%field_decl.loc24 [concrete = @Inner.%field_decl.loc24] // CHECK:STDOUT: %.loc51_4.2: ref %ptr.286 = class_element_access %.loc51_4.1, element1 // CHECK:STDOUT: %a.ref.loc51: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %impl.elem0.loc51: %.c11 = impl_witness_access constants.%Copy.impl_witness.d13, element0 [concrete = constants.%ptr.as.Copy.impl.Op.629] @@ -418,11 +436,11 @@ fn F(a: Outer*) { // CHECK:STDOUT: assign %.loc51_4.2, %ptr.as.Copy.impl.Op.call.loc51 // CHECK:STDOUT: %b.ref.loc52: %ptr.001 = name_ref b, %b // CHECK:STDOUT: %.loc52_4.1: ref %Inner = deref %b.ref.loc52 -// CHECK:STDOUT: %pi.ref.loc52_4: %Inner.elem.df9 = name_ref pi, @Inner.%.loc23 [concrete = @Inner.%.loc23] +// CHECK:STDOUT: %pi.ref.loc52_4: %Inner.elem.df9 = name_ref pi, @Inner.%field_decl.loc23 [concrete = @Inner.%field_decl.loc23] // CHECK:STDOUT: %.loc52_4.2: ref %ptr.001 = class_element_access %.loc52_4.1, element0 // CHECK:STDOUT: %a.ref.loc52: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc52_12.1: ref %Outer = deref %a.ref.loc52 -// CHECK:STDOUT: %pi.ref.loc52_12: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42] +// CHECK:STDOUT: %pi.ref.loc52_12: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42] // CHECK:STDOUT: %.loc52_12.2: ref %ptr.001 = class_element_access %.loc52_12.1, element2 // CHECK:STDOUT: %.loc52_12.3: %ptr.001 = acquire_value %.loc52_12.2 // CHECK:STDOUT: %impl.elem0.loc52: %.6b7 = impl_witness_access constants.%Copy.impl_witness.f7d, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b47] @@ -433,11 +451,11 @@ fn F(a: Outer*) { // CHECK:STDOUT: assign %.loc52_4.2, %ptr.as.Copy.impl.Op.call.loc52 // CHECK:STDOUT: %b.ref.loc53: %ptr.001 = name_ref b, %b // CHECK:STDOUT: %.loc53_4.1: ref %Inner = deref %b.ref.loc53 -// CHECK:STDOUT: %qi.ref: %Inner.elem.df9 = name_ref qi, @Inner.%.loc25 [concrete = @Inner.%.loc25] +// CHECK:STDOUT: %qi.ref: %Inner.elem.df9 = name_ref qi, @Inner.%field_decl.loc25 [concrete = @Inner.%field_decl.loc25] // CHECK:STDOUT: %.loc53_4.2: ref %ptr.001 = class_element_access %.loc53_4.1, element2 // CHECK:STDOUT: %a.ref.loc53: %ptr.286 = name_ref a, %a // CHECK:STDOUT: %.loc53_12.1: ref %Outer = deref %a.ref.loc53 -// CHECK:STDOUT: %pi.ref.loc53: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42] +// CHECK:STDOUT: %pi.ref.loc53: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42] // CHECK:STDOUT: %.loc53_12.2: ref %ptr.001 = class_element_access %.loc53_12.1, element2 // CHECK:STDOUT: %.loc53_12.3: %ptr.001 = acquire_value %.loc53_12.2 // CHECK:STDOUT: %impl.elem0.loc53: %.6b7 = impl_witness_access constants.%Copy.impl_witness.f7d, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b47] diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index ef8168f85bb3..453f963cc114 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -149,19 +149,21 @@ fn G(o: Outer) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { -// CHECK:STDOUT: %.loc17: %Inner.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Inner.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner -// CHECK:STDOUT: .n = %.loc17 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%oi.param: %Inner) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %oi.ref: %Inner = name_ref oi, %oi -// CHECK:STDOUT: %n.ref: %Inner.elem = name_ref n, @Inner.%.loc17 [concrete = @Inner.%.loc17] +// CHECK:STDOUT: %n.ref: %Inner.elem = name_ref n, @Inner.%field_decl [concrete = @Inner.%field_decl] // CHECK:STDOUT: %.loc22_12.1: ref %i32 = class_element_access %oi.ref, element0 // CHECK:STDOUT: %.loc22_12.2: %i32 = acquire_value %.loc22_12.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index c63bd14bfd47..447cb1fc4620 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -86,8 +86,8 @@ class A { // CHECK:STDOUT: %struct_type.a.a92: type = struct_type {.a: %i32} [concrete] // CHECK:STDOUT: %complete_type.388: = complete_type_witness %struct_type.a.a92 [concrete] // CHECK:STDOUT: %pattern_type.9ef: type = pattern_type %A [concrete] -// CHECK:STDOUT: %a.patt.17c: %pattern_type.9ef = ref_binding_pattern a [concrete] -// CHECK:STDOUT: %a.var_patt: %pattern_type.9ef = var_pattern %a.patt.17c [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.9ef = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.9ef = var_pattern %a.patt [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] @@ -109,8 +109,8 @@ class A { // CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %A.val: %A = struct_value (%int_1.0c6) [concrete] // CHECK:STDOUT: %pattern_type.e78: type = pattern_type %B [concrete] -// CHECK:STDOUT: %b.patt.245: %pattern_type.e78 = ref_binding_pattern b [concrete] -// CHECK:STDOUT: %b.var_patt: %pattern_type.e78 = var_pattern %b.patt.245 [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.e78 = ref_binding_pattern b [concrete] +// CHECK:STDOUT: %b.var_patt: %pattern_type.e78 = var_pattern %b.patt [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] @@ -119,8 +119,8 @@ class A { // CHECK:STDOUT: %int_2.295: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %B.val: %B = struct_value (%int_2.295) [concrete] // CHECK:STDOUT: %pattern_type.ca8: type = pattern_type %C [concrete] -// CHECK:STDOUT: %c.patt.a75: %pattern_type.ca8 = ref_binding_pattern c [concrete] -// CHECK:STDOUT: %c.var_patt: %pattern_type.ca8 = var_pattern %c.patt.a75 [concrete] +// CHECK:STDOUT: %c.patt: %pattern_type.ca8 = ref_binding_pattern c [concrete] +// CHECK:STDOUT: %c.var_patt: %pattern_type.ca8 = var_pattern %c.patt [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] @@ -129,8 +129,8 @@ class A { // CHECK:STDOUT: %int_3.410: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_3.410) [concrete] // CHECK:STDOUT: %pattern_type.a0b: type = pattern_type %D [concrete] -// CHECK:STDOUT: %d.patt.60f: %pattern_type.a0b = ref_binding_pattern d [concrete] -// CHECK:STDOUT: %d.var_patt: %pattern_type.a0b = var_pattern %d.patt.60f [concrete] +// CHECK:STDOUT: %d.patt: %pattern_type.a0b = ref_binding_pattern d [concrete] +// CHECK:STDOUT: %d.var_patt: %pattern_type.a0b = var_pattern %d.patt [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] @@ -177,7 +177,9 @@ class A { // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %A.AF.decl: %A.AF.type = fn_decl @A.AF [concrete = constants.%A.AF] {} {} -// CHECK:STDOUT: %.loc50: %A.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %A.elem = field_decl a, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.a92 [concrete = constants.%complete_type.388] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -185,14 +187,16 @@ class A { // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .AF = %A.AF.decl -// CHECK:STDOUT: .a = %.loc50 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %B.BF.decl: %B.BF.type = fn_decl @B.BF [concrete = constants.%B.BF] {} {} -// CHECK:STDOUT: %.loc20: %B.elem = field_decl b, element0 [concrete] +// CHECK:STDOUT: %field_decl: %B.elem = field_decl b, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.b.0bf [concrete = constants.%complete_type.330] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -200,7 +204,7 @@ class A { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .BF = %B.BF.decl -// CHECK:STDOUT: .b = %.loc20 +// CHECK:STDOUT: .b = %field_decl // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = // CHECK:STDOUT: .AF = @@ -210,7 +214,9 @@ class A { // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} // CHECK:STDOUT: %D.DF.decl: %D.DF.type = fn_decl @D.DF [concrete = constants.%D.DF] {} {} // CHECK:STDOUT: %C.CF.decl: %C.CF.type = fn_decl @C.CF [concrete = constants.%C.CF] {} {} -// CHECK:STDOUT: %.loc46: %C.elem = field_decl c, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl c, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.c.73d [concrete = constants.%complete_type.8f8] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -218,7 +224,7 @@ class A { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: .CF = %C.CF.decl -// CHECK:STDOUT: .c = %.loc46 +// CHECK:STDOUT: .c = %field_decl // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = // CHECK:STDOUT: .C = @@ -229,7 +235,9 @@ class A { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %D.F.decl: %D.F.type = fn_decl @D.F [concrete = constants.%D.F] {} {} // CHECK:STDOUT: %D.DF.decl: %D.DF.type = fn_decl @D.DF [concrete = constants.%D.DF] {} {} -// CHECK:STDOUT: %.loc28: %D.elem = field_decl d, element0 [concrete] +// CHECK:STDOUT: %field_decl: %D.elem = field_decl d, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.d.bde [concrete = constants.%complete_type.5d0] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -237,7 +245,7 @@ class A { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .F = %D.F.decl // CHECK:STDOUT: .DF = %D.DF.decl -// CHECK:STDOUT: .d = %.loc28 +// CHECK:STDOUT: .d = %field_decl // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = // CHECK:STDOUT: .C = @@ -270,7 +278,7 @@ class A { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %a: ref %A = wrapper_binding a, %a.var // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: %pattern_type.9ef = ref_binding_pattern a [concrete = constants.%a.patt.17c] +// CHECK:STDOUT: %a.patt: %pattern_type.9ef = ref_binding_pattern a [concrete = constants.%a.patt] // CHECK:STDOUT: %a.var_patt: %pattern_type.9ef = var_pattern %a.patt [concrete = constants.%a.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %B = var_storage %b.var_patt @@ -290,7 +298,7 @@ class A { // CHECK:STDOUT: %B.ref: type = name_ref B, @A.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %b: ref %B = wrapper_binding b, %b.var // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b.patt: %pattern_type.e78 = ref_binding_pattern b [concrete = constants.%b.patt.245] +// CHECK:STDOUT: %b.patt: %pattern_type.e78 = ref_binding_pattern b [concrete = constants.%b.patt] // CHECK:STDOUT: %b.var_patt: %pattern_type.e78 = var_pattern %b.patt [concrete = constants.%b.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var_storage %c.var_patt @@ -310,7 +318,7 @@ class A { // CHECK:STDOUT: %C.ref: type = name_ref C, @B.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = wrapper_binding c, %c.var // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %c.patt: %pattern_type.ca8 = ref_binding_pattern c [concrete = constants.%c.patt.a75] +// CHECK:STDOUT: %c.patt: %pattern_type.ca8 = ref_binding_pattern c [concrete = constants.%c.patt] // CHECK:STDOUT: %c.var_patt: %pattern_type.ca8 = var_pattern %c.patt [concrete = constants.%c.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %D = var_storage %d.var_patt @@ -330,7 +338,7 @@ class A { // CHECK:STDOUT: %D.ref: type = name_ref D, @C.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %d: ref %D = wrapper_binding d, %d.var // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %d.patt: %pattern_type.a0b = ref_binding_pattern d [concrete = constants.%d.patt.60f] +// CHECK:STDOUT: %d.patt: %pattern_type.a0b = ref_binding_pattern d [concrete = constants.%d.patt] // CHECK:STDOUT: %d.var_patt: %pattern_type.a0b = var_pattern %d.patt [concrete = constants.%d.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %AF.ref: %A.AF.type = name_ref AF, @A.%A.AF.decl [concrete = constants.%A.AF] diff --git a/toolchain/check/testdata/class/self/raw_self.carbon b/toolchain/check/testdata/class/self/raw_self.carbon index 06411351e77a..51874d97db97 100644 --- a/toolchain/check/testdata/class/self/raw_self.carbon +++ b/toolchain/check/testdata/class/self/raw_self.carbon @@ -163,7 +163,9 @@ fn Class.G(self, r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %return.param.loc17: ref %tuple.type.e55 = out_param call_param2 // CHECK:STDOUT: %return.loc17: ref %tuple.type.e55 = return_slot %return.param.loc17 // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc18: %Class.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -171,13 +173,13 @@ fn Class.G(self, r#self: i32) -> (i32, i32) { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .G = %Class.G.decl -// CHECK:STDOUT: .n = %.loc18 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Class.F(%self.param.loc21_16: ref %Class, %self.param.loc21_28: %i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc22_3: ref %Class = name_ref self, %self.loc21_16 -// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18] +// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc22: ref %i32 = class_element_access %self.ref.loc22_3, element0 // CHECK:STDOUT: %self.ref.loc22_12: %i32 = name_ref r#self, %self.loc21_28 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -192,7 +194,7 @@ fn Class.G(self, r#self: i32) -> (i32, i32) { // CHECK:STDOUT: fn @Class.G(%self.param.loc25_12: %Class, %self.param.loc25_24: %i32) -> out %return.param.loc25: %tuple.type.e55 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc26_11: %Class = name_ref self, %self.loc25_12 -// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18] +// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc26_15.1: ref %i32 = class_element_access %self.ref.loc26_11, element0 // CHECK:STDOUT: %.loc26_15.2: %i32 = acquire_value %.loc26_15.1 // CHECK:STDOUT: %self.ref.loc26_19: %i32 = name_ref r#self, %self.loc25_24 diff --git a/toolchain/check/testdata/class/self/self.carbon b/toolchain/check/testdata/class/self/self.carbon index 6aecdbe63158..a8659323b4b8 100644 --- a/toolchain/check/testdata/class/self/self.carbon +++ b/toolchain/check/testdata/class/self/self.carbon @@ -209,7 +209,9 @@ class Class { // CHECK:STDOUT: %return.param.loc7: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc7: ref %i32 = return_slot %return.param.loc7 // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc9: %Class.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -217,13 +219,13 @@ class Class { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .G = %Class.G.decl -// CHECK:STDOUT: .n = %.loc9 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Class.F(%self.param.loc13: %Class) -> out %return.param.loc13: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc13 -// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc9 [concrete = @Class.%.loc9] +// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc14_14.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc14_14.2: %i32 = acquire_value %.loc14_14.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -237,7 +239,7 @@ class Class { // CHECK:STDOUT: fn @Class.G(%self.param.loc17: ref %Class) -> out %return.param.loc17: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref %Class = name_ref self, %self.loc17 -// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc9 [concrete = @Class.%.loc9] +// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc18_14.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc18_14.2: %i32 = acquire_value %.loc18_14.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/class/self/self_type.carbon b/toolchain/check/testdata/class/self/self_type.carbon index 8b8dcc152dfb..55a629fa0a8e 100644 --- a/toolchain/check/testdata/class/self/self_type.carbon +++ b/toolchain/check/testdata/class/self/self_type.carbon @@ -139,7 +139,10 @@ fn Class.F(self) -> i32 { // CHECK:STDOUT: %return.param: ref %Class = out_param call_param0 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc22: %Class.elem = field_decl p, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl p, element0, %ptr in [concrete] { +// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.7ee] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.p [concrete = constants.%complete_type.126] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -147,13 +150,13 @@ fn Class.F(self) -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .Make = %Class.Make.decl -// CHECK:STDOUT: .p = %.loc22 +// CHECK:STDOUT: .p = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Class.F(%self.param.loc25: %Class) -> out %return.param.loc25: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc25 -// CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%.loc22 [concrete = @Class.%.loc22] +// CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc26_16.1: ref %ptr.7ee = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc26_16.2: %ptr.7ee = acquire_value %.loc26_16.1 // CHECK:STDOUT: %.loc26_11.1: ref %Class = deref %.loc26_16.2 diff --git a/toolchain/check/testdata/class/syntactic_merge.carbon b/toolchain/check/testdata/class/syntactic_merge.carbon index 413afeb2af45..91af6527056b 100644 --- a/toolchain/check/testdata/class/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/syntactic_merge.carbon @@ -1235,7 +1235,10 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %.loc5: %Base.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Base.elem = field_decl a, element0, %.loc5_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %Base.F.decl: %Base.F.type.48cdab.1 = fn_decl @Base.F.loc7 [concrete = constants.%Base.F.bd5be1.1] { // CHECK:STDOUT: %self.param_patt: %pattern_type.912 = ref_param_pattern [concrete = constants.%self.param_patt] // CHECK:STDOUT: %self.patt: %pattern_type.912 = wrapper_binding_pattern self, %self.param_patt [concrete = constants.%self.patt] @@ -1249,7 +1252,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc5 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .Base = // CHECK:STDOUT: } @@ -1259,7 +1262,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: fn @Base.F.loc17(%self.param: ref %Base) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc5 [concrete = @Base.%.loc5] +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl] // CHECK:STDOUT: %.loc18_7: ref %empty_tuple.type = class_element_access %self.ref, element0 // 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 () [concrete = constants.%empty_tuple] 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 20639d96c047..50f3292d3bee 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -696,7 +696,7 @@ fn G() { // CHECK:STDOUT: %a.param: = value_param call_param1 // CHECK:STDOUT: %.1: = splice_block [concrete = ] { // CHECK:STDOUT: %T.ref.loc21_50: %Class = name_ref T, %T.loc21_7.2 [symbolic = %T.loc21_7.1 (constants.%T.f25)] -// CHECK:STDOUT: %t.ref: %Class.elem = name_ref t, @Class.%.loc5 [concrete = @Class.%.loc5] +// CHECK:STDOUT: %t.ref: %Class.elem = name_ref t, @Class.%field_decl [concrete = @Class.%field_decl] // CHECK:STDOUT: %.loc21_51.2: ref type = class_element_access %T.ref.loc21_50, element0 [symbolic = %.loc21_51.1 (constants.%.9dd)] // CHECK:STDOUT: %.loc21_51.3: type = acquire_value %.loc21_51.2 // CHECK:STDOUT: } @@ -716,13 +716,15 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc5: %Class.elem = field_decl t, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Class.elem = field_decl t, element0, %.loc5 in [concrete] { +// CHECK:STDOUT: %.loc5: type = type_literal type [concrete = type] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.t [concrete = constants.%complete_type.509] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .t = %.loc5 +// CHECK:STDOUT: .t = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @HoldsType(%T.loc8_18.2: %Class) { diff --git a/toolchain/check/testdata/facet/runtime_value.carbon b/toolchain/check/testdata/facet/runtime_value.carbon index 099f38f0ee42..b41ad8c90be7 100644 --- a/toolchain/check/testdata/facet/runtime_value.carbon +++ b/toolchain/check/testdata/facet/runtime_value.carbon @@ -142,7 +142,7 @@ fn F(T: Z) { // CHECK:STDOUT: fn @F(%c.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %i.ref: %C.elem = name_ref i, @C.%.loc6 [concrete = @C.%.loc6] +// CHECK:STDOUT: %i.ref: %C.elem = name_ref i, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc13_22.1: ref %I.type = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc13_22.2: %I.type = acquire_value %.loc13_22.1 // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -167,7 +167,7 @@ fn F(T: Z) { // CHECK:STDOUT: fn @F(%c.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %ij.ref: %C.elem = name_ref ij, @C.%.loc7 [concrete = @C.%.loc7] +// CHECK:STDOUT: %ij.ref: %C.elem = name_ref ij, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc21_22.1: ref %facet_type = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc21_22.2: %facet_type = acquire_value %.loc21_22.1 // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index da79c2f08667..ae4ef85e1398 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -132,9 +132,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %return.patt.427: %pattern_type.b38 = return_slot_pattern %return.param_patt.4bb, %Optional.5ec [symbolic] // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic] // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: %IntRange.as.Iterate.impl.Next.type = struct_value () [symbolic] -// CHECK:STDOUT: %start.patt.477: %pattern_type.142cb7.1 = ref_binding_pattern start [symbolic] // CHECK:STDOUT: %IntRange.elem.bed: type = unbound_element_type %IntRange.2c4, %Int.67af24.1 [symbolic] -// CHECK:STDOUT: %end.patt.535: %pattern_type.142cb7.1 = ref_binding_pattern end [symbolic] // CHECK:STDOUT: %struct_type.start.end.d4d: type = struct_type {.start: %Int.67af24.1, .end: %Int.67af24.1} [symbolic] // CHECK:STDOUT: %complete_type.aa1: = complete_type_witness %struct_type.start.end.d4d [symbolic] // CHECK:STDOUT: %require_complete.5d9: = require_complete_type %IntRange.2c4 [symbolic] @@ -207,9 +205,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %IntRange.Make.type.d27: type = fn_type @IntRange.Make, @IntRange(%int_32) [concrete] // CHECK:STDOUT: %IntRange.Make.9ef: %IntRange.Make.type.d27 = struct_value () [concrete] -// CHECK:STDOUT: %start.patt.c23: %pattern_type.6b6 = ref_binding_pattern start [concrete] // CHECK:STDOUT: %IntRange.elem.6b1: type = unbound_element_type %IntRange.bbd, %i32 [concrete] -// CHECK:STDOUT: %end.patt.46f: %pattern_type.6b6 = ref_binding_pattern end [concrete] // CHECK:STDOUT: %struct_type.start.end.e93: type = struct_type {.start: %i32, .end: %i32} [concrete] // CHECK:STDOUT: %complete_type.ec7: = complete_type_witness %struct_type.start.end.e93 [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] @@ -297,7 +293,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] -// CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] +// CHECK:STDOUT: %Core.ref.loc4: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_17.2: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N.loc4_17.1 (constants.%N)] @@ -417,14 +413,11 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %IntRange.Make.type: type = fn_type @IntRange.Make, @IntRange(%N.loc4_17.1) [symbolic = %IntRange.Make.type (constants.%IntRange.Make.type.522)] // CHECK:STDOUT: %IntRange.Make: @IntRange.%IntRange.Make.type (%IntRange.Make.type.522) = struct_value () [symbolic = %IntRange.Make (constants.%IntRange.Make.8ef)] -// CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N.loc4_17.1) [symbolic = %Int (constants.%Int.67af24.1)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Int [symbolic = %require_complete (constants.%require_complete.4dfb92.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Int [symbolic = %pattern_type (constants.%pattern_type.142cb7.1)] -// CHECK:STDOUT: %start.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern start [symbolic = %start.patt (constants.%start.patt.477)] +// CHECK:STDOUT: %Int.loc22_32.2: type = class_type @Int, @Int(%N.loc4_17.1) [symbolic = %Int.loc22_32.2 (constants.%Int.67af24.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Int.loc22_32.2 [symbolic = %require_complete (constants.%require_complete.4dfb92.1)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N.loc4_17.1) [symbolic = %IntRange (constants.%IntRange.2c4)] -// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int [symbolic = %IntRange.elem (constants.%IntRange.elem.bed)] -// CHECK:STDOUT: %end.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern end [symbolic = %end.patt (constants.%end.patt.535)] -// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.%Int (%Int.67af24.1), .end: @IntRange.%Int (%Int.67af24.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.d4d)] +// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc22_32.2 [symbolic = %IntRange.elem (constants.%IntRange.elem.bed)] +// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.%Int.loc22_32.2 (%Int.67af24.1), .end: @IntRange.%Int.loc22_32.2 (%Int.67af24.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.d4d)] // CHECK:STDOUT: %complete_type.loc24_1.2: = complete_type_witness %struct_type.start.end [symbolic = %complete_type.loc24_1.2 (constants.%complete_type.aa1)] // CHECK:STDOUT: // CHECK:STDOUT: class { @@ -499,8 +492,18 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9: = impl_self_witness @IntRange.as.Iterate.impl.%Self.ref, @Iterate [symbolic = @IntRange.as.Iterate.impl.%.loc9_87 (constants.%.84c)] -// CHECK:STDOUT: %.loc22: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl start, element0 [concrete] -// CHECK:STDOUT: %.loc23: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl end, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc22: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl start, element0, %Int.loc22_32.1 in [concrete] { +// CHECK:STDOUT: %Core.ref.loc22: = name_ref Core, imports.%Core [concrete = imports.%Core] +// CHECK:STDOUT: %Int.ref.loc22: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] +// CHECK:STDOUT: %N.ref.loc22: Core.IntLiteral = name_ref N, %N.loc4_17.2 [symbolic = %N.loc4_17.1 (constants.%N)] +// CHECK:STDOUT: %Int.loc22_32.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc22_32.2 (constants.%Int.67af24.1)] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc23: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl end, element1, %Int.loc23 in [concrete] { +// CHECK:STDOUT: %Core.ref.loc23: = name_ref Core, imports.%Core [concrete = imports.%Core] +// CHECK:STDOUT: %Int.ref.loc23: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] +// CHECK:STDOUT: %N.ref.loc23: Core.IntLiteral = name_ref N, %N.loc4_17.2 [symbolic = %N.loc4_17.1 (constants.%N)] +// CHECK:STDOUT: %Int.loc23: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc22_32.2 (constants.%Int.67af24.1)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc24_1.1: = complete_type_witness constants.%struct_type.start.end.d4d [symbolic = %complete_type.loc24_1.2 (constants.%complete_type.aa1)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc24_1.1 // CHECK:STDOUT: @@ -508,8 +511,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: .Self = constants.%IntRange.2c4 // CHECK:STDOUT: .N = // CHECK:STDOUT: .Make = %IntRange.Make.decl -// CHECK:STDOUT: .start [private] = %.loc22 -// CHECK:STDOUT: .end [private] = %.loc23 +// CHECK:STDOUT: .start [private] = %field_decl.loc22 +// CHECK:STDOUT: .end [private] = %field_decl.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -599,7 +602,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: fn(%self.param: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.2c4)) -> out %return.param: @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_37.1 (%Int.67af24.1) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.2c4) = name_ref self, %self -// CHECK:STDOUT: %start.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange.elem (%IntRange.elem.bed) = name_ref start, @IntRange.%.loc22 [concrete = @IntRange.%.loc22] +// CHECK:STDOUT: %start.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange.elem (%IntRange.elem.bed) = name_ref start, @IntRange.%field_decl.loc22 [concrete = @IntRange.%field_decl.loc22] // CHECK:STDOUT: %.loc10_52.1: ref @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_37.1 (%Int.67af24.1) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc10_52.2: @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_37.1 (%Int.67af24.1) = acquire_value %.loc10_52.1 // CHECK:STDOUT: %impl.elem0.loc10_52.1: @IntRange.as.Iterate.impl.NewCursor.%.loc10_52.6 (%.c60) = impl_witness_access constants.%Copy.lookup_impl_witness.df6, element0 [symbolic = %impl.elem0.loc10_52.2 (constants.%impl.elem0.284)] @@ -713,7 +716,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: } // CHECK:STDOUT: %value.ref.loc13: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_37.1 (%Int.67af24.1) = name_ref value, %value // CHECK:STDOUT: %self.ref: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.2c4) = name_ref self, %self -// CHECK:STDOUT: %end.ref: @IntRange.as.Iterate.impl.Next.%IntRange.elem (%IntRange.elem.bed) = name_ref end, @IntRange.%.loc23 [concrete = @IntRange.%.loc23] +// CHECK:STDOUT: %end.ref: @IntRange.as.Iterate.impl.Next.%IntRange.elem (%IntRange.elem.bed) = name_ref end, @IntRange.%field_decl.loc23 [concrete = @IntRange.%field_decl.loc23] // CHECK:STDOUT: %.loc13_23.1: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_37.1 (%Int.67af24.1) = class_element_access %self.ref, element1 // CHECK:STDOUT: %.loc13_23.2: @IntRange.as.Iterate.impl.Next.%Int.loc11_37.1 (%Int.67af24.1) = acquire_value %.loc13_23.1 // CHECK:STDOUT: %OrderedWith.type.loc13_17.1: type = facet_type <@OrderedWith, @OrderedWith(constants.%Int.67af24.1)> [symbolic = %OrderedWith.type.loc13_17.2 (constants.%OrderedWith.type.6f8)] @@ -829,13 +832,10 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.522 // CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.8ef -// CHECK:STDOUT: %Int => constants.%Int.67af24.1 +// CHECK:STDOUT: %Int.loc22_32.2 => constants.%Int.67af24.1 // CHECK:STDOUT: %require_complete => constants.%require_complete.4dfb92.1 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.142cb7.1 -// CHECK:STDOUT: %start.patt => constants.%start.patt.477 // CHECK:STDOUT: %IntRange => constants.%IntRange.2c4 // CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.bed -// CHECK:STDOUT: %end.patt => constants.%end.patt.535 // CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.d4d // CHECK:STDOUT: %complete_type.loc24_1.2 => constants.%complete_type.aa1 // CHECK:STDOUT: } @@ -919,13 +919,10 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.d27 // CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.9ef -// CHECK:STDOUT: %Int => constants.%i32 +// CHECK:STDOUT: %Int.loc22_32.2 => constants.%i32 // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %start.patt => constants.%start.patt.c23 // CHECK:STDOUT: %IntRange => constants.%IntRange.bbd // CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.6b1 -// CHECK:STDOUT: %end.patt => constants.%end.patt.46f // CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.e93 // CHECK:STDOUT: %complete_type.loc24_1.2 => constants.%complete_type.ec7 // CHECK:STDOUT: } @@ -976,10 +973,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %struct_type.start.end.d4d: type = struct_type {.start: %Int.67af24.1, .end: %Int.67af24.1} [symbolic] // CHECK:STDOUT: %complete_type.aa1: = complete_type_witness %struct_type.start.end.d4d [symbolic] // CHECK:STDOUT: %IntRange.2c4: type = class_type @IntRange, @IntRange(%N) [symbolic] -// CHECK:STDOUT: %pattern_type.142cb7.1: type = pattern_type %Int.67af24.1 [symbolic] -// CHECK:STDOUT: %end.patt.535: %pattern_type.142cb7.1 = ref_binding_pattern end [symbolic] // CHECK:STDOUT: %IntRange.elem.bed: type = unbound_element_type %IntRange.2c4, %Int.67af24.1 [symbolic] -// CHECK:STDOUT: %start.patt.477: %pattern_type.142cb7.1 = ref_binding_pattern start [symbolic] // CHECK:STDOUT: %require_complete.4dfb92.1: = require_complete_type %Int.67af24.1 [symbolic] // CHECK:STDOUT: %IntRange.Make.type.522: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic] // CHECK:STDOUT: %IntRange.Make.8ef: %IntRange.Make.type.522 = struct_value () [symbolic] @@ -987,10 +981,11 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %return.param_patt.262: %pattern_type.1ea = out_param_pattern [symbolic] // CHECK:STDOUT: %return.patt.ca9: %pattern_type.1ea = return_slot_pattern %return.param_patt.262, invalid [symbolic] // CHECK:STDOUT: %.5c3: Core.Form = init_form %IntRange.2c4 [symbolic] +// CHECK:STDOUT: %pattern_type.142cb7.1: type = pattern_type %Int.67af24.1 [symbolic] // CHECK:STDOUT: %end.param_patt.8ab: %pattern_type.142cb7.1 = value_param_pattern [symbolic] // CHECK:STDOUT: %end.patt.5d9: %pattern_type.142cb7.1 = wrapper_binding_pattern end, %end.param_patt.8ab [symbolic] // CHECK:STDOUT: %start.param_patt: %pattern_type.142cb7.1 = value_param_pattern [symbolic] -// CHECK:STDOUT: %start.patt.f48: %pattern_type.142cb7.1 = wrapper_binding_pattern start, %start.param_patt [symbolic] +// CHECK:STDOUT: %start.patt: %pattern_type.142cb7.1 = wrapper_binding_pattern start, %start.param_patt [symbolic] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.lookup_impl_witness.df6: = lookup_impl_witness %Int.67af24.1, @Copy [symbolic] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int.67af24.1, (%Copy.lookup_impl_witness.df6) [symbolic] @@ -1007,10 +1002,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // 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.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %start.patt.c23: %pattern_type.6b6 = ref_binding_pattern start [concrete] // CHECK:STDOUT: %IntRange.elem.6b1: type = unbound_element_type %IntRange.bbd, %i32 [concrete] -// CHECK:STDOUT: %end.patt.46f: %pattern_type.6b6 = ref_binding_pattern end [concrete] // CHECK:STDOUT: %struct_type.start.end.e93: type = struct_type {.start: %i32, .end: %i32} [concrete] // CHECK:STDOUT: %complete_type.ec7: = complete_type_witness %struct_type.start.end.e93 [concrete] // CHECK:STDOUT: %pattern_type.0f3: type = pattern_type %IntRange.bbd [concrete] @@ -1054,8 +1046,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %Main.import_ref.e06: = import_ref Main//lib, loc24_1, loaded [symbolic = @IntRange.%complete_type (constants.%complete_type.aa1)] // CHECK:STDOUT: %Main.import_ref.663 = import_ref Main//lib, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.ac1 = import_ref Main//lib, loc5_57, unloaded -// CHECK:STDOUT: %Main.import_ref.d41 = import_ref Main//lib, loc22_20, unloaded -// CHECK:STDOUT: %Main.import_ref.60f = import_ref Main//lib, loc23_18, unloaded +// CHECK:STDOUT: %Main.import_ref.a12 = import_ref Main//lib, loc22_20, unloaded +// CHECK:STDOUT: %Main.import_ref.b83 = import_ref Main//lib, loc23_18, unloaded // CHECK:STDOUT: %Main.import_ref.6b552a.2: Core.IntLiteral = import_ref Main//lib, loc4_17, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] @@ -1093,11 +1085,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %IntRange.Make: @IntRange.%IntRange.Make.type (%IntRange.Make.type.522) = struct_value () [symbolic = %IntRange.Make (constants.%IntRange.Make.8ef)] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.67af24.1)] // CHECK:STDOUT: %require_complete: = require_complete_type %Int [symbolic = %require_complete (constants.%require_complete.4dfb92.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Int [symbolic = %pattern_type (constants.%pattern_type.142cb7.1)] -// CHECK:STDOUT: %start.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern start [symbolic = %start.patt (constants.%start.patt.477)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.2c4)] // CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int [symbolic = %IntRange.elem (constants.%IntRange.elem.bed)] -// CHECK:STDOUT: %end.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern end [symbolic = %end.patt (constants.%end.patt.535)] // CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.%Int (%Int.67af24.1), .end: @IntRange.%Int (%Int.67af24.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.d4d)] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.start.end [symbolic = %complete_type (constants.%complete_type.aa1)] // CHECK:STDOUT: @@ -1107,8 +1096,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.663 // CHECK:STDOUT: .Make = imports.%Main.import_ref.ac1 -// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.d41 -// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.60f +// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.a12 +// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.b83 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1157,7 +1146,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.67af24.1)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Int [symbolic = %pattern_type.1 (constants.%pattern_type.142cb7.1)] // CHECK:STDOUT: %start.param_patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = value_param_pattern [symbolic = %start.param_patt (constants.%start.param_patt)] -// CHECK:STDOUT: %start.patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = wrapper_binding_pattern start, %start.param_patt [symbolic = %start.patt (constants.%start.patt.f48)] +// CHECK:STDOUT: %start.patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = wrapper_binding_pattern start, %start.param_patt [symbolic = %start.patt (constants.%start.patt)] // CHECK:STDOUT: %end.param_patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = value_param_pattern [symbolic = %end.param_patt (constants.%end.param_patt.8ab)] // CHECK:STDOUT: %end.patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = wrapper_binding_pattern end, %end.param_patt [symbolic = %end.patt (constants.%end.patt.5d9)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.2c4)] @@ -1214,11 +1203,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.8ef // CHECK:STDOUT: %Int => constants.%Int.67af24.1 // CHECK:STDOUT: %require_complete => constants.%require_complete.4dfb92.1 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.142cb7.1 -// CHECK:STDOUT: %start.patt => constants.%start.patt.477 // CHECK:STDOUT: %IntRange => constants.%IntRange.2c4 // CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.bed -// CHECK:STDOUT: %end.patt => constants.%end.patt.535 // CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.d4d // CHECK:STDOUT: %complete_type => constants.%complete_type.aa1 // CHECK:STDOUT: } @@ -1228,7 +1214,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %Int => constants.%Int.67af24.1 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.142cb7.1 // CHECK:STDOUT: %start.param_patt => constants.%start.param_patt -// CHECK:STDOUT: %start.patt => constants.%start.patt.f48 +// CHECK:STDOUT: %start.patt => constants.%start.patt // CHECK:STDOUT: %end.param_patt => constants.%end.param_patt.8ab // CHECK:STDOUT: %end.patt => constants.%end.patt.5d9 // CHECK:STDOUT: %IntRange => constants.%IntRange.2c4 @@ -1247,11 +1233,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.9ef // CHECK:STDOUT: %Int => constants.%i32 // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %start.patt => constants.%start.patt.c23 // CHECK:STDOUT: %IntRange => constants.%IntRange.bbd // CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.6b1 -// CHECK:STDOUT: %end.patt => constants.%end.patt.46f // CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.e93 // CHECK:STDOUT: %complete_type => constants.%complete_type.ec7 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 45f7a8bf03e5..52ed1c92fb31 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -162,13 +162,17 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc19: %C.elem = field_decl arr, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl arr, element0, %array_type in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: %int_100: Core.IntLiteral = int_value 100 [concrete = constants.%int_100] +// CHECK:STDOUT: %array_type: type = array_type %int_100, %i32 [concrete = constants.%array_type] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.arr.fdc [concrete = constants.%complete_type.18e] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .arr = %.loc19 +// CHECK:STDOUT: .arr = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Wrap.Make(@Wrap.%T.loc15_13.2: type) { diff --git a/toolchain/check/testdata/generic/complete_type.carbon b/toolchain/check/testdata/generic/complete_type.carbon index f87f2058222f..8df6eb5b8cfa 100644 --- a/toolchain/check/testdata/generic/complete_type.carbon +++ b/toolchain/check/testdata/generic/complete_type.carbon @@ -93,8 +93,6 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: %A.generic: %A.type = struct_value () [concrete] // CHECK:STDOUT: %A.47a: type = class_type @A, @A(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %v.patt.a77: %pattern_type.51d = ref_binding_pattern v [symbolic] // CHECK:STDOUT: %A.elem.d41: type = unbound_element_type %A.47a, %T [symbolic] // CHECK:STDOUT: %struct_type.v.a4d: type = struct_type {.v: %T} [symbolic] // CHECK:STDOUT: %complete_type.136: = complete_type_witness %struct_type.v.a4d [symbolic] @@ -104,8 +102,6 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: %x.patt: %pattern_type.b3e = wrapper_binding_pattern x, %x.param_patt [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.e39: type = pattern_type %B [concrete] -// CHECK:STDOUT: %v.patt.f3a: %pattern_type.e39 = ref_binding_pattern v [concrete] // CHECK:STDOUT: %A.elem.483: type = unbound_element_type %A.d32, %B [concrete] // CHECK:STDOUT: %struct_type.v.410: type = struct_type {.v: %B} [concrete] // CHECK:STDOUT: %complete_type.a68: = complete_type_witness %struct_type.v.410 [concrete] @@ -167,22 +163,22 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc6_10.1 [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc6_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] -// CHECK:STDOUT: %v.patt: @A.%pattern_type (%pattern_type.51d) = ref_binding_pattern v [symbolic = %v.patt (constants.%v.patt.a77)] // CHECK:STDOUT: %A: type = class_type @A, @A(%T.loc6_10.1) [symbolic = %A (constants.%A.47a)] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %T.loc6_10.1 [symbolic = %A.elem (constants.%A.elem.d41)] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: @A.%T.loc6_10.1 (%T)} [symbolic = %struct_type.v (constants.%struct_type.v.a4d)] // CHECK:STDOUT: %complete_type.loc8_1.2: = complete_type_witness %struct_type.v [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.136)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc7: @A.%A.elem (%A.elem.d41) = field_decl v, element0 [concrete] +// CHECK:STDOUT: %field_decl: @A.%A.elem (%A.elem.d41) = field_decl v, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_10.2 [symbolic = %T.loc6_10.1 (constants.%T)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc8_1.1: = complete_type_witness constants.%struct_type.v.a4d [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.136)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc8_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.47a // CHECK:STDOUT: .T = -// CHECK:STDOUT: .v = %.loc7 +// CHECK:STDOUT: .v = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -202,8 +198,6 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e39 -// CHECK:STDOUT: %v.patt => constants.%v.patt.f3a // CHECK:STDOUT: %A => constants.%A.d32 // CHECK:STDOUT: %A.elem => constants.%A.elem.483 // CHECK:STDOUT: %struct_type.v => constants.%struct_type.v.410 diff --git a/toolchain/check/testdata/generic/local.carbon b/toolchain/check/testdata/generic/local.carbon index ed20aa206b69..b38355ec66da 100644 --- a/toolchain/check/testdata/generic/local.carbon +++ b/toolchain/check/testdata/generic/local.carbon @@ -62,8 +62,6 @@ class C(C: type) { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.c79: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %x.patt.45e: %pattern_type.51d1c4.1 = ref_binding_pattern x [symbolic] // CHECK:STDOUT: %C.elem.7e2: type = unbound_element_type %C.c79, %T [symbolic] // CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %complete_type.735: = complete_type_witness %struct_type.x.0c5 [symbolic] @@ -74,8 +72,6 @@ class C(C: type) { // CHECK:STDOUT: %C.8eb: type = class_type @C, @C(%i32) [concrete] // 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.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %x.patt.211: %pattern_type.6b6 = ref_binding_pattern x [concrete] // CHECK:STDOUT: %C.elem.14f: type = unbound_element_type %C.8eb, %i32 [concrete] // CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] @@ -137,22 +133,22 @@ class C(C: type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc5_12.1 [symbolic = %require_complete (constants.%require_complete.944)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc5_12.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)] -// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d1c4.1) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.45e)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc5_12.1) [symbolic = %C (constants.%C.c79)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc5_12.1 [symbolic = %C.elem (constants.%C.elem.7e2)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc5_12.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)] // CHECK:STDOUT: %complete_type.loc7_3.2: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.735)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc6: @C.%C.elem (%C.elem.7e2) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.7e2) = field_decl x, element0, %T.ref in [concrete] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_12.2 [symbolic = %T.loc5_12.1 (constants.%T)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc7_3.1: = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.735)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc7_3.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.c79 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .x = %.loc6 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -224,8 +220,6 @@ class C(C: type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 -// CHECK:STDOUT: %x.patt => constants.%x.patt.211 // CHECK:STDOUT: %C => constants.%C.8eb // CHECK:STDOUT: %C.elem => constants.%C.elem.14f // CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15 diff --git a/toolchain/check/testdata/generic/template/member_access.carbon b/toolchain/check/testdata/generic/template/member_access.carbon index 6bb68d2ed174..15caf977ab08 100644 --- a/toolchain/check/testdata/generic/template/member_access.carbon +++ b/toolchain/check/testdata/generic/template/member_access.carbon @@ -135,7 +135,7 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67db0b.1 [template] -// CHECK:STDOUT: %n.patt.c48: %pattern_type.6b6 = value_binding_pattern n [concrete] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = value_binding_pattern n [concrete] // CHECK:STDOUT: %.b3e: %T.67db0b.1 = splice_inst @F.%.loc6_17.4 [template] // CHECK:STDOUT: %.432: @F.%.loc6_17.7 (@F.%.loc6_17.7) = splice_inst @F.%.loc6_17.6 [template] // CHECK:STDOUT: %.43a: %i32 = splice_inst @F.%.loc6_17.9 [template] @@ -163,15 +163,15 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %inst.as_compatible.d98: = inst_value [concrete] { // CHECK:STDOUT: %.f8c: %C = as_compatible @F.%x.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %inst.splice_block.351: = inst_value [concrete] { -// CHECK:STDOUT: %.5f2: %i32 = splice_block %.1e9 { -// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc12 [concrete = @C.%.loc12] +// CHECK:STDOUT: %inst.splice_block.1c3: = inst_value [concrete] { +// CHECK:STDOUT: %.ba1: %i32 = splice_block %.1e9 { +// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.a48: ref %i32 = class_element_access %.f8c, element0 // CHECK:STDOUT: %.1e9: %i32 = acquire_value %.a48 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %inst.splice_block.f4f: = inst_value [concrete] { -// CHECK:STDOUT: %.ea2: %i32 = splice_block %.5f2 {} +// CHECK:STDOUT: %inst.splice_block.4ec: = inst_value [concrete] { +// CHECK:STDOUT: %.0b7: %i32 = splice_block %.ba1 {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.08f: = complete_type_witness %struct_type.m.n [concrete] // CHECK:STDOUT: %inst.as_compatible.bba: = inst_value [concrete] { @@ -239,7 +239,7 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %n: %i32 = wrapper_binding n, %.loc6_17.3 // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = value_binding_pattern n [concrete = constants.%n.patt.c48] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = value_binding_pattern n [concrete = constants.%n.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -270,10 +270,10 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %require_complete => constants.%complete_type.cdf // CHECK:STDOUT: %.loc6_17.4 => constants.%inst.as_compatible.d98 // CHECK:STDOUT: %.loc6_17.5 => invalid -// CHECK:STDOUT: %.loc6_17.6 => constants.%inst.splice_block.351 +// CHECK:STDOUT: %.loc6_17.6 => constants.%inst.splice_block.1c3 // CHECK:STDOUT: %.loc6_17.7 => constants.%i32 // CHECK:STDOUT: %.loc6_17.8 => invalid -// CHECK:STDOUT: %.loc6_17.9 => constants.%inst.splice_block.f4f +// CHECK:STDOUT: %.loc6_17.9 => constants.%inst.splice_block.4ec // CHECK:STDOUT: %.loc6_17.10 => invalid // CHECK:STDOUT: } // CHECK:STDOUT: @@ -318,7 +318,7 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [template] // CHECK:STDOUT: %.b3e: %T = splice_inst @F.%.loc10_11.3 [template] -// CHECK:STDOUT: %.1a3: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst @F.%.loc10_11.5 [template] +// CHECK:STDOUT: %.244: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst @F.%.loc10_11.5 [template] // CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.3aa: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic] // CHECK:STDOUT: %Self.294: %ImplicitAs.type.3aa = symbolic_binding Self, 1 [symbolic] @@ -326,9 +326,9 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.945: %ImplicitAs.WithSelf.Convert.type.97e = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.e23: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %assoc0.368: %ImplicitAs.assoc_type.e23 = assoc_entity element0, imports.%Core.import_ref.cb2 [concrete] -// CHECK:STDOUT: %.d1c: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst @F.%.loc10_17.5 [template] -// CHECK:STDOUT: %.521: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst @F.%.loc10_17.8 [template] -// CHECK:STDOUT: %.eec: %i32 = splice_inst @F.%.loc10_17.11 [template] +// CHECK:STDOUT: %.841: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst @F.%.loc10_17.5 [template] +// CHECK:STDOUT: %.cbd: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst @F.%.loc10_17.8 [template] +// CHECK:STDOUT: %.c63: %i32 = splice_inst @F.%.loc10_17.11 [template] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %struct_type.base.085: type = struct_type {.base: %C} [concrete] // CHECK:STDOUT: %complete_type.756: = complete_type_witness %struct_type.base.085 [concrete] @@ -391,27 +391,27 @@ fn G(d: D) -> i32 { // CHECK:STDOUT: %.loc10_11.4: @F.%T.loc9_16.1 (%T) = splice_inst %.loc10_11.3 [template = %.loc10_11.4 (constants.%.b3e)] // CHECK:STDOUT: %.loc10_11.5: = compound_member_access_action %.loc10_11.1, %n.ref [template] // CHECK:STDOUT: %.loc10_11.6: type = type_of_inst %.loc10_11.5 [template] -// CHECK:STDOUT: %.loc10_11.7: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.1a3)] +// CHECK:STDOUT: %.loc10_11.7: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.244)] // CHECK:STDOUT: %.loc10_17.5: = compound_member_access_action %.loc10_11.2, constants.%assoc0.368 [template] // CHECK:STDOUT: %.loc10_17.6: type = type_of_inst %.loc10_17.5 [template] -// CHECK:STDOUT: %.loc10_17.7: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.d1c)] +// CHECK:STDOUT: %.loc10_17.7: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.841)] // CHECK:STDOUT: %.loc10_17.8: = call_action (%.loc10_17.1), true [template] // CHECK:STDOUT: %.loc10_17.9: type = type_of_inst %.loc10_17.8 [template] -// CHECK:STDOUT: %.loc10_17.10: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.521)] +// CHECK:STDOUT: %.loc10_17.10: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.cbd)] // CHECK:STDOUT: %.loc10_17.11: = convert_to_category_action %.loc10_17.3, element10 [template] -// CHECK:STDOUT: %.loc10_17.12: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.eec)] +// CHECK:STDOUT: %.loc10_17.12: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.c63)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @F.%T.loc9_16.1 (%T)) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @F.%T.loc9_16.1 (%T) = name_ref x, %x // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc5 [concrete = @C.%.loc5] +// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc10_11.1: @F.%T.loc9_16.1 (%T) = splice_inst %.loc10_11.3 [template = %.loc10_11.4 (constants.%.b3e)] -// CHECK:STDOUT: %.loc10_11.2: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.1a3)] -// CHECK:STDOUT: %.loc10_17.1: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.d1c)] -// CHECK:STDOUT: %.loc10_17.2: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.521)] -// CHECK:STDOUT: %.loc10_17.3: %i32 = converted %.loc10_11.2, %.loc10_17.2 [template = %.loc10_17.10 (constants.%.521)] -// CHECK:STDOUT: %.loc10_17.4: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.eec)] +// CHECK:STDOUT: %.loc10_11.2: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.244)] +// CHECK:STDOUT: %.loc10_17.1: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.841)] +// CHECK:STDOUT: %.loc10_17.2: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.cbd)] +// CHECK:STDOUT: %.loc10_17.3: %i32 = converted %.loc10_11.2, %.loc10_17.2 [template = %.loc10_17.10 (constants.%.cbd)] +// CHECK:STDOUT: %.loc10_17.4: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.c63)] // CHECK:STDOUT: return %.loc10_17.4 // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/generic/template/unimplemented.carbon b/toolchain/check/testdata/generic/template/unimplemented.carbon index babbe8a2508f..9d6b9592f855 100644 --- a/toolchain/check/testdata/generic/template/unimplemented.carbon +++ b/toolchain/check/testdata/generic/template/unimplemented.carbon @@ -183,13 +183,15 @@ fn F(template c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .n = %.loc5 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%c.loc11_16.2: %C) { diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index b540e768c922..f70c97612a69 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -259,13 +259,15 @@ class X(U: type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Param { -// CHECK:STDOUT: %.loc9: %Param.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Param.elem = field_decl x, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x.a15 [concrete = constants.%complete_type.0c6] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Param -// CHECK:STDOUT: .x = %.loc9 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -323,7 +325,7 @@ class X(U: type) { // CHECK:STDOUT: %.loc21_27.1: ref %Param = temporary_storage // CHECK:STDOUT: %C.as.HasF.impl.F.call.loc21: init %Param to %.loc21_27.1 = call %impl.elem0.loc21() // CHECK:STDOUT: %.loc21_27.2: ref %Param = temporary %.loc21_27.1, %C.as.HasF.impl.F.call.loc21 -// CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%.loc9 [concrete = @Param.%.loc9] +// CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%field_decl [concrete = @Param.%field_decl] // CHECK:STDOUT: %.loc21_28.1: ref %i32 = class_element_access %.loc21_27.2, element0 // CHECK:STDOUT: %.loc21_28.2: %i32 = acquire_value %.loc21_28.1 // CHECK:STDOUT: %i32.loc21: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -339,7 +341,7 @@ class X(U: type) { // CHECK:STDOUT: %.loc22_27.1: ref %Param = temporary_storage // CHECK:STDOUT: %C.as.HasF.impl.F.call.loc22: init %Param to %.loc22_27.1 = call %impl.elem0.loc22_24() // CHECK:STDOUT: %.loc22_27.2: ref %Param = temporary %.loc22_27.1, %C.as.HasF.impl.F.call.loc22 -// CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%.loc9 [concrete = @Param.%.loc9] +// CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%field_decl [concrete = @Param.%field_decl] // CHECK:STDOUT: %.loc22_28.1: ref %i32 = class_element_access %.loc22_27.2, element0 // CHECK:STDOUT: %.loc22_28.2: %i32 = acquire_value %.loc22_28.1 // CHECK:STDOUT: %impl.elem0.loc22_28: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index 0d32f0312103..b14d56a8321e 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -242,7 +242,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: fn(%self.param: ref @A.as.I.impl.F.%A (%A.47a1de.2)) -> out %return.param: @A.as.I.impl.F.%ptr.loc13_22.1 (%ptr.e8f8f9.2) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: ref @A.as.I.impl.F.%A (%A.47a1de.2) = name_ref self, %self -// CHECK:STDOUT: %n.ref: @A.as.I.impl.F.%A.elem (%A.elem.d41ac1.2) = name_ref n, @A.%.loc4 [concrete = @A.%.loc4] +// CHECK:STDOUT: %n.ref: @A.as.I.impl.F.%A.elem (%A.elem.d41ac1.2) = name_ref n, @A.%field_decl [concrete = @A.%field_decl] // CHECK:STDOUT: %.loc14_17: ref @A.as.I.impl.F.%V (%V.67d) = class_element_access %self.ref, element0 // CHECK:STDOUT: %addr: @A.as.I.impl.F.%ptr.loc13_22.1 (%ptr.e8f8f9.2) = addr_of %.loc14_17 // CHECK:STDOUT: %impl.elem0.loc14_12.1: @A.as.I.impl.F.%.loc14_12.4 (%.be5) = impl_witness_access constants.%Copy.lookup_impl_witness.1da, element0 [symbolic = %impl.elem0.loc14_12.2 (constants.%impl.elem0.484)] diff --git a/toolchain/check/testdata/interop/cpp/basics/import/indirect.carbon b/toolchain/check/testdata/interop/cpp/basics/import/indirect.carbon index 4b1d489093a6..c5808502f60d 100644 --- a/toolchain/check/testdata/interop/cpp/basics/import/indirect.carbon +++ b/toolchain/check/testdata/interop/cpp/basics/import/indirect.carbon @@ -199,7 +199,7 @@ fn UseZ() -> Cpp.A.Z { // CHECK:STDOUT: %.loc10_12.1: ref %X = temporary_storage // CHECK:STDOUT: %F.call: init %X to %.loc10_12.1 = call %F.ref() // CHECK:STDOUT: %.loc10_12.2: ref %X = temporary %.loc10_12.1, %F.call -// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%.1 [concrete = @X.%.1] +// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%field_decl [concrete = @X.%field_decl] // CHECK:STDOUT: %.loc10_13.1: ref %i32 = class_element_access %.loc10_12.2, element0 // CHECK:STDOUT: %.loc10_13.2: %i32 = acquire_value %.loc10_13.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -319,7 +319,7 @@ fn UseZ() -> Cpp.A.Z { // CHECK:STDOUT: %ax.var_patt: %pattern_type.88a = var_pattern %ax.patt [concrete = constants.%ax.var_patt] // CHECK:STDOUT: } // CHECK:STDOUT: %ax.ref.loc10_11: ref %X = name_ref ax, %ax -// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%.1 [concrete = @X.%.1] +// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%field_decl [concrete = @X.%field_decl] // CHECK:STDOUT: %.loc10_13.1: ref %i32 = class_element_access %ax.ref.loc10_11, element0 // CHECK:STDOUT: %ax.ref.loc10_17: ref %X = name_ref ax, %ax // CHECK:STDOUT: %g.ref: %X.g.cpp_overload_set.type = name_ref g, imports.%X.g.cpp_overload_set.value [concrete = constants.%X.g.cpp_overload_set.value] @@ -411,7 +411,7 @@ fn UseZ() -> Cpp.A.Z { // CHECK:STDOUT: %.loc9_12.1: ref %Y.90c = temporary_storage // CHECK:STDOUT: %G.call: init %Y.90c to %.loc9_12.1 = call %G.ref() // CHECK:STDOUT: %.loc9_12.2: ref %Y.90c = temporary %.loc9_12.1, %G.call -// CHECK:STDOUT: %y.ref: %Y.elem.ab3 = name_ref y, @Y.1.%.1 [concrete = @Y.1.%.1] +// CHECK:STDOUT: %y.ref: %Y.elem.ab3 = name_ref y, @Y.1.%field_decl [concrete = @Y.1.%field_decl] // CHECK:STDOUT: %.loc9_13.1: ref %i32 = class_element_access %.loc9_12.2, element0 // CHECK:STDOUT: %.loc9_13.2: %i32 = acquire_value %.loc9_13.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -430,7 +430,7 @@ fn UseZ() -> Cpp.A.Z { // CHECK:STDOUT: %.loc15_12.1: ref %Y.e8d = temporary_storage // CHECK:STDOUT: %H.call: init %Y.e8d to %.loc15_12.1 = call %H.ref() // CHECK:STDOUT: %.loc15_12.2: ref %Y.e8d = temporary %.loc15_12.1, %H.call -// CHECK:STDOUT: %y.ref: %Y.elem.9a6 = name_ref y, @Y.2.%.1 [concrete = @Y.2.%.1] +// CHECK:STDOUT: %y.ref: %Y.elem.9a6 = name_ref y, @Y.2.%field_decl [concrete = @Y.2.%field_decl] // CHECK:STDOUT: %.loc15_13.1: ref %Z = class_element_access %.loc15_12.2, element0 // CHECK:STDOUT: %.loc15_13.2: %Z = acquire_value %.loc15_13.1 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/import/access.carbon b/toolchain/check/testdata/interop/cpp/class/import/access.carbon index 36c925051d24..86b772c70db1 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/access.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/access.carbon @@ -1646,7 +1646,7 @@ fn Call(var instance: Cpp.PublicPrivate) { // CHECK:STDOUT: fn @F(%s.param: %NonFunctionMemberPublic) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %s.ref: %NonFunctionMemberPublic = name_ref s, %s -// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%.1 [concrete = @NonFunctionMemberPublic.%.1] +// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%field_decl [concrete = @NonFunctionMemberPublic.%field_decl] // CHECK:STDOUT: %.loc8_36.1: ref %i32 = class_element_access %s.ref, element0 // CHECK:STDOUT: %.loc8_36.2: %i32 = acquire_value %.loc8_36.1 // CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -1691,7 +1691,7 @@ fn Call(var instance: Cpp.PublicPrivate) { // CHECK:STDOUT: fn @F(%d.param: %Derived) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%.1 [concrete = @NonFunctionMemberPublic.%.1] +// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%field_decl [concrete = @NonFunctionMemberPublic.%field_decl] // CHECK:STDOUT: %.loc12_36.1: %NonFunctionMemberPublic = as_compatible %d.ref // CHECK:STDOUT: %.loc12_36.2: ref %NonFunctionMemberPublic = class_element_access %.loc12_36.1, element0 // CHECK:STDOUT: %.loc12_36.3: ref %NonFunctionMemberPublic = converted %d.ref, %.loc12_36.2 @@ -1759,7 +1759,7 @@ fn Call(var instance: Cpp.PublicPrivate) { // CHECK:STDOUT: fn @Derived.F(%self.param: %Derived) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Derived = name_ref self, %self -// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberProtected.elem = name_ref instance_data, @NonFunctionMemberProtected.%.1 [concrete = @NonFunctionMemberProtected.%.1] +// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberProtected.elem = name_ref instance_data, @NonFunctionMemberProtected.%field_decl [concrete = @NonFunctionMemberProtected.%field_decl] // CHECK:STDOUT: %.loc10_41.1: %NonFunctionMemberProtected = as_compatible %self.ref // CHECK:STDOUT: %.loc10_41.2: ref %NonFunctionMemberProtected = class_element_access %.loc10_41.1, element0 // CHECK:STDOUT: %.loc10_41.3: ref %NonFunctionMemberProtected = converted %self.ref, %.loc10_41.2 diff --git a/toolchain/check/testdata/interop/cpp/class/import/base.carbon b/toolchain/check/testdata/interop/cpp/class/import/base.carbon index ad8a87098b06..5b31153689d0 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/base.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/base.carbon @@ -662,7 +662,7 @@ class V { // CHECK:STDOUT: fn @AccessDirect(%d.param: %FieldDerived) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %FieldDerived = name_ref d, %d -// CHECK:STDOUT: %a.ref: %FieldBase.elem = name_ref a, @FieldBase.%.1 [concrete = @FieldBase.%.1] +// CHECK:STDOUT: %a.ref: %FieldBase.elem = name_ref a, @FieldBase.%field_decl.1 [concrete = @FieldBase.%field_decl.1] // CHECK:STDOUT: %.loc8_11.1: %FieldBase = as_compatible %d.ref // CHECK:STDOUT: %.loc8_11.2: ref %FieldBase = class_element_access %.loc8_11.1, element0 // CHECK:STDOUT: %.loc8_11.3: ref %FieldBase = converted %d.ref, %.loc8_11.2 @@ -681,7 +681,7 @@ class V { // CHECK:STDOUT: %d.ref: %FieldDerived = name_ref d, %d // CHECK:STDOUT: %Cpp.ref.loc14: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %FieldBase.ref: type = name_ref FieldBase, imports.%FieldBase.decl [concrete = constants.%FieldBase] -// CHECK:STDOUT: %b.ref: %FieldBase.elem = name_ref b, @FieldBase.%.2 [concrete = @FieldBase.%.2] +// CHECK:STDOUT: %b.ref: %FieldBase.elem = name_ref b, @FieldBase.%field_decl.2 [concrete = @FieldBase.%field_decl.2] // CHECK:STDOUT: %.loc14_11.1: %FieldBase = as_compatible %d.ref // CHECK:STDOUT: %.loc14_11.2: ref %FieldBase = class_element_access %.loc14_11.1, element0 // CHECK:STDOUT: %.loc14_11.3: ref %FieldBase = converted %d.ref, %.loc14_11.2 diff --git a/toolchain/check/testdata/interop/cpp/class/import/class.carbon b/toolchain/check/testdata/interop/cpp/class/import/class.carbon index 04b27e9b7b84..44102bdea365 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/class.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/class.carbon @@ -474,7 +474,7 @@ fn GenericUse(p2: Generic(Cpp.Class1)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %bar.ref: %ptr.ec1 = name_ref bar, %bar // CHECK:STDOUT: %.loc8_47.1: ref %DataMemberBar = deref %bar.ref -// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%.1 [concrete = @DataMemberBar.%.1] +// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%field_decl [concrete = @DataMemberBar.%field_decl] // CHECK:STDOUT: %.loc8_47.2: ref %ptr.ec1 = class_element_access %.loc8_47.1, element0 // CHECK:STDOUT: %.loc8_47.3: %ptr.ec1 = acquire_value %.loc8_47.2 // CHECK:STDOUT: %.loc8_40: type = splice_block %ptr.loc8 [concrete = constants.%ptr.ec1] { diff --git a/toolchain/check/testdata/interop/cpp/class/import/field.carbon b/toolchain/check/testdata/interop/cpp/class/import/field.carbon index fdbafb0643ca..966dae7e1bf7 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/field.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/field.carbon @@ -257,20 +257,20 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: fn @F(%s.param: %Struct) -> out %return.param: %tuple.type.ccd { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %s.ref.loc8_11: %Struct = name_ref s, %s -// CHECK:STDOUT: %a.ref: %Struct.elem.da9 = name_ref a, @Struct.%.1 [concrete = @Struct.%.1] +// CHECK:STDOUT: %a.ref: %Struct.elem.da9 = name_ref a, @Struct.%field_decl.1 [concrete = @Struct.%field_decl.1] // CHECK:STDOUT: %.loc8_12.1: ref %i32 = class_element_access %s.ref.loc8_11, element0 // CHECK:STDOUT: %.loc8_12.2: %i32 = acquire_value %.loc8_12.1 // CHECK:STDOUT: %s.ref.loc8_16: %Struct = name_ref s, %s -// CHECK:STDOUT: %b.ref: %Struct.elem.da9 = name_ref b, @Struct.%.2 [concrete = @Struct.%.2] +// CHECK:STDOUT: %b.ref: %Struct.elem.da9 = name_ref b, @Struct.%field_decl.2 [concrete = @Struct.%field_decl.2] // CHECK:STDOUT: %.loc8_17.1: ref %i32 = class_element_access %s.ref.loc8_16, element1 // CHECK:STDOUT: %.loc8_17.2: %i32 = acquire_value %.loc8_17.1 // CHECK:STDOUT: %s.ref.loc8_22: %Struct = name_ref s, %s -// CHECK:STDOUT: %p.ref: %Struct.elem.905 = name_ref p, @Struct.%.3 [concrete = @Struct.%.3] +// CHECK:STDOUT: %p.ref: %Struct.elem.905 = name_ref p, @Struct.%field_decl.3 [concrete = @Struct.%field_decl.3] // CHECK:STDOUT: %.loc8_23.1: ref %ptr.d08 = class_element_access %s.ref.loc8_22, element2 // CHECK:STDOUT: %.loc8_23.2: %ptr.d08 = acquire_value %.loc8_23.1 // CHECK:STDOUT: %.loc8_21.1: ref %i32 = deref %.loc8_23.2 // CHECK:STDOUT: %s.ref.loc8_28: %Struct = name_ref s, %s -// CHECK:STDOUT: %q.ref: %Struct.elem.a19 = name_ref q, @Struct.%.5 [concrete = @Struct.%.5] +// CHECK:STDOUT: %q.ref: %Struct.elem.a19 = name_ref q, @Struct.%field_decl.4 [concrete = @Struct.%field_decl.4] // CHECK:STDOUT: %.loc8_29.1: ref %Optional.5b3 = class_element_access %s.ref.loc8_28, element3 // CHECK:STDOUT: %.loc8_29.2: %Optional.5b3 = acquire_value %.loc8_29.1 // CHECK:STDOUT: %.loc8_31: %Optional.Get.type.76f = specific_constant imports.%Core.import_ref.497, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Get.d19] @@ -283,7 +283,7 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: %.loc8_36.2: %ptr.d08 = converted %Optional.Get.call, %.loc8_36.1 // CHECK:STDOUT: %.loc8_27.1: ref %i32 = deref %.loc8_36.2 // CHECK:STDOUT: %s.ref.loc8_40: %Struct = name_ref s, %s -// CHECK:STDOUT: %r.ref: %Struct.elem.6a0 = name_ref r, @Struct.%.6 [concrete = @Struct.%.6] +// CHECK:STDOUT: %r.ref: %Struct.elem.6a0 = name_ref r, @Struct.%field_decl.5 [concrete = @Struct.%field_decl.5] // CHECK:STDOUT: %.loc8_41.1: ref %const.e2a = class_element_access %s.ref.loc8_40, element4 // CHECK:STDOUT: %.loc8_41.2: %const.e2a = acquire_value %.loc8_41.1 // CHECK:STDOUT: %.loc8_39.1: ref %i32 = deref %.loc8_41.2 @@ -361,7 +361,7 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: fn @F(%u.param: %Union) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %Union = name_ref u, %u -// CHECK:STDOUT: %a.ref: %Union.elem.291 = name_ref a, @Union.%.1 [concrete = @Union.%.1] +// CHECK:STDOUT: %a.ref: %Union.elem.291 = name_ref a, @Union.%field_decl.1 [concrete = @Union.%field_decl.1] // CHECK:STDOUT: %.loc8_11.1: ref %i32 = class_element_access %u.ref, element0 // CHECK:STDOUT: %.loc8_11.2: %i32 = acquire_value %.loc8_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -375,7 +375,7 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: fn @G(%u.param: %Union) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %Union = name_ref u, %u -// CHECK:STDOUT: %b.ref: %Union.elem.291 = name_ref b, @Union.%.2 [concrete = @Union.%.2] +// CHECK:STDOUT: %b.ref: %Union.elem.291 = name_ref b, @Union.%field_decl.2 [concrete = @Union.%field_decl.2] // CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %u.ref, element1 // CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -389,7 +389,7 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: fn @H(%u.param: %Union) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %Union = name_ref u, %u -// CHECK:STDOUT: %p.ref: %Union.elem.d1f = name_ref p, @Union.%.3 [concrete = @Union.%.3] +// CHECK:STDOUT: %p.ref: %Union.elem.d1f = name_ref p, @Union.%field_decl.3 [concrete = @Union.%field_decl.3] // CHECK:STDOUT: %.loc20_12.1: ref %ptr.d08 = class_element_access %u.ref, element2 // CHECK:STDOUT: %.loc20_12.2: %ptr.d08 = acquire_value %.loc20_12.1 // CHECK:STDOUT: %.loc20_10.1: ref %i32 = deref %.loc20_12.2 @@ -432,7 +432,7 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: fn @F(%s.param: %BitfieldStruct) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %s.ref: %BitfieldStruct = name_ref s, %s -// CHECK:STDOUT: %a.ref: %BitfieldStruct.elem = name_ref a, @BitfieldStruct.%.1 [concrete = @BitfieldStruct.%.1] +// CHECK:STDOUT: %a.ref: %BitfieldStruct.elem = name_ref a, @BitfieldStruct.%field_decl [concrete = @BitfieldStruct.%field_decl] // CHECK:STDOUT: %.loc8_11.1: ref %i32 = class_element_access %s.ref, element0 // CHECK:STDOUT: %.loc8_11.2: %i32 = acquire_value %.loc8_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -446,7 +446,7 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: fn @G(%s.param: %BitfieldUnion) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %s.ref: %BitfieldUnion = name_ref s, %s -// CHECK:STDOUT: %c.ref: %BitfieldUnion.elem = name_ref c, @BitfieldUnion.%.1 [concrete = @BitfieldUnion.%.1] +// CHECK:STDOUT: %c.ref: %BitfieldUnion.elem = name_ref c, @BitfieldUnion.%field_decl [concrete = @BitfieldUnion.%field_decl] // CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %s.ref, element0 // CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/interop/cpp/class/import/template.carbon b/toolchain/check/testdata/interop/cpp/class/import/template.carbon index 350113a3d8c9..3e6fc0d92cda 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/template.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/template.carbon @@ -213,7 +213,7 @@ fn G() { // CHECK:STDOUT: %bound_method.loc9: = bound_method %x.ref.loc9, %f.ref // CHECK:STDOUT: %f__carbon_thunk.call: init %empty_tuple.type = call imports.%f__carbon_thunk.decl(%x.ref.loc9) // CHECK:STDOUT: %x.ref.loc10: %A.614 = name_ref x, %x -// CHECK:STDOUT: %n.ref: %A.elem.708 = name_ref n, @A.1.%.2 [concrete = @A.1.%.2] +// CHECK:STDOUT: %n.ref: %A.elem.708 = name_ref n, @A.1.%field_decl [concrete = @A.1.%field_decl] // CHECK:STDOUT: %.loc10_11.1: ref %i32 = class_element_access %x.ref.loc10, element1 // CHECK:STDOUT: %.loc10_11.2: %i32 = acquire_value %.loc10_11.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] @@ -339,11 +339,11 @@ fn G() { // CHECK:STDOUT: %B.type: type = generic_class_type @B [concrete] // CHECK:STDOUT: %B.generic: %B.type = struct_value () [concrete] // CHECK:STDOUT: %B.60e: type = class_type @B, @B(%T) [symbolic] -// CHECK:STDOUT: %.ae6: @B.%.loc12_17.2 (@B.%.loc12_17.2) = splice_inst @B.%.loc12_17.1 [template] -// CHECK:STDOUT: %.535: type = splice_inst @B.%.loc12_17.4 [template] +// CHECK:STDOUT: %A.type: type = cpp_type_template_type A [concrete] +// CHECK:STDOUT: %A.template: %A.type = struct_value () [concrete] +// CHECK:STDOUT: %.ae6: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst @B.%.loc12_17.3 [template] +// CHECK:STDOUT: %.535: type = splice_inst @B.%.loc12_17.6 [template] // CHECK:STDOUT: %require_complete.01e: = require_complete_type %.535 [template] -// CHECK:STDOUT: %pattern_type.281: type = pattern_type %.535 [template] -// CHECK:STDOUT: %a.patt.438: %pattern_type.281 = ref_binding_pattern a [template] // CHECK:STDOUT: %B.elem.7af: type = unbound_element_type %B.60e, %.535 [template] // CHECK:STDOUT: %struct_type.a.be9: type = struct_type {.a: %.535} [template] // CHECK:STDOUT: %complete_type.7ab: = complete_type_witness %struct_type.a.be9 [template] @@ -365,8 +365,6 @@ fn G() { // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [concrete] // CHECK:STDOUT: %.ae8: type = custom_layout_type {size=4, align=4, .t@0: %i32} [concrete] // CHECK:STDOUT: %complete_type.ece: = complete_type_witness %.ae8 [concrete] -// CHECK:STDOUT: %pattern_type.b78: type = pattern_type %A [concrete] -// CHECK:STDOUT: %a.patt.fbf: %pattern_type.b78 = ref_binding_pattern a [concrete] // CHECK:STDOUT: %B.elem.1e0: type = unbound_element_type %B.bd8, %A [concrete] // CHECK:STDOUT: %struct_type.a.b63: type = struct_type {.a: %A} [concrete] // CHECK:STDOUT: %complete_type.594: = complete_type_witness %struct_type.a.b63 [concrete] @@ -388,6 +386,11 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .A = %A.template +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %A.template: %A.type = struct_value () [concrete = constants.%A.template] // CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] @@ -422,37 +425,41 @@ fn G() { // CHECK:STDOUT: %T.loc11_10.1: type = symbolic_binding T, 0 [symbolic = %T.loc11_10.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.loc12_17.1: = call_template_action clang_decl_id4C000002, (%T.loc11_10.1) [template] -// CHECK:STDOUT: %.loc12_17.2: type = type_of_inst %.loc12_17.1 [template] -// CHECK:STDOUT: %.loc12_17.3: @B.%.loc12_17.2 (@B.%.loc12_17.2) = splice_inst %.loc12_17.1 [template = %.loc12_17.3 (constants.%.ae6)] -// CHECK:STDOUT: %.loc12_17.4: = convert_to_value_action .inst{{[0-9A-F]+}}.loc12_17, type [template] -// CHECK:STDOUT: %.loc12_17.5: type = splice_inst %.loc12_17.4 [template = %.loc12_17.5 (constants.%.535)] -// CHECK:STDOUT: %require_complete: = require_complete_type %.loc12_17.5 [template = %require_complete (constants.%require_complete.01e)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %.loc12_17.5 [template = %pattern_type (constants.%pattern_type.281)] -// CHECK:STDOUT: %a.patt: @B.%pattern_type (%pattern_type.281) = ref_binding_pattern a [template = %a.patt (constants.%a.patt.438)] +// CHECK:STDOUT: %.loc12_17.3: = call_template_action clang_decl_id4C000002, (%T.loc11_10.1) [template] +// CHECK:STDOUT: %.loc12_17.4: type = type_of_inst %.loc12_17.3 [template] +// CHECK:STDOUT: %.loc12_17.5: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst %.loc12_17.3 [template = %.loc12_17.5 (constants.%.ae6)] +// CHECK:STDOUT: %.loc12_17.6: = convert_to_value_action %.loc12_17.1, type [template] +// CHECK:STDOUT: %.loc12_17.7: type = splice_inst %.loc12_17.6 [template = %.loc12_17.7 (constants.%.535)] +// CHECK:STDOUT: %require_complete: = require_complete_type %.loc12_17.7 [template = %require_complete (constants.%require_complete.01e)] // CHECK:STDOUT: %B: type = class_type @B, @B(%T.loc11_10.1) [symbolic = %B (constants.%B.60e)] -// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %.loc12_17.5 [template = %B.elem (constants.%B.elem.7af)] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @B.%.loc12_17.5 (%.535)} [template = %struct_type.a (constants.%struct_type.a.be9)] +// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %.loc12_17.7 [template = %B.elem (constants.%B.elem.7af)] +// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @B.%.loc12_17.7 (%.535)} [template = %struct_type.a (constants.%struct_type.a.be9)] // CHECK:STDOUT: %complete_type.loc13_1.2: = complete_type_witness %struct_type.a [template = %complete_type.loc13_1.2 (constants.%complete_type.7ab)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc12_8: @B.%B.elem (%B.elem.7af) = field_decl a, element0 [concrete] +// CHECK:STDOUT: %field_decl: @B.%B.elem (%B.elem.7af) = field_decl a, element0, %.loc12_17.2 in [concrete] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%A.template [concrete = constants.%A.template] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_10.2 [symbolic = %T.loc11_10.1 (constants.%T)] +// CHECK:STDOUT: %.loc12_17.1: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst %.loc12_17.3 [template = %.loc12_17.5 (constants.%.ae6)] +// CHECK:STDOUT: %.loc12_17.2: type = splice_inst %.loc12_17.6 [template = %.loc12_17.7 (constants.%.535)] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness constants.%struct_type.a.be9 [template = %complete_type.loc13_1.2 (constants.%complete_type.7ab)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B.60e // CHECK:STDOUT: .T = -// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .a = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%b.param: ref %B.bd8) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %b.ref: ref %B.bd8 = name_ref b, %b -// CHECK:STDOUT: %a.ref: %B.elem.1e0 = name_ref a, @B.%.loc12_8 [concrete = @B.%.loc12_8] +// CHECK:STDOUT: %a.ref: %B.elem.1e0 = name_ref a, @B.%field_decl [concrete = @B.%field_decl] // CHECK:STDOUT: %.loc16_4: ref %A = class_element_access %b.ref, element0 -// CHECK:STDOUT: %t.ref: %A.elem = name_ref t, @A.%.1 [concrete = @A.%.1] +// CHECK:STDOUT: %t.ref: %A.elem = name_ref t, @A.%field_decl [concrete = @A.%field_decl] // CHECK:STDOUT: %.loc16_6: ref %i32 = class_element_access %.loc16_4, element0 // CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff] // CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -475,14 +482,12 @@ fn G() { // CHECK:STDOUT: %T.loc11_10.1 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.loc12_17.1 => constants.%inst.splice_block.72d -// CHECK:STDOUT: %.loc12_17.2 => type -// CHECK:STDOUT: %.loc12_17.3 => constants.%A -// CHECK:STDOUT: %.loc12_17.4 => constants.%inst.splice_block.c26 +// CHECK:STDOUT: %.loc12_17.3 => constants.%inst.splice_block.72d +// CHECK:STDOUT: %.loc12_17.4 => type // CHECK:STDOUT: %.loc12_17.5 => constants.%A +// CHECK:STDOUT: %.loc12_17.6 => constants.%inst.splice_block.c26 +// CHECK:STDOUT: %.loc12_17.7 => constants.%A // CHECK:STDOUT: %require_complete => constants.%complete_type.ece -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.b78 -// CHECK:STDOUT: %a.patt => constants.%a.patt.fbf // CHECK:STDOUT: %B => constants.%B.bd8 // CHECK:STDOUT: %B.elem => constants.%B.elem.1e0 // CHECK:STDOUT: %struct_type.a => constants.%struct_type.a.b63 diff --git a/toolchain/check/testdata/interop/cpp/class/import/union.carbon b/toolchain/check/testdata/interop/cpp/class/import/union.carbon index 0b99677f3832..7aa0a9aa170d 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/union.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/union.carbon @@ -395,7 +395,7 @@ fn MyF(bar: Cpp.TemplateBar(Cpp.X)*); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %bar.ref: %ptr.ec1 = name_ref bar, %bar // CHECK:STDOUT: %.loc8_47.1: ref %DataMemberBar = deref %bar.ref -// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%.1 [concrete = @DataMemberBar.%.1] +// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%field_decl [concrete = @DataMemberBar.%field_decl] // CHECK:STDOUT: %.loc8_47.2: ref %ptr.ec1 = class_element_access %.loc8_47.1, element0 // CHECK:STDOUT: %.loc8_47.3: %ptr.ec1 = acquire_value %.loc8_47.2 // CHECK:STDOUT: %.loc8_40: type = splice_block %ptr.loc8 [concrete = constants.%ptr.ec1] { diff --git a/toolchain/check/testdata/interop/cpp/function/import/constexpr.carbon b/toolchain/check/testdata/interop/cpp/function/import/constexpr.carbon index e2f733b18771..8c54474bd3dc 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/constexpr.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/constexpr.carbon @@ -251,7 +251,7 @@ let a: array(i32, F()) = (1, 2, 3); // CHECK:STDOUT: %c.patt: %pattern_type.3cc = value_binding_pattern c [concrete = constants.%c.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref: %ConstexprC = name_ref c, %c -// CHECK:STDOUT: %a.ref: %ConstexprC.elem = name_ref a, @ConstexprC.%.1 [concrete = @ConstexprC.%.1] +// CHECK:STDOUT: %a.ref: %ConstexprC.elem = name_ref a, @ConstexprC.%field_decl [concrete = @ConstexprC.%field_decl] // CHECK:STDOUT: %.loc20_11.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc20_11.2: %i32 = acquire_value %.loc20_11.1 // CHECK:STDOUT: %impl.elem0.loc20: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/interop/cpp/macros/macros.carbon b/toolchain/check/testdata/interop/cpp/macros/macros.carbon index adf23c07f387..65f08b6dd5af 100644 --- a/toolchain/check/testdata/interop/cpp/macros/macros.carbon +++ b/toolchain/check/testdata/interop/cpp/macros/macros.carbon @@ -2224,9 +2224,9 @@ let _: C(1) = {} as C(Cpp.COUNT); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// CHECK:STDOUT: %b.ref: %SubA.elem = name_ref b, @SubA.%.1 [concrete = @SubA.%.1] +// CHECK:STDOUT: %b.ref: %SubA.elem = name_ref b, @SubA.%field_decl [concrete = @SubA.%field_decl] // CHECK:STDOUT: %.loc17_6.1: ref %SubB = class_element_access imports.%a_obj.var, element0 [concrete = constants.%.d13] -// CHECK:STDOUT: %c.ref: %SubB.elem = name_ref c, @SubB.%.1 [concrete = @SubB.%.1] +// CHECK:STDOUT: %c.ref: %SubB.elem = name_ref c, @SubB.%field_decl [concrete = @SubB.%field_decl] // CHECK:STDOUT: %.loc17_6.2: ref %i32 = class_element_access %.loc17_6.1, element0 [concrete = constants.%.010] // CHECK:STDOUT: %m.ref: ref %i32 = name_ref m, constants.%.010 [concrete = constants.%.010] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index 1a1bda9121fa..87dd8c756abb 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -93,7 +93,7 @@ fn Test() { // CHECK:STDOUT: %ImplicitAs.facet.1d0: %ImplicitAs.type.914 = facet_value %X, (%ImplicitAs.impl_witness.e7c) [concrete] // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.1f0: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet.1d0) [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %n.patt.ae8: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete] // CHECK:STDOUT: %Sink_i32.type: type = fn_type @Sink_i32 [concrete] // CHECK:STDOUT: %Sink_i32: %Sink_i32.type = struct_value () [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.6cb = value_param_pattern [concrete] @@ -167,7 +167,7 @@ fn Test() { // CHECK:STDOUT: %.loc23: = impl_self_witness @X.as.ImplicitAs.impl.%X.ref, @ImplicitAs, @ImplicitAs(constants.%i32) [concrete = constants.%.516] // CHECK:STDOUT: %Sink_i32.decl: %Sink_i32.type = fn_decl @Sink_i32 [concrete = constants.%Sink_i32] { // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.ae8] +// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] // CHECK:STDOUT: } { // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -250,13 +250,15 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: %.loc16: %X.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %X.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X -// CHECK:STDOUT: .n = %.loc16 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @i32.as.ImplicitAs.impl.Convert(%self.param: %i32) -> out %return.param: %X { @@ -278,7 +280,7 @@ fn Test() { // CHECK:STDOUT: fn @X.as.ImplicitAs.impl.Convert(%self.param: %X) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %X = name_ref self, %self -// CHECK:STDOUT: %n.ref: %X.elem = name_ref n, @X.%.loc16 [concrete = @X.%.loc16] +// CHECK:STDOUT: %n.ref: %X.elem = name_ref n, @X.%field_decl [concrete = @X.%field_decl] // CHECK:STDOUT: %.loc24_43.1: ref %i32 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc24_43.2: %i32 = acquire_value %.loc24_43.1 // CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] diff --git a/toolchain/check/testdata/packages/cross_package_export.carbon b/toolchain/check/testdata/packages/cross_package_export.carbon index 56629ce0ae54..5d5899f21887 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,13 +215,16 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- conflict.carbon @@ -294,7 +298,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -310,7 +314,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc -// CHECK:STDOUT: .x = imports.%Other.import_ref.d54 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d09 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_copy.carbon @@ -326,7 +330,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -342,7 +346,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc -// CHECK:STDOUT: .x = imports.%Other.import_ref.d54 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d09 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_indirect.carbon @@ -358,7 +362,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -374,7 +378,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa -// CHECK:STDOUT: .x = imports.%Other.import_ref.625 +// CHECK:STDOUT: .x = imports.%Other.import_ref.82f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export_import.carbon @@ -402,7 +406,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -428,7 +432,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc -// CHECK:STDOUT: .x = imports.%Other.import_ref.d54 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d09 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -471,7 +475,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -497,7 +501,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc -// CHECK:STDOUT: .x = imports.%Other.import_ref.d54 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d09 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -540,7 +544,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -566,7 +570,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc -// CHECK:STDOUT: .x = imports.%Other.import_ref.d54 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d09 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -607,7 +611,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -633,7 +637,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa -// CHECK:STDOUT: .x = imports.%Other.import_ref.625 +// CHECK:STDOUT: .x = imports.%Other.import_ref.82f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -675,7 +679,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -701,7 +705,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa -// CHECK:STDOUT: .x = imports.%Other.import_ref.625 +// CHECK:STDOUT: .x = imports.%Other.import_ref.82f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -742,7 +746,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name_indirect, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.328: = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.b97 = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.197 = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.de6 = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -768,7 +772,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.b97 -// CHECK:STDOUT: .x = imports.%Other.import_ref.197 +// CHECK:STDOUT: .x = imports.%Other.import_ref.de6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -815,7 +819,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -841,7 +845,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa -// CHECK:STDOUT: .x = imports.%Other.import_ref.625 +// CHECK:STDOUT: .x = imports.%Other.import_ref.82f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -939,7 +943,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -958,6 +962,6 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa -// CHECK:STDOUT: .x = imports.%Other.import_ref.625 +// CHECK:STDOUT: .x = imports.%Other.import_ref.82f // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/export_import.carbon b/toolchain/check/testdata/packages/export_import.carbon index def95f0588f1..ce11c901409d 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,13 +209,16 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -308,7 +312,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -331,7 +335,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -370,7 +374,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_export, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -394,7 +398,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -431,7 +435,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -454,7 +458,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -491,7 +495,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -514,7 +518,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -551,7 +555,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -574,7 +578,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -611,7 +615,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -634,7 +638,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -671,7 +675,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -694,7 +698,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -731,7 +735,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -754,7 +758,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -803,7 +807,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -826,7 +830,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -864,7 +868,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -888,7 +892,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/export_mixed.carbon b/toolchain/check/testdata/packages/export_mixed.carbon index 01247dcdc9ce..e729c52416a6 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,23 +143,29 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.9be] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %.loc9: %D.elem = field_decl y, element0 [concrete] +// CHECK:STDOUT: %field_decl: %D.elem = field_decl y, element0, %.loc9_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D -// CHECK:STDOUT: .y = %.loc9 +// CHECK:STDOUT: .y = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_import.carbon @@ -190,7 +197,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -207,7 +214,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name.carbon @@ -224,7 +231,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -241,7 +248,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_then_import.carbon @@ -277,7 +284,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -300,7 +307,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -337,7 +344,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -360,7 +367,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -397,7 +404,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -420,7 +427,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -494,7 +501,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -517,7 +524,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -564,10 +571,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.D: type = import_ref Main//base, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.5ab: = import_ref Main//base, loc10_1, loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.053 = import_ref Main//base, loc9_8, unloaded +// CHECK:STDOUT: %Main.import_ref.d27 = import_ref Main//base, loc9_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -599,7 +606,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "base.carbon"] { @@ -607,7 +614,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.54a -// CHECK:STDOUT: .y = imports.%Main.import_ref.053 +// CHECK:STDOUT: .y = imports.%Main.import_ref.d27 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/export_name.carbon b/toolchain/check/testdata/packages/export_name.carbon index ca449f39560e..3fc6677431ad 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,23 +233,29 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.9be] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .x = %.loc5 +// CHECK:STDOUT: .x = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { -// CHECK:STDOUT: %.loc10: %NSC.elem = field_decl y, element0 [concrete] +// CHECK:STDOUT: %field_decl: %NSC.elem = field_decl y, element0, %.loc10_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NSC -// CHECK:STDOUT: .y = %.loc10 +// CHECK:STDOUT: .y = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -272,10 +279,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//base, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: %Main.import_ref.5ab: = import_ref Main//base, loc11_1, loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.8d3 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.307 = import_ref Main//base, loc10_8, unloaded +// CHECK:STDOUT: %Main.import_ref.565 = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -293,7 +300,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { @@ -301,7 +308,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.8d3 -// CHECK:STDOUT: .y = imports.%Main.import_ref.307 +// CHECK:STDOUT: .y = imports.%Main.import_ref.565 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- not_reexporting.carbon @@ -344,10 +351,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.63c: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.17a = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.5c2 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -365,7 +372,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { @@ -373,7 +380,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.17a -// CHECK:STDOUT: .y = imports.%Main.import_ref.5c2 +// CHECK:STDOUT: .y = imports.%Main.import_ref.5a3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_in_impl.carbon @@ -416,10 +423,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.63c: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.17a = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.5c2 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -454,7 +461,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { @@ -462,7 +469,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.17a -// CHECK:STDOUT: .y = imports.%Main.import_ref.5c2 +// CHECK:STDOUT: .y = imports.%Main.import_ref.5a3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -522,10 +529,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export_export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.328: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.045 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.408 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.0fe = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.c12: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.45b = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.4ec = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.fe6 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -561,7 +568,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.045 -// CHECK:STDOUT: .x = imports.%Main.import_ref.408 +// CHECK:STDOUT: .x = imports.%Main.import_ref.0fe // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { @@ -569,7 +576,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.45b -// CHECK:STDOUT: .y = imports.%Main.import_ref.4ec +// CHECK:STDOUT: .y = imports.%Main.import_ref.fe6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -629,10 +636,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export_export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.328: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.045 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.408 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.0fe = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.c12: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.45b = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.4ec = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.fe6 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -667,7 +674,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.045 -// CHECK:STDOUT: .x = imports.%Main.import_ref.408 +// CHECK:STDOUT: .x = imports.%Main.import_ref.0fe // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { @@ -675,7 +682,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.45b -// CHECK:STDOUT: .y = imports.%Main.import_ref.4ec +// CHECK:STDOUT: .y = imports.%Main.import_ref.fe6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -761,7 +768,7 @@ private export C; // CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -777,7 +784,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_both.carbon @@ -814,10 +821,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//base, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: %Main.import_ref.5ab: = import_ref Main//base, loc11_1, loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.8d3 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.307 = import_ref Main//base, loc10_8, unloaded +// CHECK:STDOUT: %Main.import_ref.565 = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -852,7 +859,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { @@ -860,7 +867,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.8d3 -// CHECK:STDOUT: .y = imports.%Main.import_ref.307 +// CHECK:STDOUT: .y = imports.%Main.import_ref.565 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -920,10 +927,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.63c: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.17a = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.5c2 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -958,7 +965,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { @@ -966,7 +973,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.17a -// CHECK:STDOUT: .y = imports.%Main.import_ref.5c2 +// CHECK:STDOUT: .y = imports.%Main.import_ref.5a3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -1027,7 +1034,7 @@ private export C; // CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1044,7 +1051,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_repeat_export.carbon @@ -1067,7 +1074,7 @@ private export C; // CHECK:STDOUT: %Main.C: type = import_ref Main//repeat_export, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1090,7 +1097,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8 -// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec +// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -1125,7 +1132,7 @@ private export C; // CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1142,6 +1149,6 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.e47 -// CHECK:STDOUT: .x = imports.%Main.import_ref.c69 +// CHECK:STDOUT: .x = imports.%Main.import_ref.14f // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_export_name_member.carbon b/toolchain/check/testdata/packages/fail_export_name_member.carbon index 4fc0b723dd2b..69103a39cc93 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,13 +57,16 @@ export C.n; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc5: %C.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl n, element0, %.loc5_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .n = %.loc5 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_b.carbon @@ -78,7 +82,7 @@ export C.n; // CHECK:STDOUT: %Foo.C: type = import_ref Foo//a, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Foo.import_ref.9fc: = import_ref Foo//a, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Foo.import_ref.c61 = import_ref Foo//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Foo.import_ref.e5b = import_ref Foo//a, loc5_8, unloaded +// CHECK:STDOUT: %Foo.import_ref.e2c = import_ref Foo//a, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -93,6 +97,6 @@ export C.n; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Foo.import_ref.c61 -// CHECK:STDOUT: .n = imports.%Foo.import_ref.e5b +// CHECK:STDOUT: .n = imports.%Foo.import_ref.e2c // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/raw_core.carbon b/toolchain/check/testdata/packages/raw_core.carbon index e804e53e084d..360c724fc30d 100644 --- a/toolchain/check/testdata/packages/raw_core.carbon +++ b/toolchain/check/testdata/packages/raw_core.carbon @@ -275,13 +275,18 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Core { -// CHECK:STDOUT: %.loc3: %Core.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %field_decl: %Core.elem = field_decl n, element0, %i32 in [concrete] { +// CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] +// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Core -// CHECK:STDOUT: .n = %.loc3 +// CHECK:STDOUT: .n = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/patterns/underscore.carbon b/toolchain/check/testdata/patterns/underscore.carbon index b7a231cf3c62..2b798cd07135 100644 --- a/toolchain/check/testdata/patterns/underscore.carbon +++ b/toolchain/check/testdata/patterns/underscore.carbon @@ -512,6 +512,7 @@ fn F() -> {} { // 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._: type = struct_type {._: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type._ [concrete] @@ -534,7 +535,10 @@ fn F() -> {} { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc9: %C.elem = field_decl _, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl _, element0, %.loc9_11.2 in [concrete] { +// 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: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type._ [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/arrow.carbon b/toolchain/check/testdata/pointer/arrow.carbon index 7d55ddcf6d91..f2228a090849 100644 --- a/toolchain/check/testdata/pointer/arrow.carbon +++ b/toolchain/check/testdata/pointer/arrow.carbon @@ -85,7 +85,10 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %self: %C = wrapper_binding self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc17: %C.elem = field_decl field, element0 [concrete] +// CHECK:STDOUT: %field_decl: %C.elem = field_decl field, element0, %ptr in [concrete] { +// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %ptr: type = ptr_type %C.ref [concrete = constants.%ptr.6b6] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.field [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -93,7 +96,7 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .Member = %C.Member.decl // CHECK:STDOUT: .C = -// CHECK:STDOUT: .field = %.loc17 +// CHECK:STDOUT: .field = %field_decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.Member(%self.param: %C); @@ -114,19 +117,19 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: %C.Member.call.loc22: init %empty_tuple.type = call %C.Member.bound.loc22(%.loc22_6.2) // CHECK:STDOUT: %ptr.ref.loc24: %ptr.6b6 = name_ref ptr, %ptr.loc20_11 // CHECK:STDOUT: %.loc24_4: ref %C = deref %ptr.ref.loc24 -// CHECK:STDOUT: %field.ref.loc24: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17] +// CHECK:STDOUT: %field.ref.loc24: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc24_9: ref %ptr.6b6 = class_element_access %.loc24_4, element0 // CHECK:STDOUT: %ptr.ref.loc25: %ptr.6b6 = name_ref ptr, %ptr.loc20_11 // CHECK:STDOUT: %.loc25_6.1: ref %C = deref %ptr.ref.loc25 -// CHECK:STDOUT: %field.ref.loc25: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17] +// CHECK:STDOUT: %field.ref.loc25: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc25_6.2: ref %ptr.6b6 = class_element_access %.loc25_6.1, element0 // CHECK:STDOUT: %ptr.ref.loc27: %ptr.6b6 = name_ref ptr, %ptr.loc20_11 // CHECK:STDOUT: %.loc27_6.1: ref %C = deref %ptr.ref.loc27 -// CHECK:STDOUT: %field.ref.loc27_6: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17] +// CHECK:STDOUT: %field.ref.loc27_6: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc27_6.2: ref %ptr.6b6 = class_element_access %.loc27_6.1, element0 // CHECK:STDOUT: %.loc27_6.3: %ptr.6b6 = acquire_value %.loc27_6.2 // CHECK:STDOUT: %.loc27_13.1: ref %C = deref %.loc27_6.3 -// CHECK:STDOUT: %field.ref.loc27_13: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17] +// CHECK:STDOUT: %field.ref.loc27_13: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl] // CHECK:STDOUT: %.loc27_13.2: ref %ptr.6b6 = class_element_access %.loc27_13.1, element0 // CHECK:STDOUT: return // CHECK:STDOUT: } 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 23cf76dcd069..36cdf5c7f089 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -144,15 +144,19 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc27_16: %C.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc27_28: %C.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc27_16: %C.elem = field_decl a, element0, %i32.loc27_18 in [concrete] { +// CHECK:STDOUT: %i32.loc27_18: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc27_28: %C.elem = field_decl b, element1, %i32.loc27_30 in [concrete] { +// CHECK:STDOUT: %i32.loc27_30: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .a = %.loc27_16 -// CHECK:STDOUT: .b = %.loc27_28 +// CHECK:STDOUT: .a = %field_decl.loc27_16 +// CHECK:STDOUT: .b = %field_decl.loc27_28 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> out %return.param: %i32 { diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index a4f6ee65c0f5..587bb4573556 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -592,15 +592,19 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %.loc5_16: %D.elem = field_decl n, element0 [concrete] -// CHECK:STDOUT: %.loc5_28: %D.elem = field_decl m, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc5_16: %D.elem = field_decl n, element0, %i32.loc5_18 in [concrete] { +// CHECK:STDOUT: %i32.loc5_18: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc5_28: %D.elem = field_decl m, element1, %i32.loc5_30 in [concrete] { +// CHECK:STDOUT: %i32.loc5_30: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.n.m.fa1 [concrete = constants.%complete_type.237] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D -// CHECK:STDOUT: .n = %.loc5_16 -// CHECK:STDOUT: .m = %.loc5_28 +// CHECK:STDOUT: .n = %field_decl.loc5_16 +// CHECK:STDOUT: .m = %field_decl.loc5_28 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> out %return.param: %D { @@ -955,8 +959,8 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %P.D: type = import_ref P//library, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %P.import_ref.6bc: = import_ref P//library, loc5_35, loaded [concrete = constants.%complete_type.237] // CHECK:STDOUT: %P.import_ref.737 = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %P.import_ref.9f8 = import_ref P//library, loc5_16, unloaded -// CHECK:STDOUT: %P.import_ref.0cb = import_ref P//library, loc5_28, unloaded +// CHECK:STDOUT: %P.import_ref.e54 = import_ref P//library, loc5_16, unloaded +// CHECK:STDOUT: %P.import_ref.6c3 = import_ref P//library, loc5_28, unloaded // CHECK:STDOUT: %P.C: %C.type = import_ref P//library, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %P.import_ref.8f2: = import_ref P//library, loc4_18, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %P.import_ref.70e = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded @@ -1078,8 +1082,8 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%P.import_ref.737 -// CHECK:STDOUT: .n = imports.%P.import_ref.9f8 -// CHECK:STDOUT: .m = imports.%P.import_ref.0cb +// CHECK:STDOUT: .n = imports.%P.import_ref.e54 +// CHECK:STDOUT: .m = imports.%P.import_ref.6c3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%P.import_ref.d2a: %i32) [from "library.carbon"] { diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index 957667476bc0..7cfd111569a1 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -134,15 +134,19 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %.loc16: %C.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %.loc17: %C.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %field_decl.loc16: %C.elem = field_decl a, element0, %i32.loc16 in [concrete] { +// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } +// CHECK:STDOUT: %field_decl.loc17: %C.elem = field_decl b, element1, %i32.loc17 in [concrete] { +// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .a = %.loc16 -// CHECK:STDOUT: .b = %.loc17 +// CHECK:STDOUT: .a = %field_decl.loc16 +// CHECK:STDOUT: .b = %field_decl.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> out %return.param: %C { diff --git a/toolchain/sem_ir/field.h b/toolchain/sem_ir/field.h index dfae79991052..ee918f595e8a 100644 --- a/toolchain/sem_ir/field.h +++ b/toolchain/sem_ir/field.h @@ -13,10 +13,12 @@ namespace Carbon::SemIR { // A class field. struct Field : public Printable { ElementIndex index; + NameId name_id; SemIR::InstId initializer_id; auto Print(llvm::raw_ostream& out) const -> void { - out << "{index: " << index << ", initializer_id: " << initializer_id << "}"; + out << "{index: " << index << ", name_id: " << name_id + << ", initializer_id: " << initializer_id << "}"; } }; diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index 4c8ab01601ba..22de0f08af23 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -1657,7 +1657,8 @@ auto Formatter::FormatArg(DefaultValueId id) -> void { auto Formatter::FormatArg(FieldId id) -> void { const auto& field = sem_ir_->fields().Get(id); - out() << field.index; + FormatName(field.name_id); + out() << ", " << field.index; if (field.initializer_id.has_value()) { out() << ", initializer = "; out() << field.initializer_id; diff --git a/toolchain/sem_ir/inst_namer.cpp b/toolchain/sem_ir/inst_namer.cpp index 871ad080a3be..d3979edac16e 100644 --- a/toolchain/sem_ir/inst_namer.cpp +++ b/toolchain/sem_ir/inst_namer.cpp @@ -1156,6 +1156,14 @@ auto InstNamer::NamingContext::NameInst() -> void { AddInstName("facet_value"); return; } + case CARBON_KIND(FieldDecl inst): { + for (auto block_id : + sem_ir().expr_regions().Get(inst.type_region_id).block_ids) { + PushBlockId(scope_id_, block_id); + } + AddInstName("field_decl"); + return; + } case CARBON_KIND(FloatType inst): { AddIntOrFloatTypeName('f', inst.bit_width_id); return; diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index 64065e8d58eb..993adf261a9b 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -864,8 +864,8 @@ struct FieldDecl { .constant_kind = InstConstantKind::AlwaysUnique}); TypeId type_id; - NameId name_id; FieldId field_id; + ExprRegionId type_region_id; }; // The float literal type.