diff --git a/toolchain/check/handle_impl.cpp b/toolchain/check/handle_impl.cpp index 509eb35dba43..26159e81f628 100644 --- a/toolchain/check/handle_impl.cpp +++ b/toolchain/check/handle_impl.cpp @@ -252,6 +252,28 @@ static auto BuildImplDecl(Context& context, Parse::AnyImplDeclId node_id, full_constraint_type_inst_id = SemIR::ErrorInst::TypeInstId; } + // Store an instruction in the decl's eval block that contains the target + // interface's specific, whose constant value will be updated when specifics + // are applied to the impl. + // + // We can use ImplSelfWitness for this because it contains a + // SpecificInterfaceId operand, and it has a constant_kind of `Always` so it + // never evaluates to some other type of inst. + // + // TODO: We could avoid the extra indirection through a SpecificInterfaceId if + // we introduced a new instruction with a SpecificId operand instead of + // reusing ImplSelfWitness for this. + auto interface_inst_id = + specific_interface.interface_id.has_value() + ? AddInst( + context, node_id, + {.type_id = + GetSingletonType(context, SemIR::WitnessType::TypeInstId), + .period_self = self_type_inst_id, + .specific_interface_id = + context.specific_interfaces().Add(specific_interface)}) + : SemIR::ErrorInst::InstId; + // Strip off anything on the RHS of `where`, as they are not part of the // constraint being implemented, they just represent requirements that must be // met when the impl is defined. This drops any `.Self` references from the @@ -282,7 +304,8 @@ static auto BuildImplDecl(Context& context, Parse::AnyImplDeclId node_id, .is_final = is_final, .self_id = self_type_inst_id, .constraint_id = extend_constraint_type_inst_id, - .interface = specific_interface}}; + .interface = specific_interface, + .interface_inst_id = interface_inst_id}}; if (has_definition) { impl.definition_id = impl_decl_id; } diff --git a/toolchain/check/impl.cpp b/toolchain/check/impl.cpp index 62e4dd8f1bf0..142ca1b4ffef 100644 --- a/toolchain/check/impl.cpp +++ b/toolchain/check/impl.cpp @@ -1030,4 +1030,29 @@ auto CheckConstraintIsInterface(Context& context, SemIR::LocId loc_id, return identified.impl_as_target_interface(); } +auto GetImplInterfaceInSpecific(Context& context, const SemIR::Impl& impl, + SemIR::SpecificId specific_id) + -> SemIR::SpecificInterface { + if (!specific_id.has_value()) { + CARBON_CHECK(!impl.generic_id.has_value()); + // The impl is not generic, the specific interface will be concrete. + return impl.interface; + } + + CARBON_CHECK(context.specifics().Get(specific_id).generic_id == + impl.generic_id); + // The `interface_inst_id` is an instruction that contains the impl's target + // specific interface. We get its constant value to apply the impl's specific + // to that target interface. + auto interface_in_specific = SemIR::GetConstantValueInSpecific( + context.sem_ir(), specific_id, impl.interface_inst_id); + if (interface_in_specific == SemIR::ErrorInst::ConstantId) { + return SemIR::SpecificInterface::None; + } + // The `interface_inst_id` is always an `ImplSelfWitness` at this time. + auto inst = context.constant_values().GetInstAs( + interface_in_specific); + return context.specific_interfaces().Get(inst.specific_interface_id); +} + } // namespace Carbon::Check diff --git a/toolchain/check/impl.h b/toolchain/check/impl.h index f529cdd9f194..e052958f028f 100644 --- a/toolchain/check/impl.h +++ b/toolchain/check/impl.h @@ -7,6 +7,7 @@ #include "toolchain/check/context.h" #include "toolchain/sem_ir/ids.h" +#include "toolchain/sem_ir/specific_interface.h" namespace Carbon::Check { @@ -99,6 +100,13 @@ auto CheckConstraintIsInterface(Context& context, SemIR::LocId loc_id, SemIR::TypeInstId constraint_id) -> SemIR::SpecificInterface; +// Given a specific for the impl, returns the specific interface that the impl +// declaration is implementing. Returns None in the case of an error being +// diagnosed while constructing the specific interface. +auto GetImplInterfaceInSpecific(Context& context, const SemIR::Impl& impl, + SemIR::SpecificId specific_id) + -> SemIR::SpecificInterface; + } // namespace Carbon::Check #endif // CARBON_TOOLCHAIN_CHECK_IMPL_H_ diff --git a/toolchain/check/impl_lookup.cpp b/toolchain/check/impl_lookup.cpp index a97894ce92dd..ca7cf65d7650 100644 --- a/toolchain/check/impl_lookup.cpp +++ b/toolchain/check/impl_lookup.cpp @@ -274,41 +274,12 @@ static auto TryGetSpecificWitnessIdForImpl( return SemIR::ConstantId::None; } - // The impl's constraint is a facet type which it is implementing for the self - // type: the `I` in `impl ... as I`. The deduction step may be unable to be - // fully applied to the types in the constraint and result in an error here, - // in which case it does not match the query. - auto deduced_constraint_id = SemIR::GetConstantValueInSpecific( - context.sem_ir(), specific_id, impl.constraint_id); - if (deduced_constraint_id == SemIR::ErrorInst::ConstantId) { - return SemIR::ConstantId::None; - } - - // Get the identified facet type of the deduced impl's constraint, so we can - // get the specific interface being implemented after deduction. - auto deduced_constrant_type_inst_id = - context.types().GetTypeInstIdForTypeConstantId(deduced_constraint_id); - auto deduced_constraint_identified_facet_type_id = - TryToIdentifyFacetType(context, loc_id, deduced_self_const_id, - deduced_constrant_type_inst_id, false); - if (!deduced_constraint_identified_facet_type_id.has_value()) { - return SemIR::ConstantId::None; - } - - const auto& deduced_constraint_identified_facet_type = - context.identified_facet_types().Get( - deduced_constraint_identified_facet_type_id); - // We only find valid impls in impl lookup, which implement a single specific - // interface. - CARBON_CHECK( - deduced_constraint_identified_facet_type.is_valid_impl_as_target()); - // The specifics in the queried interface must match the deduced specifics in // the impl's constraint facet type. - auto impl_interface_specific_id = - deduced_constraint_identified_facet_type.impl_as_target_interface() - .specific_id; - if (impl_interface_specific_id != query_specific_interface.specific_id) { + auto deduced_specific_interface = + GetImplInterfaceInSpecific(context, impl, specific_id); + if (deduced_specific_interface.specific_id != + query_specific_interface.specific_id) { return SemIR::ConstantId::None; } diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index b3fe4c5dd948..037f489baf2d 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -2766,6 +2766,7 @@ static auto ImportImplDecl(ImportContext& context, .self_id = SemIR::TypeInstId::None, .constraint_id = SemIR::TypeInstId::None, .interface = SemIR::SpecificInterface::None, + .interface_inst_id = SemIR::InstId::None, .witness_id = witness_id, .scope_id = import_impl.is_complete() ? AddPlaceholderNameScope(context) : SemIR::NameScopeId::None}}); @@ -2838,6 +2839,9 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, impl_id = impl_const_inst.impl_id; } + CARBON_CHECK(resolver.import_types().Is( + resolver.import_insts().Get(import_impl.interface_inst_id).type_id())); + // Load constants for the definition. auto implicit_param_patterns = GetLocalBlockImportRefInfo( resolver, import_impl.implicit_param_patterns_id); @@ -2847,6 +2851,8 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, GetLocalConstantId(resolver, import_impl.constraint_id); auto match_first_inst_id = GetLocalConstantInstId(resolver, import_impl.match_first_id); + auto interface_inst_const_id = + GetLocalConstantId(resolver, import_impl.interface_inst_id); auto& new_impl = resolver.local_impls().Get(impl_id); // Go directly to the simpler GetLocalConstantInstId to get an inst of the // same type locally. This does not handle symbolic values in a way that they @@ -2870,6 +2876,11 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, resolver, import_impl.constraint_id, constraint_const_id); new_impl.interface = GetLocalSpecificInterface( resolver, import_impl.interface, specific_interface_data); + new_impl.interface_inst_id = AddLoadedImportRef( + resolver, + GetSingletonType(resolver.local_context(), + SemIR::WitnessType::TypeInstId), + import_impl.interface_inst_id, interface_inst_const_id); // The MatchFirstDecl can't be symbolic, so we don't need to make a // LoadedImportRef instruction for it. new_impl.match_first_id = match_first_inst_id; diff --git a/toolchain/check/testdata/array/init_dependent_bound.carbon b/toolchain/check/testdata/array/init_dependent_bound.carbon index 04be2fbbeba4..6bb9bf4b8b5a 100644 --- a/toolchain/check/testdata/array/init_dependent_bound.carbon +++ b/toolchain/check/testdata/array/init_dependent_bound.carbon @@ -180,8 +180,8 @@ fn H() { G(3); } // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_1, %int_2, %int_3.1ba) [concrete] -// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // 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: %int_3.410: %i32 = int_value 3 [concrete] diff --git a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon index 502290f90e43..ddc179b1bca5 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon @@ -73,256 +73,270 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: import_ir_inst1F: {ir_id: import_ir78000004, inst_id: inst7000003B} // CHECK:STDOUT: import_ir_inst20: {ir_id: import_ir78000004, inst_id: inst70000012} // CHECK:STDOUT: import_ir_inst21: {ir_id: import_ir78000004, inst_id: inst70000035} -// CHECK:STDOUT: import_ir_inst22: {ir_id: import_ir78000004, inst_id: inst70000092} +// CHECK:STDOUT: import_ir_inst22: {ir_id: import_ir78000004, inst_id: inst70000095} // CHECK:STDOUT: import_ir_inst23: {ir_id: import_ir78000004, inst_id: inst70000090} -// CHECK:STDOUT: import_ir_inst24: {ir_id: import_ir78000004, inst_id: inst700000B1} -// CHECK:STDOUT: import_ir_inst25: {ir_id: import_ir78000004, inst_id: inst70000091} -// CHECK:STDOUT: import_ir_inst26: {ir_id: import_ir78000004, inst_id: inst700000B1} -// CHECK:STDOUT: import_ir_inst27: {ir_id: import_ir78000004, inst_id: inst700000A9} -// CHECK:STDOUT: import_ir_inst28: {ir_id: import_ir78000004, inst_id: inst7000009D} -// CHECK:STDOUT: import_ir_inst29: {ir_id: import_ir78000004, inst_id: inst700000A9} -// CHECK:STDOUT: import_ir_inst2A: {ir_id: import_ir78000004, inst_id: inst7000009D} -// CHECK:STDOUT: import_ir_inst2B: {ir_id: import_ir78000004, inst_id: inst7000009C} -// CHECK:STDOUT: import_ir_inst2C: {ir_id: import_ir78000004, inst_id: inst700000A8} -// CHECK:STDOUT: import_ir_inst2D: {ir_id: import_ir78000004, inst_id: inst700000A0} -// CHECK:STDOUT: import_ir_inst2E: {ir_id: import_ir78000004, inst_id: inst700000A0} -// CHECK:STDOUT: import_ir_inst2F: {ir_id: import_ir78000004, inst_id: inst700000A4} -// CHECK:STDOUT: import_ir_inst30: {ir_id: import_ir78000004, inst_id: inst700000A5} -// CHECK:STDOUT: import_ir_inst31: {ir_id: import_ir78000004, inst_id: inst700000AB} +// CHECK:STDOUT: import_ir_inst24: {ir_id: import_ir78000004, inst_id: inst700000B4} +// CHECK:STDOUT: import_ir_inst25: {ir_id: import_ir78000004, inst_id: inst70000094} +// CHECK:STDOUT: import_ir_inst26: {ir_id: import_ir78000004, inst_id: inst700000B4} +// CHECK:STDOUT: import_ir_inst27: {ir_id: import_ir78000004, inst_id: inst700000AC} +// CHECK:STDOUT: import_ir_inst28: {ir_id: import_ir78000004, inst_id: inst700000A0} +// CHECK:STDOUT: import_ir_inst29: {ir_id: import_ir78000004, inst_id: inst700000AC} +// CHECK:STDOUT: import_ir_inst2A: {ir_id: import_ir78000004, inst_id: inst700000A0} +// CHECK:STDOUT: import_ir_inst2B: {ir_id: import_ir78000004, inst_id: inst7000009F} +// CHECK:STDOUT: import_ir_inst2C: {ir_id: import_ir78000004, inst_id: inst700000AB} +// CHECK:STDOUT: import_ir_inst2D: {ir_id: import_ir78000004, inst_id: inst700000A3} +// CHECK:STDOUT: import_ir_inst2E: {ir_id: import_ir78000004, inst_id: inst700000A3} +// CHECK:STDOUT: import_ir_inst2F: {ir_id: import_ir78000004, inst_id: inst700000A7} +// CHECK:STDOUT: import_ir_inst30: {ir_id: import_ir78000004, inst_id: inst700000A8} +// CHECK:STDOUT: import_ir_inst31: {ir_id: import_ir78000004, inst_id: inst700000AE} // CHECK:STDOUT: import_ir_inst32: {ir_id: import_ir78000004, inst_id: inst70000083} -// CHECK:STDOUT: import_ir_inst33: {ir_id: import_ir78000004, inst_id: inst70000098} -// CHECK:STDOUT: import_ir_inst34: {ir_id: import_ir78000004, inst_id: inst70000099} -// CHECK:STDOUT: import_ir_inst35: {ir_id: import_ir78000004, inst_id: inst7000009A} -// CHECK:STDOUT: import_ir_inst36: {ir_id: import_ir78000004, inst_id: inst7000009E} -// CHECK:STDOUT: import_ir_inst37: {ir_id: import_ir78000004, inst_id: inst7000009F} -// CHECK:STDOUT: import_ir_inst38: {ir_id: import_ir78000004, inst_id: inst700000A2} -// CHECK:STDOUT: import_ir_inst39: {ir_id: import_ir78000004, inst_id: inst700000A7} -// CHECK:STDOUT: import_ir_inst3A: {ir_id: import_ir78000004, inst_id: inst700000AA} -// CHECK:STDOUT: import_ir_inst3B: {ir_id: import_ir78000004, inst_id: inst700000AD} -// CHECK:STDOUT: import_ir_inst3C: {ir_id: import_ir78000004, inst_id: inst700000D9} -// CHECK:STDOUT: import_ir_inst3D: {ir_id: import_ir78000004, inst_id: inst700000D6} -// CHECK:STDOUT: import_ir_inst3E: {ir_id: import_ir78000004, inst_id: inst700000BB} -// CHECK:STDOUT: import_ir_inst3F: {ir_id: import_ir78000004, inst_id: inst700000C2} -// CHECK:STDOUT: import_ir_inst40: {ir_id: import_ir78000004, inst_id: inst700000CE} -// CHECK:STDOUT: import_ir_inst41: {ir_id: import_ir78000004, inst_id: inst700000CF} -// CHECK:STDOUT: import_ir_inst42: {ir_id: import_ir78000004, inst_id: inst700000D0} -// CHECK:STDOUT: import_ir_inst43: {ir_id: import_ir78000004, inst_id: inst700000D1} -// CHECK:STDOUT: import_ir_inst44: {ir_id: import_ir78000004, inst_id: inst700000DD} -// CHECK:STDOUT: import_ir_inst45: {ir_id: import_ir78000004, inst_id: inst700000A9} -// CHECK:STDOUT: import_ir_inst46: {ir_id: import_ir78000004, inst_id: inst7000009D} +// CHECK:STDOUT: import_ir_inst33: {ir_id: import_ir78000004, inst_id: inst7000009B} +// CHECK:STDOUT: import_ir_inst34: {ir_id: import_ir78000004, inst_id: inst7000009C} +// CHECK:STDOUT: import_ir_inst35: {ir_id: import_ir78000004, inst_id: inst7000009D} +// CHECK:STDOUT: import_ir_inst36: {ir_id: import_ir78000004, inst_id: inst700000A1} +// CHECK:STDOUT: import_ir_inst37: {ir_id: import_ir78000004, inst_id: inst700000A2} +// CHECK:STDOUT: import_ir_inst38: {ir_id: import_ir78000004, inst_id: inst700000A5} +// CHECK:STDOUT: import_ir_inst39: {ir_id: import_ir78000004, inst_id: inst700000AA} +// CHECK:STDOUT: import_ir_inst3A: {ir_id: import_ir78000004, inst_id: inst700000AD} +// CHECK:STDOUT: import_ir_inst3B: {ir_id: import_ir78000004, inst_id: inst700000B0} +// CHECK:STDOUT: import_ir_inst3C: {ir_id: import_ir78000004, inst_id: inst700000DC} +// CHECK:STDOUT: import_ir_inst3D: {ir_id: import_ir78000004, inst_id: inst700000D9} +// CHECK:STDOUT: import_ir_inst3E: {ir_id: import_ir78000004, inst_id: inst700000BE} +// CHECK:STDOUT: import_ir_inst3F: {ir_id: import_ir78000004, inst_id: inst700000C5} +// CHECK:STDOUT: import_ir_inst40: {ir_id: import_ir78000004, inst_id: inst700000D1} +// CHECK:STDOUT: import_ir_inst41: {ir_id: import_ir78000004, inst_id: inst700000D2} +// CHECK:STDOUT: import_ir_inst42: {ir_id: import_ir78000004, inst_id: inst700000D3} +// CHECK:STDOUT: import_ir_inst43: {ir_id: import_ir78000004, inst_id: inst700000D4} +// CHECK:STDOUT: import_ir_inst44: {ir_id: import_ir78000004, inst_id: inst700000E0} +// CHECK:STDOUT: import_ir_inst45: {ir_id: import_ir78000004, inst_id: inst700000AC} +// CHECK:STDOUT: import_ir_inst46: {ir_id: import_ir78000004, inst_id: inst700000A0} // CHECK:STDOUT: import_ir_inst47: {ir_id: import_ir78000004, inst_id: inst70000080} // CHECK:STDOUT: import_ir_inst48: {ir_id: import_ir78000004, inst_id: inst7000008B} // CHECK:STDOUT: import_ir_inst49: {ir_id: import_ir78000004, inst_id: inst7000008E} -// CHECK:STDOUT: import_ir_inst4A: {ir_id: import_ir78000004, inst_id: inst70000083} -// CHECK:STDOUT: import_ir_inst4B: {ir_id: import_ir78000004, inst_id: inst70000082} -// CHECK:STDOUT: import_ir_inst4C: {ir_id: import_ir78000004, inst_id: inst70000085} -// CHECK:STDOUT: import_ir_inst4D: {ir_id: import_ir78000004, inst_id: inst70000089} -// CHECK:STDOUT: import_ir_inst4E: {ir_id: import_ir78000004, inst_id: inst7000008D} -// CHECK:STDOUT: import_ir_inst4F: {ir_id: import_ir78000004, inst_id: inst70000094} -// CHECK:STDOUT: import_ir_inst50: {ir_id: import_ir78000004, inst_id: inst700000B4} -// CHECK:STDOUT: import_ir_inst51: {ir_id: import_ir78000004, inst_id: inst700000B5} -// CHECK:STDOUT: import_ir_inst52: {ir_id: import_ir78000004, inst_id: inst700000ED} -// CHECK:STDOUT: import_ir_inst53: {ir_id: import_ir78000004, inst_id: inst700000EB} -// CHECK:STDOUT: import_ir_inst54: {ir_id: import_ir78000004, inst_id: inst700000E9} -// CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir78000004, inst_id: inst700000EA} -// CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir78000004, inst_id: inst7000010A} -// CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir78000004, inst_id: inst70000108} -// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir78000004, inst_id: inst70000106} -// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir78000004, inst_id: inst70000107} -// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir78000004, inst_id: inst70000127} -// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir78000004, inst_id: inst70000125} -// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir78000004, inst_id: inst70000123} -// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir78000004, inst_id: inst70000124} -// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir78000004, inst_id: inst70000144} -// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir78000004, inst_id: inst70000142} -// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir78000004, inst_id: inst70000140} -// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir78000004, inst_id: inst70000141} -// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir78000004, inst_id: inst7000016D} -// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir78000004, inst_id: inst7000016B} -// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir78000004, inst_id: inst70000189} -// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir78000004, inst_id: inst7000016C} -// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir78000004, inst_id: inst7000015F} -// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir78000004, inst_id: inst70000166} -// CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir78000004, inst_id: inst70000169} -// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir78000004, inst_id: inst70000162} -// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir78000004, inst_id: inst70000161} -// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir78000004, inst_id: inst70000164} -// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir78000004, inst_id: inst70000168} -// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir78000004, inst_id: inst7000016F} -// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir78000004, inst_id: inst70000189} -// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir78000004, inst_id: inst70000181} -// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir78000004, inst_id: inst70000175} -// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir78000004, inst_id: inst70000181} -// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir78000004, inst_id: inst70000175} -// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir78000004, inst_id: inst70000174} -// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir78000004, inst_id: inst70000180} -// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir78000004, inst_id: inst70000178} -// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir78000004, inst_id: inst70000178} -// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir78000004, inst_id: inst7000017C} -// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir78000004, inst_id: inst7000017D} -// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir78000004, inst_id: inst70000183} -// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir78000004, inst_id: inst70000162} -// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir78000004, inst_id: inst70000171} -// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir78000004, inst_id: inst70000172} -// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir78000004, inst_id: inst70000176} -// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir78000004, inst_id: inst70000177} -// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir78000004, inst_id: inst7000017A} -// CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir78000004, inst_id: inst7000017F} -// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir78000004, inst_id: inst70000182} -// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir78000004, inst_id: inst70000185} -// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir78000004, inst_id: inst70000181} -// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir78000004, inst_id: inst70000175} -// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir78000004, inst_id: inst7000018C} -// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir78000004, inst_id: inst7000018D} -// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir78000004, inst_id: inst70000190} -// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir78000004, inst_id: inst70000198} -// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir78000004, inst_id: inst70000196} -// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir78000004, inst_id: inst70000194} -// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir78000004, inst_id: inst70000195} -// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir78000004, inst_id: inst700001B3} -// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir78000004, inst_id: inst700001B1} -// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir78000004, inst_id: inst700001AF} -// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir78000004, inst_id: inst700001B0} -// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir78000004, inst_id: inst700001F0} -// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir78000004, inst_id: inst700001EE} -// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir78000004, inst_id: inst70000213} -// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir78000004, inst_id: inst700001EF} -// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir78000004, inst_id: inst70000213} -// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir78000004, inst_id: inst7000020B} -// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir78000004, inst_id: inst700001FF} -// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir78000004, inst_id: inst7000020B} -// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir78000004, inst_id: inst700001FF} -// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir78000004, inst_id: inst700001FE} -// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir78000004, inst_id: inst7000020A} -// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir78000004, inst_id: inst70000202} -// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir78000004, inst_id: inst70000202} -// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir78000004, inst_id: inst70000206} -// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir78000004, inst_id: inst70000207} -// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir78000004, inst_id: inst7000020D} -// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir78000004, inst_id: inst700001D0} -// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir78000004, inst_id: inst700001D7} -// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir78000004, inst_id: inst700001F8} -// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir78000004, inst_id: inst700001F9} -// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir78000004, inst_id: inst700001FA} -// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir78000004, inst_id: inst700001FB} -// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir78000004, inst_id: inst700001FC} -// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir78000004, inst_id: inst70000200} -// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir78000004, inst_id: inst70000201} -// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir78000004, inst_id: inst70000204} -// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir78000004, inst_id: inst70000209} -// CHECK:STDOUT: import_ir_instAB: {ir_id: import_ir78000004, inst_id: inst7000020C} -// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir78000004, inst_id: inst7000020F} -// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir78000004, inst_id: inst7000024E} -// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir78000004, inst_id: inst7000024B} -// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir78000004, inst_id: inst7000021E} -// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir78000004, inst_id: inst70000224} -// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir78000004, inst_id: inst70000228} -// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir78000004, inst_id: inst70000229} -// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir78000004, inst_id: inst7000022A} -// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir78000004, inst_id: inst7000022B} -// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir78000004, inst_id: inst70000230} -// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir78000004, inst_id: inst7000023A} -// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir78000004, inst_id: inst70000243} -// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir78000004, inst_id: inst70000244} -// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir78000004, inst_id: inst70000245} -// CHECK:STDOUT: import_ir_instBA: {ir_id: import_ir78000004, inst_id: inst70000246} -// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir78000004, inst_id: inst70000252} -// CHECK:STDOUT: import_ir_instBC: {ir_id: import_ir78000004, inst_id: inst7000020B} -// CHECK:STDOUT: import_ir_instBD: {ir_id: import_ir78000004, inst_id: inst700001FF} -// CHECK:STDOUT: import_ir_instBE: {ir_id: import_ir78000004, inst_id: inst700001CE} -// CHECK:STDOUT: import_ir_instBF: {ir_id: import_ir78000004, inst_id: inst700001D4} -// CHECK:STDOUT: import_ir_instC0: {ir_id: import_ir78000004, inst_id: inst700001E9} -// CHECK:STDOUT: import_ir_instC1: {ir_id: import_ir78000004, inst_id: inst700001EB} -// CHECK:STDOUT: import_ir_instC2: {ir_id: import_ir78000004, inst_id: inst700001D0} -// CHECK:STDOUT: import_ir_instC3: {ir_id: import_ir78000004, inst_id: inst700001D7} -// CHECK:STDOUT: import_ir_instC4: {ir_id: import_ir78000004, inst_id: inst700001CF} -// CHECK:STDOUT: import_ir_instC5: {ir_id: import_ir78000004, inst_id: inst700001D1} -// CHECK:STDOUT: import_ir_instC6: {ir_id: import_ir78000004, inst_id: inst700001D6} -// CHECK:STDOUT: import_ir_instC7: {ir_id: import_ir78000004, inst_id: inst700001D9} -// CHECK:STDOUT: import_ir_instC8: {ir_id: import_ir78000004, inst_id: inst700001DF} -// CHECK:STDOUT: import_ir_instC9: {ir_id: import_ir78000004, inst_id: inst700001E2} -// CHECK:STDOUT: import_ir_instCA: {ir_id: import_ir78000004, inst_id: inst700001E6} -// CHECK:STDOUT: import_ir_instCB: {ir_id: import_ir78000004, inst_id: inst700001EA} -// CHECK:STDOUT: import_ir_instCC: {ir_id: import_ir78000004, inst_id: inst700001F2} -// CHECK:STDOUT: import_ir_instCD: {ir_id: import_ir78000004, inst_id: inst70000216} -// CHECK:STDOUT: import_ir_instCE: {ir_id: import_ir78000004, inst_id: inst70000217} -// CHECK:STDOUT: import_ir_instCF: {ir_id: import_ir78000004, inst_id: inst70000290} -// CHECK:STDOUT: import_ir_instD0: {ir_id: import_ir78000004, inst_id: inst7000028E} -// CHECK:STDOUT: import_ir_instD1: {ir_id: import_ir78000004, inst_id: inst700002B7} -// CHECK:STDOUT: import_ir_instD2: {ir_id: import_ir78000004, inst_id: inst7000028F} -// CHECK:STDOUT: import_ir_instD3: {ir_id: import_ir78000004, inst_id: inst700002B7} -// CHECK:STDOUT: import_ir_instD4: {ir_id: import_ir78000004, inst_id: inst700002AF} -// CHECK:STDOUT: import_ir_instD5: {ir_id: import_ir78000004, inst_id: inst700002A3} -// CHECK:STDOUT: import_ir_instD6: {ir_id: import_ir78000004, inst_id: inst700002AF} -// CHECK:STDOUT: import_ir_instD7: {ir_id: import_ir78000004, inst_id: inst700002A3} -// CHECK:STDOUT: import_ir_instD8: {ir_id: import_ir78000004, inst_id: inst700002A2} -// CHECK:STDOUT: import_ir_instD9: {ir_id: import_ir78000004, inst_id: inst700002AE} -// CHECK:STDOUT: import_ir_instDA: {ir_id: import_ir78000004, inst_id: inst700002A6} -// CHECK:STDOUT: import_ir_instDB: {ir_id: import_ir78000004, inst_id: inst700002A6} -// CHECK:STDOUT: import_ir_instDC: {ir_id: import_ir78000004, inst_id: inst700002AA} -// CHECK:STDOUT: import_ir_instDD: {ir_id: import_ir78000004, inst_id: inst700002AB} -// CHECK:STDOUT: import_ir_instDE: {ir_id: import_ir78000004, inst_id: inst700002B1} -// CHECK:STDOUT: import_ir_instDF: {ir_id: import_ir78000004, inst_id: inst70000265} -// CHECK:STDOUT: import_ir_instE0: {ir_id: import_ir78000004, inst_id: inst7000026B} -// CHECK:STDOUT: import_ir_instE1: {ir_id: import_ir78000004, inst_id: inst70000272} -// CHECK:STDOUT: import_ir_instE2: {ir_id: import_ir78000004, inst_id: inst7000029A} -// CHECK:STDOUT: import_ir_instE3: {ir_id: import_ir78000004, inst_id: inst7000029B} -// CHECK:STDOUT: import_ir_instE4: {ir_id: import_ir78000004, inst_id: inst7000029C} -// CHECK:STDOUT: import_ir_instE5: {ir_id: import_ir78000004, inst_id: inst7000029D} -// CHECK:STDOUT: import_ir_instE6: {ir_id: import_ir78000004, inst_id: inst7000029E} -// CHECK:STDOUT: import_ir_instE7: {ir_id: import_ir78000004, inst_id: inst7000029F} -// CHECK:STDOUT: import_ir_instE8: {ir_id: import_ir78000004, inst_id: inst700002A0} -// CHECK:STDOUT: import_ir_instE9: {ir_id: import_ir78000004, inst_id: inst700002A4} -// CHECK:STDOUT: import_ir_instEA: {ir_id: import_ir78000004, inst_id: inst700002A5} -// CHECK:STDOUT: import_ir_instEB: {ir_id: import_ir78000004, inst_id: inst700002A8} -// CHECK:STDOUT: import_ir_instEC: {ir_id: import_ir78000004, inst_id: inst700002AD} -// CHECK:STDOUT: import_ir_instED: {ir_id: import_ir78000004, inst_id: inst700002B0} -// CHECK:STDOUT: import_ir_instEE: {ir_id: import_ir78000004, inst_id: inst700002B3} -// CHECK:STDOUT: import_ir_instEF: {ir_id: import_ir78000004, inst_id: inst70000305} -// CHECK:STDOUT: import_ir_instF0: {ir_id: import_ir78000004, inst_id: inst70000302} -// CHECK:STDOUT: import_ir_instF1: {ir_id: import_ir78000004, inst_id: inst700002C2} -// CHECK:STDOUT: import_ir_instF2: {ir_id: import_ir78000004, inst_id: inst700002C7} -// CHECK:STDOUT: import_ir_instF3: {ir_id: import_ir78000004, inst_id: inst700002CB} -// CHECK:STDOUT: import_ir_instF4: {ir_id: import_ir78000004, inst_id: inst700002CC} -// CHECK:STDOUT: import_ir_instF5: {ir_id: import_ir78000004, inst_id: inst700002CD} -// CHECK:STDOUT: import_ir_instF6: {ir_id: import_ir78000004, inst_id: inst700002CE} -// CHECK:STDOUT: import_ir_instF7: {ir_id: import_ir78000004, inst_id: inst700002D3} -// CHECK:STDOUT: import_ir_instF8: {ir_id: import_ir78000004, inst_id: inst700002DB} -// CHECK:STDOUT: import_ir_instF9: {ir_id: import_ir78000004, inst_id: inst700002DF} -// CHECK:STDOUT: import_ir_instFA: {ir_id: import_ir78000004, inst_id: inst700002E0} -// CHECK:STDOUT: import_ir_instFB: {ir_id: import_ir78000004, inst_id: inst700002E1} -// CHECK:STDOUT: import_ir_instFC: {ir_id: import_ir78000004, inst_id: inst700002E2} -// CHECK:STDOUT: import_ir_instFD: {ir_id: import_ir78000004, inst_id: inst700002E7} -// CHECK:STDOUT: import_ir_instFE: {ir_id: import_ir78000004, inst_id: inst700002F1} -// CHECK:STDOUT: import_ir_instFF: {ir_id: import_ir78000004, inst_id: inst700002FA} -// CHECK:STDOUT: import_ir_inst100: {ir_id: import_ir78000004, inst_id: inst700002FB} -// CHECK:STDOUT: import_ir_inst101: {ir_id: import_ir78000004, inst_id: inst700002FC} -// CHECK:STDOUT: import_ir_inst102: {ir_id: import_ir78000004, inst_id: inst700002FD} -// CHECK:STDOUT: import_ir_inst103: {ir_id: import_ir78000004, inst_id: inst70000309} -// CHECK:STDOUT: import_ir_inst104: {ir_id: import_ir78000004, inst_id: inst700002AF} -// CHECK:STDOUT: import_ir_inst105: {ir_id: import_ir78000004, inst_id: inst700002A3} -// CHECK:STDOUT: import_ir_inst106: {ir_id: import_ir78000004, inst_id: inst70000263} -// CHECK:STDOUT: import_ir_inst107: {ir_id: import_ir78000004, inst_id: inst70000269} -// CHECK:STDOUT: import_ir_inst108: {ir_id: import_ir78000004, inst_id: inst7000026F} -// CHECK:STDOUT: import_ir_inst109: {ir_id: import_ir78000004, inst_id: inst70000288} -// CHECK:STDOUT: import_ir_inst10A: {ir_id: import_ir78000004, inst_id: inst7000028A} -// CHECK:STDOUT: import_ir_inst10B: {ir_id: import_ir78000004, inst_id: inst70000265} -// CHECK:STDOUT: import_ir_inst10C: {ir_id: import_ir78000004, inst_id: inst7000026B} -// CHECK:STDOUT: import_ir_inst10D: {ir_id: import_ir78000004, inst_id: inst70000272} -// CHECK:STDOUT: import_ir_inst10E: {ir_id: import_ir78000004, inst_id: inst70000264} -// CHECK:STDOUT: import_ir_inst10F: {ir_id: import_ir78000004, inst_id: inst70000266} -// CHECK:STDOUT: import_ir_inst110: {ir_id: import_ir78000004, inst_id: inst7000026A} -// CHECK:STDOUT: import_ir_inst111: {ir_id: import_ir78000004, inst_id: inst7000026C} -// CHECK:STDOUT: import_ir_inst112: {ir_id: import_ir78000004, inst_id: inst70000271} -// CHECK:STDOUT: import_ir_inst113: {ir_id: import_ir78000004, inst_id: inst70000274} -// CHECK:STDOUT: import_ir_inst114: {ir_id: import_ir78000004, inst_id: inst7000027B} -// CHECK:STDOUT: import_ir_inst115: {ir_id: import_ir78000004, inst_id: inst7000027E} -// CHECK:STDOUT: import_ir_inst116: {ir_id: import_ir78000004, inst_id: inst70000281} -// CHECK:STDOUT: import_ir_inst117: {ir_id: import_ir78000004, inst_id: inst70000285} -// CHECK:STDOUT: import_ir_inst118: {ir_id: import_ir78000004, inst_id: inst70000289} -// CHECK:STDOUT: import_ir_inst119: {ir_id: import_ir78000004, inst_id: inst70000292} -// CHECK:STDOUT: import_ir_inst11A: {ir_id: import_ir78000004, inst_id: inst700002BA} -// CHECK:STDOUT: import_ir_inst11B: {ir_id: import_ir78000004, inst_id: inst700002BB} +// CHECK:STDOUT: import_ir_inst4A: {ir_id: import_ir78000004, inst_id: inst70000091} +// CHECK:STDOUT: import_ir_inst4B: {ir_id: import_ir78000004, inst_id: inst70000083} +// CHECK:STDOUT: import_ir_inst4C: {ir_id: import_ir78000004, inst_id: inst70000082} +// CHECK:STDOUT: import_ir_inst4D: {ir_id: import_ir78000004, inst_id: inst70000085} +// CHECK:STDOUT: import_ir_inst4E: {ir_id: import_ir78000004, inst_id: inst70000089} +// CHECK:STDOUT: import_ir_inst4F: {ir_id: import_ir78000004, inst_id: inst7000008D} +// CHECK:STDOUT: import_ir_inst50: {ir_id: import_ir78000004, inst_id: inst70000093} +// CHECK:STDOUT: import_ir_inst51: {ir_id: import_ir78000004, inst_id: inst70000097} +// CHECK:STDOUT: import_ir_inst52: {ir_id: import_ir78000004, inst_id: inst700000B7} +// CHECK:STDOUT: import_ir_inst53: {ir_id: import_ir78000004, inst_id: inst700000B8} +// CHECK:STDOUT: import_ir_inst54: {ir_id: import_ir78000004, inst_id: inst700000F2} +// CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir78000004, inst_id: inst700000EE} +// CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir78000004, inst_id: inst700000EC} +// CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir78000004, inst_id: inst700000ED} +// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir78000004, inst_id: inst700000EF} +// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir78000004, inst_id: inst70000111} +// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir78000004, inst_id: inst7000010D} +// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir78000004, inst_id: inst7000010B} +// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir78000004, inst_id: inst7000010C} +// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir78000004, inst_id: inst7000010E} +// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir78000004, inst_id: inst70000130} +// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir78000004, inst_id: inst7000012C} +// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir78000004, inst_id: inst7000012A} +// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir78000004, inst_id: inst7000012B} +// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir78000004, inst_id: inst7000012D} +// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir78000004, inst_id: inst7000014F} +// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir78000004, inst_id: inst7000014B} +// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir78000004, inst_id: inst70000149} +// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir78000004, inst_id: inst7000014A} +// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir78000004, inst_id: inst7000014C} +// CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir78000004, inst_id: inst7000017B} +// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir78000004, inst_id: inst70000176} +// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir78000004, inst_id: inst70000197} +// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir78000004, inst_id: inst7000017A} +// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir78000004, inst_id: inst7000016A} +// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir78000004, inst_id: inst70000171} +// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir78000004, inst_id: inst70000174} +// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir78000004, inst_id: inst70000177} +// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir78000004, inst_id: inst7000016D} +// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir78000004, inst_id: inst7000016C} +// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir78000004, inst_id: inst7000016F} +// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir78000004, inst_id: inst70000173} +// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir78000004, inst_id: inst70000179} +// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir78000004, inst_id: inst7000017D} +// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir78000004, inst_id: inst70000197} +// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir78000004, inst_id: inst7000018F} +// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir78000004, inst_id: inst70000183} +// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir78000004, inst_id: inst7000018F} +// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir78000004, inst_id: inst70000183} +// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir78000004, inst_id: inst70000182} +// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir78000004, inst_id: inst7000018E} +// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir78000004, inst_id: inst70000186} +// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir78000004, inst_id: inst70000186} +// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir78000004, inst_id: inst7000018A} +// CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir78000004, inst_id: inst7000018B} +// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir78000004, inst_id: inst70000191} +// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir78000004, inst_id: inst7000016D} +// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir78000004, inst_id: inst7000017F} +// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir78000004, inst_id: inst70000180} +// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir78000004, inst_id: inst70000184} +// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir78000004, inst_id: inst70000185} +// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir78000004, inst_id: inst70000188} +// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir78000004, inst_id: inst7000018D} +// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir78000004, inst_id: inst70000190} +// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir78000004, inst_id: inst70000193} +// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir78000004, inst_id: inst7000018F} +// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir78000004, inst_id: inst70000183} +// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir78000004, inst_id: inst7000019A} +// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir78000004, inst_id: inst7000019B} +// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir78000004, inst_id: inst7000019E} +// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir78000004, inst_id: inst700001A8} +// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir78000004, inst_id: inst700001A4} +// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir78000004, inst_id: inst700001A2} +// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir78000004, inst_id: inst700001A3} +// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir78000004, inst_id: inst700001A5} +// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir78000004, inst_id: inst700001C5} +// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir78000004, inst_id: inst700001C1} +// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir78000004, inst_id: inst700001BF} +// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir78000004, inst_id: inst700001C0} +// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir78000004, inst_id: inst700001C2} +// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir78000004, inst_id: inst70000205} +// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir78000004, inst_id: inst70000200} +// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir78000004, inst_id: inst70000228} +// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir78000004, inst_id: inst70000204} +// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir78000004, inst_id: inst70000228} +// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir78000004, inst_id: inst70000220} +// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir78000004, inst_id: inst70000214} +// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir78000004, inst_id: inst70000220} +// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir78000004, inst_id: inst70000214} +// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir78000004, inst_id: inst70000213} +// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir78000004, inst_id: inst7000021F} +// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir78000004, inst_id: inst70000217} +// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir78000004, inst_id: inst70000217} +// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir78000004, inst_id: inst7000021B} +// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir78000004, inst_id: inst7000021C} +// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir78000004, inst_id: inst70000222} +// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir78000004, inst_id: inst700001E2} +// CHECK:STDOUT: import_ir_instAB: {ir_id: import_ir78000004, inst_id: inst700001E9} +// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir78000004, inst_id: inst7000020D} +// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir78000004, inst_id: inst7000020E} +// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir78000004, inst_id: inst7000020F} +// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir78000004, inst_id: inst70000210} +// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir78000004, inst_id: inst70000211} +// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir78000004, inst_id: inst70000215} +// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir78000004, inst_id: inst70000216} +// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir78000004, inst_id: inst70000219} +// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir78000004, inst_id: inst7000021E} +// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir78000004, inst_id: inst70000221} +// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir78000004, inst_id: inst70000224} +// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir78000004, inst_id: inst70000263} +// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir78000004, inst_id: inst70000260} +// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir78000004, inst_id: inst70000233} +// CHECK:STDOUT: import_ir_instBA: {ir_id: import_ir78000004, inst_id: inst70000239} +// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir78000004, inst_id: inst7000023D} +// CHECK:STDOUT: import_ir_instBC: {ir_id: import_ir78000004, inst_id: inst7000023E} +// CHECK:STDOUT: import_ir_instBD: {ir_id: import_ir78000004, inst_id: inst7000023F} +// CHECK:STDOUT: import_ir_instBE: {ir_id: import_ir78000004, inst_id: inst70000240} +// CHECK:STDOUT: import_ir_instBF: {ir_id: import_ir78000004, inst_id: inst70000245} +// CHECK:STDOUT: import_ir_instC0: {ir_id: import_ir78000004, inst_id: inst7000024F} +// CHECK:STDOUT: import_ir_instC1: {ir_id: import_ir78000004, inst_id: inst70000258} +// CHECK:STDOUT: import_ir_instC2: {ir_id: import_ir78000004, inst_id: inst70000259} +// CHECK:STDOUT: import_ir_instC3: {ir_id: import_ir78000004, inst_id: inst7000025A} +// CHECK:STDOUT: import_ir_instC4: {ir_id: import_ir78000004, inst_id: inst7000025B} +// CHECK:STDOUT: import_ir_instC5: {ir_id: import_ir78000004, inst_id: inst70000267} +// CHECK:STDOUT: import_ir_instC6: {ir_id: import_ir78000004, inst_id: inst70000220} +// CHECK:STDOUT: import_ir_instC7: {ir_id: import_ir78000004, inst_id: inst70000214} +// CHECK:STDOUT: import_ir_instC8: {ir_id: import_ir78000004, inst_id: inst700001E0} +// CHECK:STDOUT: import_ir_instC9: {ir_id: import_ir78000004, inst_id: inst700001E6} +// CHECK:STDOUT: import_ir_instCA: {ir_id: import_ir78000004, inst_id: inst700001FB} +// CHECK:STDOUT: import_ir_instCB: {ir_id: import_ir78000004, inst_id: inst700001FD} +// CHECK:STDOUT: import_ir_instCC: {ir_id: import_ir78000004, inst_id: inst70000201} +// CHECK:STDOUT: import_ir_instCD: {ir_id: import_ir78000004, inst_id: inst700001E2} +// CHECK:STDOUT: import_ir_instCE: {ir_id: import_ir78000004, inst_id: inst700001E9} +// CHECK:STDOUT: import_ir_instCF: {ir_id: import_ir78000004, inst_id: inst700001E1} +// CHECK:STDOUT: import_ir_instD0: {ir_id: import_ir78000004, inst_id: inst700001E3} +// CHECK:STDOUT: import_ir_instD1: {ir_id: import_ir78000004, inst_id: inst700001E8} +// CHECK:STDOUT: import_ir_instD2: {ir_id: import_ir78000004, inst_id: inst700001EB} +// CHECK:STDOUT: import_ir_instD3: {ir_id: import_ir78000004, inst_id: inst700001F1} +// CHECK:STDOUT: import_ir_instD4: {ir_id: import_ir78000004, inst_id: inst700001F4} +// CHECK:STDOUT: import_ir_instD5: {ir_id: import_ir78000004, inst_id: inst700001F8} +// CHECK:STDOUT: import_ir_instD6: {ir_id: import_ir78000004, inst_id: inst700001FC} +// CHECK:STDOUT: import_ir_instD7: {ir_id: import_ir78000004, inst_id: inst70000203} +// CHECK:STDOUT: import_ir_instD8: {ir_id: import_ir78000004, inst_id: inst70000207} +// CHECK:STDOUT: import_ir_instD9: {ir_id: import_ir78000004, inst_id: inst7000022B} +// CHECK:STDOUT: import_ir_instDA: {ir_id: import_ir78000004, inst_id: inst7000022C} +// CHECK:STDOUT: import_ir_instDB: {ir_id: import_ir78000004, inst_id: inst700002A8} +// CHECK:STDOUT: import_ir_instDC: {ir_id: import_ir78000004, inst_id: inst700002A3} +// CHECK:STDOUT: import_ir_instDD: {ir_id: import_ir78000004, inst_id: inst700002CF} +// CHECK:STDOUT: import_ir_instDE: {ir_id: import_ir78000004, inst_id: inst700002A7} +// CHECK:STDOUT: import_ir_instDF: {ir_id: import_ir78000004, inst_id: inst700002CF} +// CHECK:STDOUT: import_ir_instE0: {ir_id: import_ir78000004, inst_id: inst700002C7} +// CHECK:STDOUT: import_ir_instE1: {ir_id: import_ir78000004, inst_id: inst700002BB} +// CHECK:STDOUT: import_ir_instE2: {ir_id: import_ir78000004, inst_id: inst700002C7} +// CHECK:STDOUT: import_ir_instE3: {ir_id: import_ir78000004, inst_id: inst700002BB} +// CHECK:STDOUT: import_ir_instE4: {ir_id: import_ir78000004, inst_id: inst700002BA} +// CHECK:STDOUT: import_ir_instE5: {ir_id: import_ir78000004, inst_id: inst700002C6} +// CHECK:STDOUT: import_ir_instE6: {ir_id: import_ir78000004, inst_id: inst700002BE} +// CHECK:STDOUT: import_ir_instE7: {ir_id: import_ir78000004, inst_id: inst700002BE} +// CHECK:STDOUT: import_ir_instE8: {ir_id: import_ir78000004, inst_id: inst700002C2} +// CHECK:STDOUT: import_ir_instE9: {ir_id: import_ir78000004, inst_id: inst700002C3} +// CHECK:STDOUT: import_ir_instEA: {ir_id: import_ir78000004, inst_id: inst700002C9} +// CHECK:STDOUT: import_ir_instEB: {ir_id: import_ir78000004, inst_id: inst7000027A} +// CHECK:STDOUT: import_ir_instEC: {ir_id: import_ir78000004, inst_id: inst70000280} +// CHECK:STDOUT: import_ir_instED: {ir_id: import_ir78000004, inst_id: inst70000287} +// CHECK:STDOUT: import_ir_instEE: {ir_id: import_ir78000004, inst_id: inst700002B2} +// CHECK:STDOUT: import_ir_instEF: {ir_id: import_ir78000004, inst_id: inst700002B3} +// CHECK:STDOUT: import_ir_instF0: {ir_id: import_ir78000004, inst_id: inst700002B4} +// CHECK:STDOUT: import_ir_instF1: {ir_id: import_ir78000004, inst_id: inst700002B5} +// CHECK:STDOUT: import_ir_instF2: {ir_id: import_ir78000004, inst_id: inst700002B6} +// CHECK:STDOUT: import_ir_instF3: {ir_id: import_ir78000004, inst_id: inst700002B7} +// CHECK:STDOUT: import_ir_instF4: {ir_id: import_ir78000004, inst_id: inst700002B8} +// CHECK:STDOUT: import_ir_instF5: {ir_id: import_ir78000004, inst_id: inst700002BC} +// CHECK:STDOUT: import_ir_instF6: {ir_id: import_ir78000004, inst_id: inst700002BD} +// CHECK:STDOUT: import_ir_instF7: {ir_id: import_ir78000004, inst_id: inst700002C0} +// CHECK:STDOUT: import_ir_instF8: {ir_id: import_ir78000004, inst_id: inst700002C5} +// CHECK:STDOUT: import_ir_instF9: {ir_id: import_ir78000004, inst_id: inst700002C8} +// CHECK:STDOUT: import_ir_instFA: {ir_id: import_ir78000004, inst_id: inst700002CB} +// CHECK:STDOUT: import_ir_instFB: {ir_id: import_ir78000004, inst_id: inst7000031D} +// CHECK:STDOUT: import_ir_instFC: {ir_id: import_ir78000004, inst_id: inst7000031A} +// CHECK:STDOUT: import_ir_instFD: {ir_id: import_ir78000004, inst_id: inst700002DA} +// CHECK:STDOUT: import_ir_instFE: {ir_id: import_ir78000004, inst_id: inst700002DF} +// CHECK:STDOUT: import_ir_instFF: {ir_id: import_ir78000004, inst_id: inst700002E3} +// CHECK:STDOUT: import_ir_inst100: {ir_id: import_ir78000004, inst_id: inst700002E4} +// CHECK:STDOUT: import_ir_inst101: {ir_id: import_ir78000004, inst_id: inst700002E5} +// CHECK:STDOUT: import_ir_inst102: {ir_id: import_ir78000004, inst_id: inst700002E6} +// CHECK:STDOUT: import_ir_inst103: {ir_id: import_ir78000004, inst_id: inst700002EB} +// CHECK:STDOUT: import_ir_inst104: {ir_id: import_ir78000004, inst_id: inst700002F3} +// CHECK:STDOUT: import_ir_inst105: {ir_id: import_ir78000004, inst_id: inst700002F7} +// CHECK:STDOUT: import_ir_inst106: {ir_id: import_ir78000004, inst_id: inst700002F8} +// CHECK:STDOUT: import_ir_inst107: {ir_id: import_ir78000004, inst_id: inst700002F9} +// CHECK:STDOUT: import_ir_inst108: {ir_id: import_ir78000004, inst_id: inst700002FA} +// CHECK:STDOUT: import_ir_inst109: {ir_id: import_ir78000004, inst_id: inst700002FF} +// CHECK:STDOUT: import_ir_inst10A: {ir_id: import_ir78000004, inst_id: inst70000309} +// CHECK:STDOUT: import_ir_inst10B: {ir_id: import_ir78000004, inst_id: inst70000312} +// CHECK:STDOUT: import_ir_inst10C: {ir_id: import_ir78000004, inst_id: inst70000313} +// CHECK:STDOUT: import_ir_inst10D: {ir_id: import_ir78000004, inst_id: inst70000314} +// CHECK:STDOUT: import_ir_inst10E: {ir_id: import_ir78000004, inst_id: inst70000315} +// CHECK:STDOUT: import_ir_inst10F: {ir_id: import_ir78000004, inst_id: inst70000321} +// CHECK:STDOUT: import_ir_inst110: {ir_id: import_ir78000004, inst_id: inst700002C7} +// CHECK:STDOUT: import_ir_inst111: {ir_id: import_ir78000004, inst_id: inst700002BB} +// CHECK:STDOUT: import_ir_inst112: {ir_id: import_ir78000004, inst_id: inst70000278} +// CHECK:STDOUT: import_ir_inst113: {ir_id: import_ir78000004, inst_id: inst7000027E} +// CHECK:STDOUT: import_ir_inst114: {ir_id: import_ir78000004, inst_id: inst70000284} +// CHECK:STDOUT: import_ir_inst115: {ir_id: import_ir78000004, inst_id: inst7000029D} +// CHECK:STDOUT: import_ir_inst116: {ir_id: import_ir78000004, inst_id: inst7000029F} +// CHECK:STDOUT: import_ir_inst117: {ir_id: import_ir78000004, inst_id: inst700002A4} +// CHECK:STDOUT: import_ir_inst118: {ir_id: import_ir78000004, inst_id: inst7000027A} +// CHECK:STDOUT: import_ir_inst119: {ir_id: import_ir78000004, inst_id: inst70000280} +// CHECK:STDOUT: import_ir_inst11A: {ir_id: import_ir78000004, inst_id: inst70000287} +// CHECK:STDOUT: import_ir_inst11B: {ir_id: import_ir78000004, inst_id: inst70000279} +// CHECK:STDOUT: import_ir_inst11C: {ir_id: import_ir78000004, inst_id: inst7000027B} +// CHECK:STDOUT: import_ir_inst11D: {ir_id: import_ir78000004, inst_id: inst7000027F} +// CHECK:STDOUT: import_ir_inst11E: {ir_id: import_ir78000004, inst_id: inst70000281} +// CHECK:STDOUT: import_ir_inst11F: {ir_id: import_ir78000004, inst_id: inst70000286} +// CHECK:STDOUT: import_ir_inst120: {ir_id: import_ir78000004, inst_id: inst70000289} +// CHECK:STDOUT: import_ir_inst121: {ir_id: import_ir78000004, inst_id: inst70000290} +// CHECK:STDOUT: import_ir_inst122: {ir_id: import_ir78000004, inst_id: inst70000293} +// CHECK:STDOUT: import_ir_inst123: {ir_id: import_ir78000004, inst_id: inst70000296} +// CHECK:STDOUT: import_ir_inst124: {ir_id: import_ir78000004, inst_id: inst7000029A} +// CHECK:STDOUT: import_ir_inst125: {ir_id: import_ir78000004, inst_id: inst7000029E} +// CHECK:STDOUT: import_ir_inst126: {ir_id: import_ir78000004, inst_id: inst700002A6} +// CHECK:STDOUT: import_ir_inst127: {ir_id: import_ir78000004, inst_id: inst700002AA} +// CHECK:STDOUT: import_ir_inst128: {ir_id: import_ir78000004, inst_id: inst700002D2} +// CHECK:STDOUT: import_ir_inst129: {ir_id: import_ir78000004, inst_id: inst700002D3} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: clang_decl_signatures: {} // CHECK:STDOUT: name_scopes: @@ -331,15 +345,15 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: name_scope78000002: {inst: inst78000059, parent_scope: name_scope78000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst78000083}} // CHECK:STDOUT: name_scope78000003: {inst: inst7800005B, parent_scope: name_scope78000002, has_error: false, extended_scopes: [], names: {name4: inst7800005D}} // CHECK:STDOUT: name_scope78000004: {inst: inst78000089, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope78000005: {inst: inst780000D5, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope78000006: {inst: inst780000D9, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope78000007: {inst: inst780000DD, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope78000008: {inst: inst780000E1, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope78000009: {inst: inst780000E5, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope7800000A: {inst: inst78000113, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope7800000B: {inst: inst78000117, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope7800000C: {inst: inst7800011B, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope7800000D: {inst: inst78000177, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope78000005: {inst: inst780000D8, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope78000006: {inst: inst780000DE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope78000007: {inst: inst780000E4, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope78000008: {inst: inst780000EA, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope78000009: {inst: inst780000F0, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope7800000A: {inst: inst78000121, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope7800000B: {inst: inst78000127, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope7800000C: {inst: inst7800012D, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope7800000D: {inst: inst7800018C, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name78000000: {name: name(PeriodSelf), parent_scope: name_scope, index: -1, is_template: 0, is_unused: 0, is_frozen_period_self: 1}, form: inst} // CHECK:STDOUT: entity_name78000001: {name: name1, parent_scope: name_scope, index: 0, is_template: 0, is_unused: 0, form: inst} @@ -414,37 +428,37 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: functions: // CHECK:STDOUT: function78000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block78000010, call_params_id: inst_block78000011, return_type_inst_id: inst78000036, return_form_inst_id: inst78000038, return_pattern_id: inst78000040, body: [inst_block78000018]} // CHECK:STDOUT: function78000001: {name: name4, parent_scope: name_scope78000003, call_param_patterns_id: inst_block7800001E, return_type_inst_id: inst78000072, return_form_inst_id: inst78000073, return_pattern_id: inst78000074} -// CHECK:STDOUT: function78000002: {name: name4, parent_scope: name_scope78000004, call_param_patterns_id: inst_block78000029, return_type_inst_id: inst780000A3, return_form_inst_id: inst780000A4, return_pattern_id: inst780000A5} -// CHECK:STDOUT: function78000003: {name: name4, parent_scope: name_scope78000009, call_param_patterns_id: inst_block7800003F, return_type_inst_id: inst78000101, return_form_inst_id: inst78000102, return_pattern_id: inst78000103, builtin: primitive_copy} -// CHECK:STDOUT: function78000004: {name: name4, parent_scope: name_scope7800000C, call_param_patterns_id: inst_block7800004C, return_type_inst_id: inst78000136, return_form_inst_id: inst78000137, return_pattern_id: inst78000138} -// CHECK:STDOUT: function78000005: {name: name4, parent_scope: name_scope7800000D, call_param_patterns_id: inst_block78000068, return_type_inst_id: inst78000192, return_form_inst_id: inst78000193, return_pattern_id: inst78000194} +// CHECK:STDOUT: function78000002: {name: name4, parent_scope: name_scope78000004, call_param_patterns_id: inst_block78000029, return_type_inst_id: inst780000A4, return_form_inst_id: inst780000A5, return_pattern_id: inst780000A6} +// CHECK:STDOUT: function78000003: {name: name4, parent_scope: name_scope78000009, call_param_patterns_id: inst_block7800003F, return_type_inst_id: inst7800010F, return_form_inst_id: inst78000110, return_pattern_id: inst78000111, builtin: primitive_copy} +// CHECK:STDOUT: function78000004: {name: name4, parent_scope: name_scope7800000C, call_param_patterns_id: inst_block7800004C, return_type_inst_id: inst78000149, return_form_inst_id: inst7800014A, return_pattern_id: inst7800014B} +// CHECK:STDOUT: function78000005: {name: name4, parent_scope: name_scope7800000D, call_param_patterns_id: inst_block78000068, return_type_inst_id: inst780001A8, return_form_inst_id: inst780001A9, return_pattern_id: inst780001AA} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: interfaces: // CHECK:STDOUT: interface78000000: {name: name3, parent_scope: name_scope78000001, require_impls_block_id: require_block_empty, core_interface: Copy} // CHECK:STDOUT: associated_constants: {} // CHECK:STDOUT: impls: -// CHECK:STDOUT: impl78000000: {self: inst780000CA, constraint: inst780000CB, witness: inst78000088} -// CHECK:STDOUT: impl78000001: {self: inst780000D6, constraint: inst780000D7, witness: inst780000D4} -// CHECK:STDOUT: impl78000002: {self: inst780000DA, constraint: inst780000DB, witness: inst780000D8} -// CHECK:STDOUT: impl78000003: {self: inst780000DE, constraint: inst780000DF, witness: inst780000DC} -// CHECK:STDOUT: impl78000004: {self: inst780000E2, constraint: inst780000E3, witness: inst780000E0} -// CHECK:STDOUT: impl78000005: {self: inst780000EA, constraint: inst780000EB, witness: inst780000E4} -// CHECK:STDOUT: impl78000006: {self: inst78000114, constraint: inst78000115, witness: inst78000112} -// CHECK:STDOUT: impl78000007: {self: inst78000118, constraint: inst78000119, witness: inst78000116} -// CHECK:STDOUT: impl78000008: {self: inst78000167, constraint: inst78000168, witness: inst7800011A} -// CHECK:STDOUT: impl78000009: {self: inst780001CD, constraint: inst780001CE, witness: inst78000176} +// CHECK:STDOUT: impl78000000: {self: inst780000CB, constraint: inst780000CC, witness: inst78000088} +// CHECK:STDOUT: impl78000001: {self: inst780000DA, constraint: inst780000DB, witness: inst780000D7} +// CHECK:STDOUT: impl78000002: {self: inst780000E0, constraint: inst780000E1, witness: inst780000DD} +// CHECK:STDOUT: impl78000003: {self: inst780000E6, constraint: inst780000E7, witness: inst780000E3} +// CHECK:STDOUT: impl78000004: {self: inst780000EC, constraint: inst780000ED, witness: inst780000E9} +// CHECK:STDOUT: impl78000005: {self: inst780000F6, constraint: inst780000F7, witness: inst780000EF} +// CHECK:STDOUT: impl78000006: {self: inst78000123, constraint: inst78000124, witness: inst78000120} +// CHECK:STDOUT: impl78000007: {self: inst78000129, constraint: inst7800012A, witness: inst78000126} +// CHECK:STDOUT: impl78000008: {self: inst7800017A, constraint: inst7800017B, witness: inst7800012C} +// CHECK:STDOUT: impl78000009: {self: inst780001E3, constraint: inst780001E4, witness: inst7800018B} // CHECK:STDOUT: generics: // CHECK:STDOUT: generic78000000: {decl: inst78000048, bindings: inst_block78000014, self_specific_id: specific78000000, decl_block_id: inst_block78000016, definition_block_id: inst_block7800008B} // CHECK:STDOUT: generic78000001: {decl: inst7800005B, bindings: inst_block7800001B, self_specific_id: specific78000001, decl_block_id: inst_block_empty, definition_block_id: inst_block78000024} // CHECK:STDOUT: generic78000002: {decl: inst78000060, bindings: inst_block78000020, self_specific_id: specific78000002, decl_block_id: inst_block78000021, definition_block_id: inst_block} // CHECK:STDOUT: generic78000003: {decl: inst78000089, bindings: inst_block78000034, self_specific_id: specific78000004, decl_block_id: inst_block78000036, definition_block_id: inst_block78000038} -// CHECK:STDOUT: generic78000004: {decl: inst78000090, bindings: inst_block7800002B, self_specific_id: specific78000007, decl_block_id: inst_block7800002C, definition_block_id: inst_block78000031} -// CHECK:STDOUT: generic78000005: {decl: inst780000E5, bindings: inst_block7800003C, self_specific_id: specific7800000B, decl_block_id: inst_block7800003E, definition_block_id: inst_block78000045} -// CHECK:STDOUT: generic78000006: {decl: inst780000F1, bindings: inst_block78000041, self_specific_id: specific7800000D, decl_block_id: inst_block78000042, definition_block_id: inst_block_empty} -// CHECK:STDOUT: generic78000007: {decl: inst7800011B, bindings: inst_block7800005B, self_specific_id: specific7800000E, decl_block_id: inst_block7800005F, definition_block_id: inst_block78000061} -// CHECK:STDOUT: generic78000008: {decl: inst78000122, bindings: inst_block7800004E, self_specific_id: specific78000011, decl_block_id: inst_block78000050, definition_block_id: inst_block78000058} -// CHECK:STDOUT: generic78000009: {decl: inst78000177, bindings: inst_block78000079, self_specific_id: specific78000017, decl_block_id: inst_block7800007D, definition_block_id: inst_block7800007F} -// CHECK:STDOUT: generic7800000A: {decl: inst7800017E, bindings: inst_block7800006A, self_specific_id: specific7800001A, decl_block_id: inst_block7800006C, definition_block_id: inst_block78000076} +// CHECK:STDOUT: generic78000004: {decl: inst78000091, bindings: inst_block7800002B, self_specific_id: specific78000007, decl_block_id: inst_block7800002C, definition_block_id: inst_block78000031} +// CHECK:STDOUT: generic78000005: {decl: inst780000F0, bindings: inst_block7800003C, self_specific_id: specific7800000B, decl_block_id: inst_block7800003E, definition_block_id: inst_block78000045} +// CHECK:STDOUT: generic78000006: {decl: inst780000FF, bindings: inst_block78000041, self_specific_id: specific7800000D, decl_block_id: inst_block78000042, definition_block_id: inst_block_empty} +// CHECK:STDOUT: generic78000007: {decl: inst7800012D, bindings: inst_block7800005B, self_specific_id: specific7800000E, decl_block_id: inst_block7800005F, definition_block_id: inst_block78000061} +// CHECK:STDOUT: generic78000008: {decl: inst78000135, bindings: inst_block7800004E, self_specific_id: specific78000011, decl_block_id: inst_block78000050, definition_block_id: inst_block78000058} +// CHECK:STDOUT: generic78000009: {decl: inst7800018C, bindings: inst_block78000079, self_specific_id: specific78000017, decl_block_id: inst_block7800007D, definition_block_id: inst_block7800007F} +// CHECK:STDOUT: generic7800000A: {decl: inst78000194, bindings: inst_block7800006A, self_specific_id: specific7800001A, decl_block_id: inst_block7800006C, definition_block_id: inst_block78000076} // CHECK:STDOUT: specifics: // CHECK:STDOUT: specific78000000: {generic: generic78000000, args: inst_block78000015, decl_block_id: inst_block78000017, decl_has_error: 0, definition_block_id: inst_block, definition_has_error: 0} // CHECK:STDOUT: specific78000001: {generic: generic78000001, args: inst_block7800001C, decl_block_id: inst_block_empty, decl_has_error: 0, definition_block_id: inst_block7800001D, definition_has_error: 0} @@ -580,12 +594,12 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: object_layout: // CHECK:STDOUT: size: 0 // CHECK:STDOUT: alignment: 1 -// CHECK:STDOUT: 'type(symbolic_constant780001C3)': +// CHECK:STDOUT: 'type(symbolic_constant780001D3)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst7800002C)} // CHECK:STDOUT: object_layout: // CHECK:STDOUT: size: 0 // CHECK:STDOUT: alignment: 1 -// CHECK:STDOUT: 'type(symbolic_constant780001C8)': +// CHECK:STDOUT: 'type(symbolic_constant780001D8)': // CHECK:STDOUT: value_repr: {kind: none, type: type(inst7800002C)} // CHECK:STDOUT: object_layout: // CHECK:STDOUT: size: 0 @@ -725,382 +739,406 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst7800008A: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} // CHECK:STDOUT: inst7800008B: {kind: FacetAccessType, arg0: inst7800008A, type: type(TypeType)} // CHECK:STDOUT: inst7800008C: {kind: ConstType, arg0: inst7800008B, type: type(TypeType)} -// CHECK:STDOUT: inst7800008D: {kind: ImportRefUnloaded, arg0: import_ir_inst24, arg1: entity_name} -// CHECK:STDOUT: inst7800008E: {kind: ImplWitnessTable, arg0: inst_block78000025, arg1: impl78000000} -// CHECK:STDOUT: inst7800008F: {kind: ImplWitness, arg0: inst7800008E, arg1: specific78000004, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000090: {kind: FunctionDecl, arg0: function78000002, arg1: inst_block_empty, type: type(symbolic_constant7800004B)} -// CHECK:STDOUT: inst78000091: {kind: FunctionType, arg0: function78000002, arg1: specific78000004, type: type(TypeType)} -// CHECK:STDOUT: inst78000092: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800004B)} -// CHECK:STDOUT: inst78000093: {kind: PatternType, arg0: inst7800008C, type: type(TypeType)} -// CHECK:STDOUT: inst78000094: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst78000095: {kind: PatternType, arg0: inst7800005A, type: type(TypeType)} -// CHECK:STDOUT: inst78000096: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000095)} -// CHECK:STDOUT: inst78000097: {kind: ImportRefLoaded, arg0: import_ir_inst27, arg1: entity_name, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst78000098: {kind: ReturnSlotPattern, arg0: inst78000094, arg1: inst, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst78000099: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst7800009A: {kind: ImportRefLoaded, arg0: import_ir_inst28, arg1: entity_name, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst7800009B: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000099, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst7800009C: {kind: ImportRefLoaded, arg0: import_ir_inst29, arg1: entity_name, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst7800009D: {kind: InitForm, arg0: inst7800008C, type: type(inst(FormType))} -// CHECK:STDOUT: inst7800009E: {kind: ImportRefLoaded, arg0: import_ir_inst2A, arg1: entity_name, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst7800009F: {kind: ImportRefLoaded, arg0: import_ir_inst2B, arg1: entity_name, type: type(symbolic_constant78000054)} -// CHECK:STDOUT: inst780000A0: {kind: ImportRefLoaded, arg0: import_ir_inst2C, arg1: entity_name, type: type(symbolic_constant78000054)} -// CHECK:STDOUT: inst780000A1: {kind: ImportRefLoaded, arg0: import_ir_inst2D, arg1: entity_name, type: type(symbolic_constant78000054)} -// CHECK:STDOUT: inst780000A2: {kind: ImportRefLoaded, arg0: import_ir_inst2E, arg1: entity_name, type: type(symbolic_constant78000054)} -// CHECK:STDOUT: inst780000A3: {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000A4: {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name, type: type(inst(FormType))} -// CHECK:STDOUT: inst780000A5: {kind: ImportRefLoaded, arg0: import_ir_inst31, arg1: entity_name, type: type(symbolic_constant78000054)} -// CHECK:STDOUT: inst780000A6: {kind: ImportRefLoaded, arg0: import_ir_inst32, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst780000A7: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst780000A8: {kind: FacetAccessType, arg0: inst780000A7, type: type(TypeType)} -// CHECK:STDOUT: inst780000A9: {kind: ConstType, arg0: inst780000A8, type: type(TypeType)} -// CHECK:STDOUT: inst780000AA: {kind: PatternType, arg0: inst780000A9, type: type(TypeType)} -// CHECK:STDOUT: inst780000AB: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000069)} -// CHECK:STDOUT: inst780000AC: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780000AB, type: type(symbolic_constant78000069)} -// CHECK:STDOUT: inst780000AD: {kind: InitForm, arg0: inst780000A9, type: type(inst(FormType))} -// CHECK:STDOUT: inst780000AE: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000069)} -// CHECK:STDOUT: inst780000AF: {kind: ReturnSlotPattern, arg0: inst780000AE, arg1: inst, type: type(symbolic_constant78000069)} -// CHECK:STDOUT: inst780000B0: {kind: LookupImplWitness, arg0: inst7800008A, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000B1: {kind: FunctionType, arg0: function78000001, arg1: specific78000005, type: type(TypeType)} -// CHECK:STDOUT: inst780000B2: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant78000070)} -// CHECK:STDOUT: inst780000B3: {kind: FunctionTypeWithSelfType, arg0: inst780000B1, arg1: inst7800008A, type: type(TypeType)} -// CHECK:STDOUT: inst780000B4: {kind: ImplWitnessAccess, arg0: inst780000B0, arg1: element0, type: type(symbolic_constant78000072)} -// CHECK:STDOUT: inst780000B5: {kind: SpecificImplFunction, arg0: inst780000B4, arg1: specific78000006, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780000B6: {kind: PatternType, arg0: inst7800008B, type: type(TypeType)} -// CHECK:STDOUT: inst780000B7: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000076)} -// CHECK:STDOUT: inst780000B8: {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name, type: type(symbolic_constant78000076)} -// CHECK:STDOUT: inst780000B9: {kind: ReturnSlotPattern, arg0: inst780000B7, arg1: inst, type: type(symbolic_constant78000076)} -// CHECK:STDOUT: inst780000BA: {kind: InitForm, arg0: inst7800008B, type: type(inst(FormType))} -// CHECK:STDOUT: inst780000BB: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000076)} -// CHECK:STDOUT: inst780000BC: {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name, type: type(symbolic_constant78000076)} -// CHECK:STDOUT: inst780000BD: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780000BB, type: type(symbolic_constant78000076)} -// CHECK:STDOUT: inst780000BE: {kind: RequireCompleteType, arg0: inst7800008B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000BF: {kind: RequireCompleteType, arg0: inst7800008C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000C0: {kind: RequireCompleteType, arg0: inst780000A9, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000C1: {kind: RequireCompleteType, arg0: inst780000A8, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000C2: {kind: FunctionType, arg0: function78000001, arg1: specific78000008, type: type(TypeType)} -// CHECK:STDOUT: inst780000C3: {kind: FunctionTypeWithSelfType, arg0: inst780000C2, arg1: inst780000A7, type: type(TypeType)} -// CHECK:STDOUT: inst780000C4: {kind: LookupImplWitness, arg0: inst780000A7, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000C5: {kind: ImplWitnessAccess, arg0: inst780000C4, arg1: element0, type: type(symbolic_constant78000087)} -// CHECK:STDOUT: inst780000C6: {kind: SpecificImplFunction, arg0: inst780000C5, arg1: specific78000009, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780000C7: {kind: ImportRefLoaded, arg0: import_ir_inst45, arg1: entity_name, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst780000C8: {kind: ImportRefLoaded, arg0: import_ir_inst46, arg1: entity_name, type: type(symbolic_constant7800004E)} -// CHECK:STDOUT: inst780000C9: {kind: ImportRefLoaded, arg0: import_ir_inst47, arg1: entity_name, type: type(inst78000095)} -// CHECK:STDOUT: inst780000CA: {kind: ImportRefLoaded, arg0: import_ir_inst48, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000CB: {kind: ImportRefLoaded, arg0: import_ir_inst49, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000CC: {kind: ImportRefLoaded, arg0: import_ir_inst4A, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst780000CD: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000095)} -// CHECK:STDOUT: inst780000CE: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst780000CF: {kind: FacetAccessType, arg0: inst780000CE, type: type(TypeType)} -// CHECK:STDOUT: inst780000D0: {kind: ConstType, arg0: inst780000CF, type: type(TypeType)} -// CHECK:STDOUT: inst780000D1: {kind: ImplWitness, arg0: inst7800008E, arg1: specific7800000A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000D2: {kind: FunctionType, arg0: function78000002, arg1: specific7800000A, type: type(TypeType)} -// CHECK:STDOUT: inst780000D3: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant78000096)} -// CHECK:STDOUT: inst780000D4: {kind: ImportRefUnloaded, arg0: import_ir_inst52, arg1: entity_name} -// CHECK:STDOUT: inst780000D5: {kind: ImplDecl, arg0: impl78000001, arg1: inst_block_empty} -// CHECK:STDOUT: inst780000D6: {kind: ImportRefLoaded, arg0: import_ir_inst54, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000D7: {kind: ImportRefLoaded, arg0: import_ir_inst55, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000D8: {kind: ImportRefUnloaded, arg0: import_ir_inst56, arg1: entity_name} -// CHECK:STDOUT: inst780000D9: {kind: ImplDecl, arg0: impl78000002, arg1: inst_block_empty} -// CHECK:STDOUT: inst780000DA: {kind: ImportRefLoaded, arg0: import_ir_inst58, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000DB: {kind: ImportRefLoaded, arg0: import_ir_inst59, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000DC: {kind: ImportRefUnloaded, arg0: import_ir_inst5A, arg1: entity_name} -// CHECK:STDOUT: inst780000DD: {kind: ImplDecl, arg0: impl78000003, arg1: inst_block_empty} -// CHECK:STDOUT: inst780000DE: {kind: ImportRefLoaded, arg0: import_ir_inst5C, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000DF: {kind: ImportRefLoaded, arg0: import_ir_inst5D, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000E0: {kind: ImportRefUnloaded, arg0: import_ir_inst5E, arg1: entity_name} -// CHECK:STDOUT: inst780000E1: {kind: ImplDecl, arg0: impl78000004, arg1: inst_block_empty} -// CHECK:STDOUT: inst780000E2: {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000E3: {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000E4: {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000E5: {kind: ImplDecl, arg0: impl78000005, arg1: inst_block_empty} -// CHECK:STDOUT: inst780000E6: {kind: ImportRefUnloaded, arg0: import_ir_inst64, arg1: entity_name} -// CHECK:STDOUT: inst780000E7: {kind: ImplWitnessTable, arg0: inst_block78000039, arg1: impl78000005} -// CHECK:STDOUT: inst780000E8: {kind: ImplWitness, arg0: inst780000E7, arg1: specific7800000B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000E9: {kind: ImportRefLoaded, arg0: import_ir_inst66, arg1: entity_name, type: type(inst78000016)} -// CHECK:STDOUT: inst780000EA: {kind: ImportRefLoaded, arg0: import_ir_inst67, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000EB: {kind: ImportRefLoaded, arg0: import_ir_inst68, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000EC: {kind: ImportRefLoaded, arg0: import_ir_inst69, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780000ED: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000016)} -// CHECK:STDOUT: inst780000EE: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst780000EF: {kind: PointerType, arg0: inst780000EE, type: type(TypeType)} -// CHECK:STDOUT: inst780000F0: {kind: ImplWitness, arg0: inst780000E7, arg1: specific7800000C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780000F1: {kind: FunctionDecl, arg0: function78000003, arg1: inst_block_empty, type: type(symbolic_constant780000A5)} -// CHECK:STDOUT: inst780000F2: {kind: FunctionType, arg0: function78000003, arg1: specific7800000B, type: type(TypeType)} -// CHECK:STDOUT: inst780000F3: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000A5)} -// CHECK:STDOUT: inst780000F4: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000F5: {kind: ImportRefLoaded, arg0: import_ir_inst6F, arg1: entity_name, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000F6: {kind: ReturnSlotPattern, arg0: inst780000F4, arg1: inst, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000F7: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000F8: {kind: ImportRefLoaded, arg0: import_ir_inst70, arg1: entity_name, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000F9: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780000F7, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000FA: {kind: ImportRefLoaded, arg0: import_ir_inst71, arg1: entity_name, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000FB: {kind: InitForm, arg0: inst7800001F, type: type(inst(FormType))} -// CHECK:STDOUT: inst780000FC: {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst780000FD: {kind: ImportRefLoaded, arg0: import_ir_inst73, arg1: entity_name, type: type(symbolic_constant780000AC)} -// CHECK:STDOUT: inst780000FE: {kind: ImportRefLoaded, arg0: import_ir_inst74, arg1: entity_name, type: type(symbolic_constant780000AC)} -// CHECK:STDOUT: inst780000FF: {kind: ImportRefLoaded, arg0: import_ir_inst75, arg1: entity_name, type: type(symbolic_constant780000AC)} -// CHECK:STDOUT: inst78000100: {kind: ImportRefLoaded, arg0: import_ir_inst76, arg1: entity_name, type: type(symbolic_constant780000AC)} -// CHECK:STDOUT: inst78000101: {kind: ImportRefLoaded, arg0: import_ir_inst77, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000102: {kind: ImportRefLoaded, arg0: import_ir_inst78, arg1: entity_name, type: type(inst(FormType))} -// CHECK:STDOUT: inst78000103: {kind: ImportRefLoaded, arg0: import_ir_inst79, arg1: entity_name, type: type(symbolic_constant780000AC)} -// CHECK:STDOUT: inst78000104: {kind: ImportRefLoaded, arg0: import_ir_inst7A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000105: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst78000106: {kind: PointerType, arg0: inst78000105, type: type(TypeType)} -// CHECK:STDOUT: inst78000107: {kind: PatternType, arg0: inst78000106, type: type(TypeType)} -// CHECK:STDOUT: inst78000108: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000BE)} -// CHECK:STDOUT: inst78000109: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000108, type: type(symbolic_constant780000BE)} -// CHECK:STDOUT: inst7800010A: {kind: InitForm, arg0: inst78000106, type: type(inst(FormType))} -// CHECK:STDOUT: inst7800010B: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000BE)} -// CHECK:STDOUT: inst7800010C: {kind: ReturnSlotPattern, arg0: inst7800010B, arg1: inst, type: type(symbolic_constant780000BE)} -// CHECK:STDOUT: inst7800010D: {kind: ImportRefLoaded, arg0: import_ir_inst83, arg1: entity_name, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst7800010E: {kind: ImportRefLoaded, arg0: import_ir_inst84, arg1: entity_name, type: type(symbolic_constant78000007)} -// CHECK:STDOUT: inst7800010F: {kind: FunctionType, arg0: function78000003, arg1: specific7800000C, type: type(TypeType)} -// CHECK:STDOUT: inst78000110: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000C5)} -// CHECK:STDOUT: inst78000111: {kind: RequireCompleteType, arg0: inst780000EF, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000112: {kind: ImportRefUnloaded, arg0: import_ir_inst88, arg1: entity_name} -// CHECK:STDOUT: inst78000113: {kind: ImplDecl, arg0: impl78000006, arg1: inst_block_empty} -// CHECK:STDOUT: inst78000114: {kind: ImportRefLoaded, arg0: import_ir_inst8A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000115: {kind: ImportRefLoaded, arg0: import_ir_inst8B, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000116: {kind: ImportRefUnloaded, arg0: import_ir_inst8C, arg1: entity_name} -// CHECK:STDOUT: inst78000117: {kind: ImplDecl, arg0: impl78000007, arg1: inst_block_empty} -// CHECK:STDOUT: inst78000118: {kind: ImportRefLoaded, arg0: import_ir_inst8E, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000119: {kind: ImportRefLoaded, arg0: import_ir_inst8F, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst7800011A: {kind: ImportRefUnloaded, arg0: import_ir_inst90, arg1: entity_name} -// CHECK:STDOUT: inst7800011B: {kind: ImplDecl, arg0: impl78000008, arg1: inst_block_empty} -// CHECK:STDOUT: inst7800011C: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800011D: {kind: FacetAccessType, arg0: inst7800011C, type: type(TypeType)} -// CHECK:STDOUT: inst7800011E: {kind: TupleType, arg0: inst_block78000046, type: type(TypeType)} -// CHECK:STDOUT: inst7800011F: {kind: ImportRefUnloaded, arg0: import_ir_inst92, arg1: entity_name} -// CHECK:STDOUT: inst78000120: {kind: ImplWitnessTable, arg0: inst_block78000047, arg1: impl78000008} -// CHECK:STDOUT: inst78000121: {kind: ImplWitness, arg0: inst78000120, arg1: specific7800000E, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000122: {kind: FunctionDecl, arg0: function78000004, arg1: inst_block_empty, type: type(symbolic_constant780000CE)} -// CHECK:STDOUT: inst78000123: {kind: FunctionType, arg0: function78000004, arg1: specific7800000E, type: type(TypeType)} -// CHECK:STDOUT: inst78000124: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000CE)} -// CHECK:STDOUT: inst78000125: {kind: PatternType, arg0: inst7800011E, type: type(TypeType)} -// CHECK:STDOUT: inst78000126: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst78000127: {kind: TupleType, arg0: inst_block78000049, type: type(TypeType)} -// CHECK:STDOUT: inst78000128: {kind: TupleValue, arg0: inst_block78000048, type: type(inst78000127)} -// CHECK:STDOUT: inst78000129: {kind: SymbolicBindingPattern, arg0: entity_name78000021, type: type(inst78000095)} -// CHECK:STDOUT: inst7800012A: {kind: ImportRefLoaded, arg0: import_ir_inst95, arg1: entity_name, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst7800012B: {kind: ReturnSlotPattern, arg0: inst78000126, arg1: inst, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst7800012C: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst7800012D: {kind: ImportRefLoaded, arg0: import_ir_inst96, arg1: entity_name, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst7800012E: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst7800012C, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst7800012F: {kind: ImportRefLoaded, arg0: import_ir_inst97, arg1: entity_name, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst78000130: {kind: InitForm, arg0: inst7800011E, type: type(inst(FormType))} -// CHECK:STDOUT: inst78000131: {kind: ImportRefLoaded, arg0: import_ir_inst98, arg1: entity_name, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst78000132: {kind: ImportRefLoaded, arg0: import_ir_inst99, arg1: entity_name, type: type(symbolic_constant780000D8)} -// CHECK:STDOUT: inst78000133: {kind: ImportRefLoaded, arg0: import_ir_inst9A, arg1: entity_name, type: type(symbolic_constant780000D8)} -// CHECK:STDOUT: inst78000134: {kind: ImportRefLoaded, arg0: import_ir_inst9B, arg1: entity_name, type: type(symbolic_constant780000D8)} -// CHECK:STDOUT: inst78000135: {kind: ImportRefLoaded, arg0: import_ir_inst9C, arg1: entity_name, type: type(symbolic_constant780000D8)} -// CHECK:STDOUT: inst78000136: {kind: ImportRefLoaded, arg0: import_ir_inst9D, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000137: {kind: ImportRefLoaded, arg0: import_ir_inst9E, arg1: entity_name, type: type(inst(FormType))} -// CHECK:STDOUT: inst78000138: {kind: ImportRefLoaded, arg0: import_ir_inst9F, arg1: entity_name, type: type(symbolic_constant780000D8)} -// CHECK:STDOUT: inst78000139: {kind: ImportRefLoaded, arg0: import_ir_instA0, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800013A: {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800013B: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800013C: {kind: FacetAccessType, arg0: inst7800013B, type: type(TypeType)} -// CHECK:STDOUT: inst7800013D: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800013E: {kind: FacetAccessType, arg0: inst7800013D, type: type(TypeType)} -// CHECK:STDOUT: inst7800013F: {kind: TupleType, arg0: inst_block7800004F, type: type(TypeType)} -// CHECK:STDOUT: inst78000140: {kind: PatternType, arg0: inst7800013F, type: type(TypeType)} -// CHECK:STDOUT: inst78000141: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000F2)} -// CHECK:STDOUT: inst78000142: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000141, type: type(symbolic_constant780000F2)} -// CHECK:STDOUT: inst78000143: {kind: InitForm, arg0: inst7800013F, type: type(inst(FormType))} -// CHECK:STDOUT: inst78000144: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000F2)} -// CHECK:STDOUT: inst78000145: {kind: ReturnSlotPattern, arg0: inst78000144, arg1: inst, type: type(symbolic_constant780000F2)} -// CHECK:STDOUT: inst78000146: {kind: LookupImplWitness, arg0: inst7800011C, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000147: {kind: FunctionType, arg0: function78000001, arg1: specific7800000F, type: type(TypeType)} -// CHECK:STDOUT: inst78000148: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000F9)} -// CHECK:STDOUT: inst78000149: {kind: FunctionTypeWithSelfType, arg0: inst78000147, arg1: inst7800011C, type: type(TypeType)} -// CHECK:STDOUT: inst7800014A: {kind: ImplWitnessAccess, arg0: inst78000146, arg1: element0, type: type(symbolic_constant780000FB)} -// CHECK:STDOUT: inst7800014B: {kind: SpecificImplFunction, arg0: inst7800014A, arg1: specific78000010, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst7800014C: {kind: PatternType, arg0: inst7800011D, type: type(TypeType)} -// CHECK:STDOUT: inst7800014D: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000FF)} -// CHECK:STDOUT: inst7800014E: {kind: ImportRefLoaded, arg0: import_ir_instAD, arg1: entity_name, type: type(symbolic_constant780000FF)} -// CHECK:STDOUT: inst7800014F: {kind: ReturnSlotPattern, arg0: inst7800014D, arg1: inst, type: type(symbolic_constant780000FF)} -// CHECK:STDOUT: inst78000150: {kind: InitForm, arg0: inst7800011D, type: type(inst(FormType))} -// CHECK:STDOUT: inst78000151: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000FF)} -// CHECK:STDOUT: inst78000152: {kind: ImportRefLoaded, arg0: import_ir_instAE, arg1: entity_name, type: type(symbolic_constant780000FF)} -// CHECK:STDOUT: inst78000153: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000151, type: type(symbolic_constant780000FF)} -// CHECK:STDOUT: inst78000154: {kind: RequireCompleteType, arg0: inst7800011D, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000155: {kind: RequireCompleteType, arg0: inst7800011E, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000156: {kind: RequireCompleteType, arg0: inst7800013F, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000157: {kind: RequireCompleteType, arg0: inst7800013C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000158: {kind: FunctionType, arg0: function78000001, arg1: specific78000012, type: type(TypeType)} -// CHECK:STDOUT: inst78000159: {kind: FunctionTypeWithSelfType, arg0: inst78000158, arg1: inst7800013B, type: type(TypeType)} -// CHECK:STDOUT: inst7800015A: {kind: LookupImplWitness, arg0: inst7800013B, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst7800015B: {kind: ImplWitnessAccess, arg0: inst7800015A, arg1: element0, type: type(symbolic_constant78000116)} -// CHECK:STDOUT: inst7800015C: {kind: SpecificImplFunction, arg0: inst7800015B, arg1: specific78000013, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst7800015D: {kind: RequireCompleteType, arg0: inst7800013E, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst7800015E: {kind: FunctionType, arg0: function78000001, arg1: specific78000014, type: type(TypeType)} -// CHECK:STDOUT: inst7800015F: {kind: FunctionTypeWithSelfType, arg0: inst7800015E, arg1: inst7800013D, type: type(TypeType)} -// CHECK:STDOUT: inst78000160: {kind: LookupImplWitness, arg0: inst7800013D, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000161: {kind: ImplWitnessAccess, arg0: inst78000160, arg1: element0, type: type(symbolic_constant7800011C)} -// CHECK:STDOUT: inst78000162: {kind: SpecificImplFunction, arg0: inst78000161, arg1: specific78000015, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst78000163: {kind: ImportRefLoaded, arg0: import_ir_instBC, arg1: entity_name, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst78000164: {kind: ImportRefLoaded, arg0: import_ir_instBD, arg1: entity_name, type: type(symbolic_constant780000D1)} -// CHECK:STDOUT: inst78000165: {kind: ImportRefLoaded, arg0: import_ir_instBE, arg1: entity_name, type: type(inst78000095)} -// CHECK:STDOUT: inst78000166: {kind: ImportRefLoaded, arg0: import_ir_instBF, arg1: entity_name, type: type(inst78000095)} -// CHECK:STDOUT: inst78000167: {kind: ImportRefLoaded, arg0: import_ir_instC0, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000168: {kind: ImportRefLoaded, arg0: import_ir_instC1, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000169: {kind: ImportRefLoaded, arg0: import_ir_instC2, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800016A: {kind: ImportRefLoaded, arg0: import_ir_instC3, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800016B: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000095)} -// CHECK:STDOUT: inst7800016C: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800016D: {kind: SymbolicBindingPattern, arg0: entity_name78000021, type: type(inst78000095)} -// CHECK:STDOUT: inst7800016E: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800016F: {kind: TupleValue, arg0: inst_block7800005C, type: type(inst78000127)} -// CHECK:STDOUT: inst78000170: {kind: FacetAccessType, arg0: inst7800016C, type: type(TypeType)} -// CHECK:STDOUT: inst78000171: {kind: FacetAccessType, arg0: inst7800016E, type: type(TypeType)} -// CHECK:STDOUT: inst78000172: {kind: TupleType, arg0: inst_block7800005D, type: type(TypeType)} -// CHECK:STDOUT: inst78000173: {kind: ImplWitness, arg0: inst78000120, arg1: specific78000016, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst78000174: {kind: FunctionType, arg0: function78000004, arg1: specific78000016, type: type(TypeType)} -// CHECK:STDOUT: inst78000175: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant78000134)} -// CHECK:STDOUT: inst78000176: {kind: ImportRefUnloaded, arg0: import_ir_instCF, arg1: entity_name} -// CHECK:STDOUT: inst78000177: {kind: ImplDecl, arg0: impl78000009, arg1: inst_block_empty} -// CHECK:STDOUT: inst78000178: {kind: SymbolicBinding, arg0: entity_name78000031, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst78000179: {kind: FacetAccessType, arg0: inst78000178, type: type(TypeType)} -// CHECK:STDOUT: inst7800017A: {kind: TupleType, arg0: inst_block78000062, type: type(TypeType)} -// CHECK:STDOUT: inst7800017B: {kind: ImportRefUnloaded, arg0: import_ir_instD1, arg1: entity_name} -// CHECK:STDOUT: inst7800017C: {kind: ImplWitnessTable, arg0: inst_block78000063, arg1: impl78000009} -// CHECK:STDOUT: inst7800017D: {kind: ImplWitness, arg0: inst7800017C, arg1: specific78000017, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst7800017E: {kind: FunctionDecl, arg0: function78000005, arg1: inst_block_empty, type: type(symbolic_constant7800013C)} -// CHECK:STDOUT: inst7800017F: {kind: FunctionType, arg0: function78000005, arg1: specific78000017, type: type(TypeType)} -// CHECK:STDOUT: inst78000180: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800013C)} -// CHECK:STDOUT: inst78000181: {kind: PatternType, arg0: inst7800017A, type: type(TypeType)} -// CHECK:STDOUT: inst78000182: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst78000183: {kind: TupleType, arg0: inst_block78000065, type: type(TypeType)} -// CHECK:STDOUT: inst78000184: {kind: TupleValue, arg0: inst_block78000064, type: type(inst78000183)} -// CHECK:STDOUT: inst78000185: {kind: SymbolicBindingPattern, arg0: entity_name78000031, type: type(inst78000095)} -// CHECK:STDOUT: inst78000186: {kind: ImportRefLoaded, arg0: import_ir_instD4, arg1: entity_name, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst78000187: {kind: ReturnSlotPattern, arg0: inst78000182, arg1: inst, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst78000188: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst78000189: {kind: ImportRefLoaded, arg0: import_ir_instD5, arg1: entity_name, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst7800018A: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000188, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst7800018B: {kind: ImportRefLoaded, arg0: import_ir_instD6, arg1: entity_name, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst7800018C: {kind: InitForm, arg0: inst7800017A, type: type(inst(FormType))} -// CHECK:STDOUT: inst7800018D: {kind: ImportRefLoaded, arg0: import_ir_instD7, arg1: entity_name, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst7800018E: {kind: ImportRefLoaded, arg0: import_ir_instD8, arg1: entity_name, type: type(symbolic_constant78000146)} -// CHECK:STDOUT: inst7800018F: {kind: ImportRefLoaded, arg0: import_ir_instD9, arg1: entity_name, type: type(symbolic_constant78000146)} -// CHECK:STDOUT: inst78000190: {kind: ImportRefLoaded, arg0: import_ir_instDA, arg1: entity_name, type: type(symbolic_constant78000146)} -// CHECK:STDOUT: inst78000191: {kind: ImportRefLoaded, arg0: import_ir_instDB, arg1: entity_name, type: type(symbolic_constant78000146)} -// CHECK:STDOUT: inst78000192: {kind: ImportRefLoaded, arg0: import_ir_instDC, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst78000193: {kind: ImportRefLoaded, arg0: import_ir_instDD, arg1: entity_name, type: type(inst(FormType))} -// CHECK:STDOUT: inst78000194: {kind: ImportRefLoaded, arg0: import_ir_instDE, arg1: entity_name, type: type(symbolic_constant78000146)} -// CHECK:STDOUT: inst78000195: {kind: ImportRefLoaded, arg0: import_ir_instDF, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst78000196: {kind: ImportRefLoaded, arg0: import_ir_instE0, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst78000197: {kind: ImportRefLoaded, arg0: import_ir_instE1, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst78000198: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst78000199: {kind: FacetAccessType, arg0: inst78000198, type: type(TypeType)} -// CHECK:STDOUT: inst7800019A: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800019B: {kind: FacetAccessType, arg0: inst7800019A, type: type(TypeType)} -// CHECK:STDOUT: inst7800019C: {kind: SymbolicBinding, arg0: entity_name78000031, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst7800019D: {kind: FacetAccessType, arg0: inst7800019C, type: type(TypeType)} -// CHECK:STDOUT: inst7800019E: {kind: TupleType, arg0: inst_block7800006B, type: type(TypeType)} -// CHECK:STDOUT: inst7800019F: {kind: PatternType, arg0: inst7800019E, type: type(TypeType)} -// CHECK:STDOUT: inst780001A0: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000165)} -// CHECK:STDOUT: inst780001A1: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780001A0, type: type(symbolic_constant78000165)} -// CHECK:STDOUT: inst780001A2: {kind: InitForm, arg0: inst7800019E, type: type(inst(FormType))} -// CHECK:STDOUT: inst780001A3: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000165)} -// CHECK:STDOUT: inst780001A4: {kind: ReturnSlotPattern, arg0: inst780001A3, arg1: inst, type: type(symbolic_constant78000165)} -// CHECK:STDOUT: inst780001A5: {kind: LookupImplWitness, arg0: inst78000178, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001A6: {kind: FunctionType, arg0: function78000001, arg1: specific78000018, type: type(TypeType)} -// CHECK:STDOUT: inst780001A7: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800016C)} -// CHECK:STDOUT: inst780001A8: {kind: FunctionTypeWithSelfType, arg0: inst780001A6, arg1: inst78000178, type: type(TypeType)} -// CHECK:STDOUT: inst780001A9: {kind: ImplWitnessAccess, arg0: inst780001A5, arg1: element0, type: type(symbolic_constant7800016E)} -// CHECK:STDOUT: inst780001AA: {kind: SpecificImplFunction, arg0: inst780001A9, arg1: specific78000019, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001AB: {kind: PatternType, arg0: inst78000179, type: type(TypeType)} -// CHECK:STDOUT: inst780001AC: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000172)} -// CHECK:STDOUT: inst780001AD: {kind: ImportRefLoaded, arg0: import_ir_instEF, arg1: entity_name, type: type(symbolic_constant78000172)} -// CHECK:STDOUT: inst780001AE: {kind: ReturnSlotPattern, arg0: inst780001AC, arg1: inst, type: type(symbolic_constant78000172)} -// CHECK:STDOUT: inst780001AF: {kind: InitForm, arg0: inst78000179, type: type(inst(FormType))} -// CHECK:STDOUT: inst780001B0: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000172)} -// CHECK:STDOUT: inst780001B1: {kind: ImportRefLoaded, arg0: import_ir_instF0, arg1: entity_name, type: type(symbolic_constant78000172)} -// CHECK:STDOUT: inst780001B2: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780001B0, type: type(symbolic_constant78000172)} -// CHECK:STDOUT: inst780001B3: {kind: RequireCompleteType, arg0: inst78000179, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001B4: {kind: RequireCompleteType, arg0: inst7800017A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001B5: {kind: RequireCompleteType, arg0: inst7800019E, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001B6: {kind: RequireCompleteType, arg0: inst78000199, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001B7: {kind: FunctionType, arg0: function78000001, arg1: specific7800001B, type: type(TypeType)} -// CHECK:STDOUT: inst780001B8: {kind: FunctionTypeWithSelfType, arg0: inst780001B7, arg1: inst78000198, type: type(TypeType)} -// CHECK:STDOUT: inst780001B9: {kind: LookupImplWitness, arg0: inst78000198, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001BA: {kind: ImplWitnessAccess, arg0: inst780001B9, arg1: element0, type: type(symbolic_constant7800018F)} -// CHECK:STDOUT: inst780001BB: {kind: SpecificImplFunction, arg0: inst780001BA, arg1: specific7800001C, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001BC: {kind: RequireCompleteType, arg0: inst7800019B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001BD: {kind: FunctionType, arg0: function78000001, arg1: specific7800001D, type: type(TypeType)} -// CHECK:STDOUT: inst780001BE: {kind: FunctionTypeWithSelfType, arg0: inst780001BD, arg1: inst7800019A, type: type(TypeType)} -// CHECK:STDOUT: inst780001BF: {kind: LookupImplWitness, arg0: inst7800019A, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001C0: {kind: ImplWitnessAccess, arg0: inst780001BF, arg1: element0, type: type(symbolic_constant78000195)} -// CHECK:STDOUT: inst780001C1: {kind: SpecificImplFunction, arg0: inst780001C0, arg1: specific7800001E, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001C2: {kind: RequireCompleteType, arg0: inst7800019D, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001C3: {kind: FunctionType, arg0: function78000001, arg1: specific7800001F, type: type(TypeType)} -// CHECK:STDOUT: inst780001C4: {kind: FunctionTypeWithSelfType, arg0: inst780001C3, arg1: inst7800019C, type: type(TypeType)} -// CHECK:STDOUT: inst780001C5: {kind: LookupImplWitness, arg0: inst7800019C, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001C6: {kind: ImplWitnessAccess, arg0: inst780001C5, arg1: element0, type: type(symbolic_constant7800019B)} -// CHECK:STDOUT: inst780001C7: {kind: SpecificImplFunction, arg0: inst780001C6, arg1: specific78000020, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001C8: {kind: ImportRefLoaded, arg0: import_ir_inst104, arg1: entity_name, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst780001C9: {kind: ImportRefLoaded, arg0: import_ir_inst105, arg1: entity_name, type: type(symbolic_constant7800013F)} -// CHECK:STDOUT: inst780001CA: {kind: ImportRefLoaded, arg0: import_ir_inst106, arg1: entity_name, type: type(inst78000095)} -// CHECK:STDOUT: inst780001CB: {kind: ImportRefLoaded, arg0: import_ir_inst107, arg1: entity_name, type: type(inst78000095)} -// CHECK:STDOUT: inst780001CC: {kind: ImportRefLoaded, arg0: import_ir_inst108, arg1: entity_name, type: type(inst78000095)} -// CHECK:STDOUT: inst780001CD: {kind: ImportRefLoaded, arg0: import_ir_inst109, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780001CE: {kind: ImportRefLoaded, arg0: import_ir_inst10A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst780001CF: {kind: ImportRefLoaded, arg0: import_ir_inst10B, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001D0: {kind: ImportRefLoaded, arg0: import_ir_inst10C, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001D1: {kind: ImportRefLoaded, arg0: import_ir_inst10D, arg1: entity_name, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001D2: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000095)} -// CHECK:STDOUT: inst780001D3: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001D4: {kind: SymbolicBindingPattern, arg0: entity_name78000021, type: type(inst78000095)} -// CHECK:STDOUT: inst780001D5: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001D6: {kind: SymbolicBindingPattern, arg0: entity_name78000031, type: type(inst78000095)} -// CHECK:STDOUT: inst780001D7: {kind: SymbolicBinding, arg0: entity_name78000031, arg1: inst, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001D8: {kind: TupleValue, arg0: inst_block7800007A, type: type(inst78000183)} -// CHECK:STDOUT: inst780001D9: {kind: FacetAccessType, arg0: inst780001D3, type: type(TypeType)} -// CHECK:STDOUT: inst780001DA: {kind: FacetAccessType, arg0: inst780001D5, type: type(TypeType)} -// CHECK:STDOUT: inst780001DB: {kind: FacetAccessType, arg0: inst780001D7, type: type(TypeType)} -// CHECK:STDOUT: inst780001DC: {kind: TupleType, arg0: inst_block7800007B, type: type(TypeType)} -// CHECK:STDOUT: inst780001DD: {kind: ImplWitness, arg0: inst7800017C, arg1: specific78000021, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001DE: {kind: FunctionType, arg0: function78000005, arg1: specific78000021, type: type(TypeType)} -// CHECK:STDOUT: inst780001DF: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780001BA)} -// CHECK:STDOUT: inst780001E0: {kind: LookupImplWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001E1: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst780001E2: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst780001E3: {kind: RequireSpecificDefinition, arg0: specific78000022, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst780001E4: {kind: FacetValue, arg0: inst7800001F, arg1: inst_block78000082, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001E5: {kind: FunctionType, arg0: function78000001, arg1: specific78000023, type: type(TypeType)} -// CHECK:STDOUT: inst780001E6: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780001C1)} -// CHECK:STDOUT: inst780001E7: {kind: FunctionTypeWithSelfType, arg0: inst780001E5, arg1: inst780001E4, type: type(TypeType)} -// CHECK:STDOUT: inst780001E8: {kind: ImplWitnessAccess, arg0: inst780001E0, arg1: element0, type: type(symbolic_constant780001C8)} -// CHECK:STDOUT: inst780001E9: {kind: ImplWitnessAccess, arg0: inst780001E0, arg1: element0, type: type(symbolic_constant780001C3)} -// CHECK:STDOUT: inst780001EA: {kind: LookupImplWitness, arg0: inst78000020, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001EB: {kind: FacetValue, arg0: inst78000020, arg1: inst_block78000085, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001EC: {kind: FunctionType, arg0: function78000001, arg1: specific78000024, type: type(TypeType)} -// CHECK:STDOUT: inst780001ED: {kind: FunctionTypeWithSelfType, arg0: inst780001EC, arg1: inst780001EB, type: type(TypeType)} -// CHECK:STDOUT: inst780001EE: {kind: ImplWitnessAccess, arg0: inst780001EA, arg1: element0, type: type(symbolic_constant780001C8)} -// CHECK:STDOUT: inst780001EF: {kind: BoundMethod, arg0: inst78000052, arg1: inst780001E8, type: type(inst(BoundMethodType))} -// CHECK:STDOUT: inst780001F0: {kind: LookupImplWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001F1: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst780001F2: {kind: FacetValue, arg0: inst7800001F, arg1: inst_block78000082, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001F3: {kind: Converted, arg0: inst7800001F, arg1: inst780001F2, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001F4: {kind: LookupImplWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst780001F5: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst780001F6: {kind: FacetValue, arg0: inst7800001F, arg1: inst_block78000082, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001F7: {kind: Converted, arg0: inst7800001F, arg1: inst780001F6, type: type(inst7800005A)} -// CHECK:STDOUT: inst780001F8: {kind: SpecificImplFunction, arg0: inst780001E8, arg1: specific78000025, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001F9: {kind: SpecificImplFunction, arg0: inst780001E9, arg1: specific78000025, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001FA: {kind: SpecificImplFunction, arg0: inst780001EE, arg1: specific78000026, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst780001FB: {kind: BoundMethod, arg0: inst78000052, arg1: inst780001F8, type: type(inst(BoundMethodType))} -// CHECK:STDOUT: inst780001FC: {kind: Call, arg0: inst780001FB, arg1: inst_block78000089, type: type(symbolic_constant78000006)} -// CHECK:STDOUT: inst780001FD: {kind: InPlaceInit, arg0: inst780001FC, arg1: inst78000056, type: type(symbolic_constant78000006)} -// CHECK:STDOUT: inst780001FE: {kind: TupleAccess, arg0: inst78000046, arg1: element1, type: type(inst7800002C)} -// CHECK:STDOUT: inst780001FF: {kind: TupleInit, arg0: inst_block_empty, arg1: inst780001FE, type: type(inst7800002C)} -// CHECK:STDOUT: inst78000200: {kind: Converted, arg0: inst78000053, arg1: inst780001FF, type: type(inst7800002C)} -// CHECK:STDOUT: inst78000201: {kind: InPlaceInit, arg0: inst78000200, arg1: inst780001FE, type: type(inst7800002C)} -// CHECK:STDOUT: inst78000202: {kind: TupleInit, arg0: inst_block7800008A, arg1: inst78000046, type: type(symbolic_constant78000010)} -// CHECK:STDOUT: inst78000203: {kind: Converted, arg0: inst78000054, arg1: inst78000202, type: type(symbolic_constant78000010)} -// CHECK:STDOUT: inst78000204: {kind: ReturnExpr, arg0: inst78000203, arg1: inst78000046} +// CHECK:STDOUT: inst7800008D: {kind: ImplSelfWitness, arg0: inst7800008C, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800008E: {kind: ImportRefUnloaded, arg0: import_ir_inst24, arg1: entity_name} +// CHECK:STDOUT: inst7800008F: {kind: ImplWitnessTable, arg0: inst_block78000025, arg1: impl78000000} +// CHECK:STDOUT: inst78000090: {kind: ImplWitness, arg0: inst7800008F, arg1: specific78000004, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000091: {kind: FunctionDecl, arg0: function78000002, arg1: inst_block_empty, type: type(symbolic_constant7800004D)} +// CHECK:STDOUT: inst78000092: {kind: FunctionType, arg0: function78000002, arg1: specific78000004, type: type(TypeType)} +// CHECK:STDOUT: inst78000093: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800004D)} +// CHECK:STDOUT: inst78000094: {kind: PatternType, arg0: inst7800008C, type: type(TypeType)} +// CHECK:STDOUT: inst78000095: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst78000096: {kind: PatternType, arg0: inst7800005A, type: type(TypeType)} +// CHECK:STDOUT: inst78000097: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000096)} +// CHECK:STDOUT: inst78000098: {kind: ImportRefLoaded, arg0: import_ir_inst27, arg1: entity_name, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst78000099: {kind: ReturnSlotPattern, arg0: inst78000095, arg1: inst, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst7800009A: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst7800009B: {kind: ImportRefLoaded, arg0: import_ir_inst28, arg1: entity_name, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst7800009C: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst7800009A, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst7800009D: {kind: ImportRefLoaded, arg0: import_ir_inst29, arg1: entity_name, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst7800009E: {kind: InitForm, arg0: inst7800008C, type: type(inst(FormType))} +// CHECK:STDOUT: inst7800009F: {kind: ImportRefLoaded, arg0: import_ir_inst2A, arg1: entity_name, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst780000A0: {kind: ImportRefLoaded, arg0: import_ir_inst2B, arg1: entity_name, type: type(symbolic_constant78000056)} +// CHECK:STDOUT: inst780000A1: {kind: ImportRefLoaded, arg0: import_ir_inst2C, arg1: entity_name, type: type(symbolic_constant78000056)} +// CHECK:STDOUT: inst780000A2: {kind: ImportRefLoaded, arg0: import_ir_inst2D, arg1: entity_name, type: type(symbolic_constant78000056)} +// CHECK:STDOUT: inst780000A3: {kind: ImportRefLoaded, arg0: import_ir_inst2E, arg1: entity_name, type: type(symbolic_constant78000056)} +// CHECK:STDOUT: inst780000A4: {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000A5: {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name, type: type(inst(FormType))} +// CHECK:STDOUT: inst780000A6: {kind: ImportRefLoaded, arg0: import_ir_inst31, arg1: entity_name, type: type(symbolic_constant78000056)} +// CHECK:STDOUT: inst780000A7: {kind: ImportRefLoaded, arg0: import_ir_inst32, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780000A8: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780000A9: {kind: FacetAccessType, arg0: inst780000A8, type: type(TypeType)} +// CHECK:STDOUT: inst780000AA: {kind: ConstType, arg0: inst780000A9, type: type(TypeType)} +// CHECK:STDOUT: inst780000AB: {kind: PatternType, arg0: inst780000AA, type: type(TypeType)} +// CHECK:STDOUT: inst780000AC: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant7800006B)} +// CHECK:STDOUT: inst780000AD: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780000AC, type: type(symbolic_constant7800006B)} +// CHECK:STDOUT: inst780000AE: {kind: InitForm, arg0: inst780000AA, type: type(inst(FormType))} +// CHECK:STDOUT: inst780000AF: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant7800006B)} +// CHECK:STDOUT: inst780000B0: {kind: ReturnSlotPattern, arg0: inst780000AF, arg1: inst, type: type(symbolic_constant7800006B)} +// CHECK:STDOUT: inst780000B1: {kind: LookupImplWitness, arg0: inst7800008A, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000B2: {kind: FunctionType, arg0: function78000001, arg1: specific78000005, type: type(TypeType)} +// CHECK:STDOUT: inst780000B3: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant78000072)} +// CHECK:STDOUT: inst780000B4: {kind: FunctionTypeWithSelfType, arg0: inst780000B2, arg1: inst7800008A, type: type(TypeType)} +// CHECK:STDOUT: inst780000B5: {kind: ImplWitnessAccess, arg0: inst780000B1, arg1: element0, type: type(symbolic_constant78000074)} +// CHECK:STDOUT: inst780000B6: {kind: SpecificImplFunction, arg0: inst780000B5, arg1: specific78000006, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst780000B7: {kind: PatternType, arg0: inst7800008B, type: type(TypeType)} +// CHECK:STDOUT: inst780000B8: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000078)} +// CHECK:STDOUT: inst780000B9: {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name, type: type(symbolic_constant78000078)} +// CHECK:STDOUT: inst780000BA: {kind: ReturnSlotPattern, arg0: inst780000B8, arg1: inst, type: type(symbolic_constant78000078)} +// CHECK:STDOUT: inst780000BB: {kind: InitForm, arg0: inst7800008B, type: type(inst(FormType))} +// CHECK:STDOUT: inst780000BC: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000078)} +// CHECK:STDOUT: inst780000BD: {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name, type: type(symbolic_constant78000078)} +// CHECK:STDOUT: inst780000BE: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780000BC, type: type(symbolic_constant78000078)} +// CHECK:STDOUT: inst780000BF: {kind: RequireCompleteType, arg0: inst7800008B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000C0: {kind: RequireCompleteType, arg0: inst7800008C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000C1: {kind: RequireCompleteType, arg0: inst780000AA, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000C2: {kind: RequireCompleteType, arg0: inst780000A9, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000C3: {kind: FunctionType, arg0: function78000001, arg1: specific78000008, type: type(TypeType)} +// CHECK:STDOUT: inst780000C4: {kind: FunctionTypeWithSelfType, arg0: inst780000C3, arg1: inst780000A8, type: type(TypeType)} +// CHECK:STDOUT: inst780000C5: {kind: LookupImplWitness, arg0: inst780000A8, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000C6: {kind: ImplWitnessAccess, arg0: inst780000C5, arg1: element0, type: type(symbolic_constant78000089)} +// CHECK:STDOUT: inst780000C7: {kind: SpecificImplFunction, arg0: inst780000C6, arg1: specific78000009, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst780000C8: {kind: ImportRefLoaded, arg0: import_ir_inst45, arg1: entity_name, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst780000C9: {kind: ImportRefLoaded, arg0: import_ir_inst46, arg1: entity_name, type: type(symbolic_constant78000050)} +// CHECK:STDOUT: inst780000CA: {kind: ImportRefLoaded, arg0: import_ir_inst47, arg1: entity_name, type: type(inst78000096)} +// CHECK:STDOUT: inst780000CB: {kind: ImportRefLoaded, arg0: import_ir_inst48, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000CC: {kind: ImportRefLoaded, arg0: import_ir_inst49, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000CD: {kind: ImportRefLoaded, arg0: import_ir_inst4A, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000CE: {kind: ImportRefLoaded, arg0: import_ir_inst4B, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780000CF: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000096)} +// CHECK:STDOUT: inst780000D0: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780000D1: {kind: FacetAccessType, arg0: inst780000D0, type: type(TypeType)} +// CHECK:STDOUT: inst780000D2: {kind: ConstType, arg0: inst780000D1, type: type(TypeType)} +// CHECK:STDOUT: inst780000D3: {kind: ImplSelfWitness, arg0: inst780000D2, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000D4: {kind: ImplWitness, arg0: inst7800008F, arg1: specific7800000A, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000D5: {kind: FunctionType, arg0: function78000002, arg1: specific7800000A, type: type(TypeType)} +// CHECK:STDOUT: inst780000D6: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800009A)} +// CHECK:STDOUT: inst780000D7: {kind: ImportRefUnloaded, arg0: import_ir_inst54, arg1: entity_name} +// CHECK:STDOUT: inst780000D8: {kind: ImplDecl, arg0: impl78000001, arg1: inst_block_empty} +// CHECK:STDOUT: inst780000D9: {kind: ImplSelfWitness, arg0: inst(BoolType), arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000DA: {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000DB: {kind: ImportRefLoaded, arg0: import_ir_inst57, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000DC: {kind: ImportRefLoaded, arg0: import_ir_inst58, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000DD: {kind: ImportRefUnloaded, arg0: import_ir_inst59, arg1: entity_name} +// CHECK:STDOUT: inst780000DE: {kind: ImplDecl, arg0: impl78000002, arg1: inst_block_empty} +// CHECK:STDOUT: inst780000DF: {kind: ImplSelfWitness, arg0: inst(CharLiteralType), arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000E0: {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000E1: {kind: ImportRefLoaded, arg0: import_ir_inst5C, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000E2: {kind: ImportRefLoaded, arg0: import_ir_inst5D, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000E3: {kind: ImportRefUnloaded, arg0: import_ir_inst5E, arg1: entity_name} +// CHECK:STDOUT: inst780000E4: {kind: ImplDecl, arg0: impl78000003, arg1: inst_block_empty} +// CHECK:STDOUT: inst780000E5: {kind: ImplSelfWitness, arg0: inst(FloatLiteralType), arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000E6: {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000E7: {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000E8: {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000E9: {kind: ImportRefUnloaded, arg0: import_ir_inst63, arg1: entity_name} +// CHECK:STDOUT: inst780000EA: {kind: ImplDecl, arg0: impl78000004, arg1: inst_block_empty} +// CHECK:STDOUT: inst780000EB: {kind: ImplSelfWitness, arg0: inst(IntLiteralType), arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000EC: {kind: ImportRefLoaded, arg0: import_ir_inst65, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000ED: {kind: ImportRefLoaded, arg0: import_ir_inst66, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000EE: {kind: ImportRefLoaded, arg0: import_ir_inst67, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000EF: {kind: ImportRefLoaded, arg0: import_ir_inst68, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000F0: {kind: ImplDecl, arg0: impl78000005, arg1: inst_block_empty} +// CHECK:STDOUT: inst780000F1: {kind: ImplSelfWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000F2: {kind: ImportRefUnloaded, arg0: import_ir_inst6A, arg1: entity_name} +// CHECK:STDOUT: inst780000F3: {kind: ImplWitnessTable, arg0: inst_block78000039, arg1: impl78000005} +// CHECK:STDOUT: inst780000F4: {kind: ImplWitness, arg0: inst780000F3, arg1: specific7800000B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000F5: {kind: ImportRefLoaded, arg0: import_ir_inst6C, arg1: entity_name, type: type(inst78000016)} +// CHECK:STDOUT: inst780000F6: {kind: ImportRefLoaded, arg0: import_ir_inst6D, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000F7: {kind: ImportRefLoaded, arg0: import_ir_inst6E, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000F8: {kind: ImportRefLoaded, arg0: import_ir_inst6F, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000F9: {kind: ImportRefLoaded, arg0: import_ir_inst70, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780000FA: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000016)} +// CHECK:STDOUT: inst780000FB: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst780000FC: {kind: PointerType, arg0: inst780000FB, type: type(TypeType)} +// CHECK:STDOUT: inst780000FD: {kind: ImplSelfWitness, arg0: inst780000FC, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000FE: {kind: ImplWitness, arg0: inst780000F3, arg1: specific7800000C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780000FF: {kind: FunctionDecl, arg0: function78000003, arg1: inst_block_empty, type: type(symbolic_constant780000AD)} +// CHECK:STDOUT: inst78000100: {kind: FunctionType, arg0: function78000003, arg1: specific7800000B, type: type(TypeType)} +// CHECK:STDOUT: inst78000101: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000AD)} +// CHECK:STDOUT: inst78000102: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000103: {kind: ImportRefLoaded, arg0: import_ir_inst77, arg1: entity_name, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000104: {kind: ReturnSlotPattern, arg0: inst78000102, arg1: inst, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000105: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000106: {kind: ImportRefLoaded, arg0: import_ir_inst78, arg1: entity_name, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000107: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000105, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000108: {kind: ImportRefLoaded, arg0: import_ir_inst79, arg1: entity_name, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst78000109: {kind: InitForm, arg0: inst7800001F, type: type(inst(FormType))} +// CHECK:STDOUT: inst7800010A: {kind: ImportRefLoaded, arg0: import_ir_inst7A, arg1: entity_name, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst7800010B: {kind: ImportRefLoaded, arg0: import_ir_inst7B, arg1: entity_name, type: type(symbolic_constant780000B4)} +// CHECK:STDOUT: inst7800010C: {kind: ImportRefLoaded, arg0: import_ir_inst7C, arg1: entity_name, type: type(symbolic_constant780000B4)} +// CHECK:STDOUT: inst7800010D: {kind: ImportRefLoaded, arg0: import_ir_inst7D, arg1: entity_name, type: type(symbolic_constant780000B4)} +// CHECK:STDOUT: inst7800010E: {kind: ImportRefLoaded, arg0: import_ir_inst7E, arg1: entity_name, type: type(symbolic_constant780000B4)} +// CHECK:STDOUT: inst7800010F: {kind: ImportRefLoaded, arg0: import_ir_inst7F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst78000110: {kind: ImportRefLoaded, arg0: import_ir_inst80, arg1: entity_name, type: type(inst(FormType))} +// CHECK:STDOUT: inst78000111: {kind: ImportRefLoaded, arg0: import_ir_inst81, arg1: entity_name, type: type(symbolic_constant780000B4)} +// CHECK:STDOUT: inst78000112: {kind: ImportRefLoaded, arg0: import_ir_inst82, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst78000113: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst78000114: {kind: PointerType, arg0: inst78000113, type: type(TypeType)} +// CHECK:STDOUT: inst78000115: {kind: PatternType, arg0: inst78000114, type: type(TypeType)} +// CHECK:STDOUT: inst78000116: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000C6)} +// CHECK:STDOUT: inst78000117: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000116, type: type(symbolic_constant780000C6)} +// CHECK:STDOUT: inst78000118: {kind: InitForm, arg0: inst78000114, type: type(inst(FormType))} +// CHECK:STDOUT: inst78000119: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000C6)} +// CHECK:STDOUT: inst7800011A: {kind: ReturnSlotPattern, arg0: inst78000119, arg1: inst, type: type(symbolic_constant780000C6)} +// CHECK:STDOUT: inst7800011B: {kind: ImportRefLoaded, arg0: import_ir_inst8B, arg1: entity_name, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst7800011C: {kind: ImportRefLoaded, arg0: import_ir_inst8C, arg1: entity_name, type: type(symbolic_constant78000007)} +// CHECK:STDOUT: inst7800011D: {kind: FunctionType, arg0: function78000003, arg1: specific7800000C, type: type(TypeType)} +// CHECK:STDOUT: inst7800011E: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000CD)} +// CHECK:STDOUT: inst7800011F: {kind: RequireCompleteType, arg0: inst780000FC, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000120: {kind: ImportRefUnloaded, arg0: import_ir_inst90, arg1: entity_name} +// CHECK:STDOUT: inst78000121: {kind: ImplDecl, arg0: impl78000006, arg1: inst_block_empty} +// CHECK:STDOUT: inst78000122: {kind: ImplSelfWitness, arg0: inst(TypeType), arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000123: {kind: ImportRefLoaded, arg0: import_ir_inst92, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst78000124: {kind: ImportRefLoaded, arg0: import_ir_inst93, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst78000125: {kind: ImportRefLoaded, arg0: import_ir_inst94, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000126: {kind: ImportRefUnloaded, arg0: import_ir_inst95, arg1: entity_name} +// CHECK:STDOUT: inst78000127: {kind: ImplDecl, arg0: impl78000007, arg1: inst_block_empty} +// CHECK:STDOUT: inst78000128: {kind: ImplSelfWitness, arg0: inst7800002C, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000129: {kind: ImportRefLoaded, arg0: import_ir_inst97, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst7800012A: {kind: ImportRefLoaded, arg0: import_ir_inst98, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst7800012B: {kind: ImportRefLoaded, arg0: import_ir_inst99, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800012C: {kind: ImportRefUnloaded, arg0: import_ir_inst9A, arg1: entity_name} +// CHECK:STDOUT: inst7800012D: {kind: ImplDecl, arg0: impl78000008, arg1: inst_block_empty} +// CHECK:STDOUT: inst7800012E: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800012F: {kind: FacetAccessType, arg0: inst7800012E, type: type(TypeType)} +// CHECK:STDOUT: inst78000130: {kind: TupleType, arg0: inst_block78000046, type: type(TypeType)} +// CHECK:STDOUT: inst78000131: {kind: ImplSelfWitness, arg0: inst78000130, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000132: {kind: ImportRefUnloaded, arg0: import_ir_inst9C, arg1: entity_name} +// CHECK:STDOUT: inst78000133: {kind: ImplWitnessTable, arg0: inst_block78000047, arg1: impl78000008} +// CHECK:STDOUT: inst78000134: {kind: ImplWitness, arg0: inst78000133, arg1: specific7800000E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000135: {kind: FunctionDecl, arg0: function78000004, arg1: inst_block_empty, type: type(symbolic_constant780000D8)} +// CHECK:STDOUT: inst78000136: {kind: FunctionType, arg0: function78000004, arg1: specific7800000E, type: type(TypeType)} +// CHECK:STDOUT: inst78000137: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780000D8)} +// CHECK:STDOUT: inst78000138: {kind: PatternType, arg0: inst78000130, type: type(TypeType)} +// CHECK:STDOUT: inst78000139: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst7800013A: {kind: TupleType, arg0: inst_block78000049, type: type(TypeType)} +// CHECK:STDOUT: inst7800013B: {kind: TupleValue, arg0: inst_block78000048, type: type(inst7800013A)} +// CHECK:STDOUT: inst7800013C: {kind: SymbolicBindingPattern, arg0: entity_name78000021, type: type(inst78000096)} +// CHECK:STDOUT: inst7800013D: {kind: ImportRefLoaded, arg0: import_ir_inst9F, arg1: entity_name, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst7800013E: {kind: ReturnSlotPattern, arg0: inst78000139, arg1: inst, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst7800013F: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000140: {kind: ImportRefLoaded, arg0: import_ir_instA0, arg1: entity_name, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000141: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst7800013F, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000142: {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000143: {kind: InitForm, arg0: inst78000130, type: type(inst(FormType))} +// CHECK:STDOUT: inst78000144: {kind: ImportRefLoaded, arg0: import_ir_instA2, arg1: entity_name, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000145: {kind: ImportRefLoaded, arg0: import_ir_instA3, arg1: entity_name, type: type(symbolic_constant780000E2)} +// CHECK:STDOUT: inst78000146: {kind: ImportRefLoaded, arg0: import_ir_instA4, arg1: entity_name, type: type(symbolic_constant780000E2)} +// CHECK:STDOUT: inst78000147: {kind: ImportRefLoaded, arg0: import_ir_instA5, arg1: entity_name, type: type(symbolic_constant780000E2)} +// CHECK:STDOUT: inst78000148: {kind: ImportRefLoaded, arg0: import_ir_instA6, arg1: entity_name, type: type(symbolic_constant780000E2)} +// CHECK:STDOUT: inst78000149: {kind: ImportRefLoaded, arg0: import_ir_instA7, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst7800014A: {kind: ImportRefLoaded, arg0: import_ir_instA8, arg1: entity_name, type: type(inst(FormType))} +// CHECK:STDOUT: inst7800014B: {kind: ImportRefLoaded, arg0: import_ir_instA9, arg1: entity_name, type: type(symbolic_constant780000E2)} +// CHECK:STDOUT: inst7800014C: {kind: ImportRefLoaded, arg0: import_ir_instAA, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800014D: {kind: ImportRefLoaded, arg0: import_ir_instAB, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800014E: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800014F: {kind: FacetAccessType, arg0: inst7800014E, type: type(TypeType)} +// CHECK:STDOUT: inst78000150: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst78000151: {kind: FacetAccessType, arg0: inst78000150, type: type(TypeType)} +// CHECK:STDOUT: inst78000152: {kind: TupleType, arg0: inst_block7800004F, type: type(TypeType)} +// CHECK:STDOUT: inst78000153: {kind: PatternType, arg0: inst78000152, type: type(TypeType)} +// CHECK:STDOUT: inst78000154: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant780000FC)} +// CHECK:STDOUT: inst78000155: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000154, type: type(symbolic_constant780000FC)} +// CHECK:STDOUT: inst78000156: {kind: InitForm, arg0: inst78000152, type: type(inst(FormType))} +// CHECK:STDOUT: inst78000157: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant780000FC)} +// CHECK:STDOUT: inst78000158: {kind: ReturnSlotPattern, arg0: inst78000157, arg1: inst, type: type(symbolic_constant780000FC)} +// CHECK:STDOUT: inst78000159: {kind: LookupImplWitness, arg0: inst7800012E, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800015A: {kind: FunctionType, arg0: function78000001, arg1: specific7800000F, type: type(TypeType)} +// CHECK:STDOUT: inst7800015B: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant78000103)} +// CHECK:STDOUT: inst7800015C: {kind: FunctionTypeWithSelfType, arg0: inst7800015A, arg1: inst7800012E, type: type(TypeType)} +// CHECK:STDOUT: inst7800015D: {kind: ImplWitnessAccess, arg0: inst78000159, arg1: element0, type: type(symbolic_constant78000105)} +// CHECK:STDOUT: inst7800015E: {kind: SpecificImplFunction, arg0: inst7800015D, arg1: specific78000010, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst7800015F: {kind: PatternType, arg0: inst7800012F, type: type(TypeType)} +// CHECK:STDOUT: inst78000160: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000109)} +// CHECK:STDOUT: inst78000161: {kind: ImportRefLoaded, arg0: import_ir_instB7, arg1: entity_name, type: type(symbolic_constant78000109)} +// CHECK:STDOUT: inst78000162: {kind: ReturnSlotPattern, arg0: inst78000160, arg1: inst, type: type(symbolic_constant78000109)} +// CHECK:STDOUT: inst78000163: {kind: InitForm, arg0: inst7800012F, type: type(inst(FormType))} +// CHECK:STDOUT: inst78000164: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000109)} +// CHECK:STDOUT: inst78000165: {kind: ImportRefLoaded, arg0: import_ir_instB8, arg1: entity_name, type: type(symbolic_constant78000109)} +// CHECK:STDOUT: inst78000166: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst78000164, type: type(symbolic_constant78000109)} +// CHECK:STDOUT: inst78000167: {kind: RequireCompleteType, arg0: inst7800012F, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000168: {kind: RequireCompleteType, arg0: inst78000130, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000169: {kind: RequireCompleteType, arg0: inst78000152, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800016A: {kind: RequireCompleteType, arg0: inst7800014F, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800016B: {kind: FunctionType, arg0: function78000001, arg1: specific78000012, type: type(TypeType)} +// CHECK:STDOUT: inst7800016C: {kind: FunctionTypeWithSelfType, arg0: inst7800016B, arg1: inst7800014E, type: type(TypeType)} +// CHECK:STDOUT: inst7800016D: {kind: LookupImplWitness, arg0: inst7800014E, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800016E: {kind: ImplWitnessAccess, arg0: inst7800016D, arg1: element0, type: type(symbolic_constant78000120)} +// CHECK:STDOUT: inst7800016F: {kind: SpecificImplFunction, arg0: inst7800016E, arg1: specific78000013, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst78000170: {kind: RequireCompleteType, arg0: inst78000151, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000171: {kind: FunctionType, arg0: function78000001, arg1: specific78000014, type: type(TypeType)} +// CHECK:STDOUT: inst78000172: {kind: FunctionTypeWithSelfType, arg0: inst78000171, arg1: inst78000150, type: type(TypeType)} +// CHECK:STDOUT: inst78000173: {kind: LookupImplWitness, arg0: inst78000150, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000174: {kind: ImplWitnessAccess, arg0: inst78000173, arg1: element0, type: type(symbolic_constant78000126)} +// CHECK:STDOUT: inst78000175: {kind: SpecificImplFunction, arg0: inst78000174, arg1: specific78000015, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst78000176: {kind: ImportRefLoaded, arg0: import_ir_instC6, arg1: entity_name, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000177: {kind: ImportRefLoaded, arg0: import_ir_instC7, arg1: entity_name, type: type(symbolic_constant780000DB)} +// CHECK:STDOUT: inst78000178: {kind: ImportRefLoaded, arg0: import_ir_instC8, arg1: entity_name, type: type(inst78000096)} +// CHECK:STDOUT: inst78000179: {kind: ImportRefLoaded, arg0: import_ir_instC9, arg1: entity_name, type: type(inst78000096)} +// CHECK:STDOUT: inst7800017A: {kind: ImportRefLoaded, arg0: import_ir_instCA, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst7800017B: {kind: ImportRefLoaded, arg0: import_ir_instCB, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst7800017C: {kind: ImportRefLoaded, arg0: import_ir_instCC, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800017D: {kind: ImportRefLoaded, arg0: import_ir_instCD, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800017E: {kind: ImportRefLoaded, arg0: import_ir_instCE, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800017F: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000096)} +// CHECK:STDOUT: inst78000180: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst78000181: {kind: SymbolicBindingPattern, arg0: entity_name78000021, type: type(inst78000096)} +// CHECK:STDOUT: inst78000182: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst78000183: {kind: TupleValue, arg0: inst_block7800005C, type: type(inst7800013A)} +// CHECK:STDOUT: inst78000184: {kind: FacetAccessType, arg0: inst78000180, type: type(TypeType)} +// CHECK:STDOUT: inst78000185: {kind: FacetAccessType, arg0: inst78000182, type: type(TypeType)} +// CHECK:STDOUT: inst78000186: {kind: TupleType, arg0: inst_block7800005D, type: type(TypeType)} +// CHECK:STDOUT: inst78000187: {kind: ImplSelfWitness, arg0: inst78000186, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000188: {kind: ImplWitness, arg0: inst78000133, arg1: specific78000016, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000189: {kind: FunctionType, arg0: function78000004, arg1: specific78000016, type: type(TypeType)} +// CHECK:STDOUT: inst7800018A: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant78000140)} +// CHECK:STDOUT: inst7800018B: {kind: ImportRefUnloaded, arg0: import_ir_instDB, arg1: entity_name} +// CHECK:STDOUT: inst7800018C: {kind: ImplDecl, arg0: impl78000009, arg1: inst_block_empty} +// CHECK:STDOUT: inst7800018D: {kind: SymbolicBinding, arg0: entity_name78000031, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800018E: {kind: FacetAccessType, arg0: inst7800018D, type: type(TypeType)} +// CHECK:STDOUT: inst7800018F: {kind: TupleType, arg0: inst_block78000062, type: type(TypeType)} +// CHECK:STDOUT: inst78000190: {kind: ImplSelfWitness, arg0: inst7800018F, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000191: {kind: ImportRefUnloaded, arg0: import_ir_instDD, arg1: entity_name} +// CHECK:STDOUT: inst78000192: {kind: ImplWitnessTable, arg0: inst_block78000063, arg1: impl78000009} +// CHECK:STDOUT: inst78000193: {kind: ImplWitness, arg0: inst78000192, arg1: specific78000017, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000194: {kind: FunctionDecl, arg0: function78000005, arg1: inst_block_empty, type: type(symbolic_constant7800014A)} +// CHECK:STDOUT: inst78000195: {kind: FunctionType, arg0: function78000005, arg1: specific78000017, type: type(TypeType)} +// CHECK:STDOUT: inst78000196: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800014A)} +// CHECK:STDOUT: inst78000197: {kind: PatternType, arg0: inst7800018F, type: type(TypeType)} +// CHECK:STDOUT: inst78000198: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst78000199: {kind: TupleType, arg0: inst_block78000065, type: type(TypeType)} +// CHECK:STDOUT: inst7800019A: {kind: TupleValue, arg0: inst_block78000064, type: type(inst78000199)} +// CHECK:STDOUT: inst7800019B: {kind: SymbolicBindingPattern, arg0: entity_name78000031, type: type(inst78000096)} +// CHECK:STDOUT: inst7800019C: {kind: ImportRefLoaded, arg0: import_ir_instE0, arg1: entity_name, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst7800019D: {kind: ReturnSlotPattern, arg0: inst78000198, arg1: inst, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst7800019E: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst7800019F: {kind: ImportRefLoaded, arg0: import_ir_instE1, arg1: entity_name, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst780001A0: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst7800019E, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst780001A1: {kind: ImportRefLoaded, arg0: import_ir_instE2, arg1: entity_name, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst780001A2: {kind: InitForm, arg0: inst7800018F, type: type(inst(FormType))} +// CHECK:STDOUT: inst780001A3: {kind: ImportRefLoaded, arg0: import_ir_instE3, arg1: entity_name, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst780001A4: {kind: ImportRefLoaded, arg0: import_ir_instE4, arg1: entity_name, type: type(symbolic_constant78000154)} +// CHECK:STDOUT: inst780001A5: {kind: ImportRefLoaded, arg0: import_ir_instE5, arg1: entity_name, type: type(symbolic_constant78000154)} +// CHECK:STDOUT: inst780001A6: {kind: ImportRefLoaded, arg0: import_ir_instE6, arg1: entity_name, type: type(symbolic_constant78000154)} +// CHECK:STDOUT: inst780001A7: {kind: ImportRefLoaded, arg0: import_ir_instE7, arg1: entity_name, type: type(symbolic_constant78000154)} +// CHECK:STDOUT: inst780001A8: {kind: ImportRefLoaded, arg0: import_ir_instE8, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780001A9: {kind: ImportRefLoaded, arg0: import_ir_instE9, arg1: entity_name, type: type(inst(FormType))} +// CHECK:STDOUT: inst780001AA: {kind: ImportRefLoaded, arg0: import_ir_instEA, arg1: entity_name, type: type(symbolic_constant78000154)} +// CHECK:STDOUT: inst780001AB: {kind: ImportRefLoaded, arg0: import_ir_instEB, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001AC: {kind: ImportRefLoaded, arg0: import_ir_instEC, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001AD: {kind: ImportRefLoaded, arg0: import_ir_instED, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001AE: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001AF: {kind: FacetAccessType, arg0: inst780001AE, type: type(TypeType)} +// CHECK:STDOUT: inst780001B0: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001B1: {kind: FacetAccessType, arg0: inst780001B0, type: type(TypeType)} +// CHECK:STDOUT: inst780001B2: {kind: SymbolicBinding, arg0: entity_name78000031, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001B3: {kind: FacetAccessType, arg0: inst780001B2, type: type(TypeType)} +// CHECK:STDOUT: inst780001B4: {kind: TupleType, arg0: inst_block7800006B, type: type(TypeType)} +// CHECK:STDOUT: inst780001B5: {kind: PatternType, arg0: inst780001B4, type: type(TypeType)} +// CHECK:STDOUT: inst780001B6: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000173)} +// CHECK:STDOUT: inst780001B7: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780001B6, type: type(symbolic_constant78000173)} +// CHECK:STDOUT: inst780001B8: {kind: InitForm, arg0: inst780001B4, type: type(inst(FormType))} +// CHECK:STDOUT: inst780001B9: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000173)} +// CHECK:STDOUT: inst780001BA: {kind: ReturnSlotPattern, arg0: inst780001B9, arg1: inst, type: type(symbolic_constant78000173)} +// CHECK:STDOUT: inst780001BB: {kind: LookupImplWitness, arg0: inst7800018D, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001BC: {kind: FunctionType, arg0: function78000001, arg1: specific78000018, type: type(TypeType)} +// CHECK:STDOUT: inst780001BD: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant7800017A)} +// CHECK:STDOUT: inst780001BE: {kind: FunctionTypeWithSelfType, arg0: inst780001BC, arg1: inst7800018D, type: type(TypeType)} +// CHECK:STDOUT: inst780001BF: {kind: ImplWitnessAccess, arg0: inst780001BB, arg1: element0, type: type(symbolic_constant7800017C)} +// CHECK:STDOUT: inst780001C0: {kind: SpecificImplFunction, arg0: inst780001BF, arg1: specific78000019, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst780001C1: {kind: PatternType, arg0: inst7800018E, type: type(TypeType)} +// CHECK:STDOUT: inst780001C2: {kind: OutParamPattern, arg0: name(ReturnSlot), type: type(symbolic_constant78000180)} +// CHECK:STDOUT: inst780001C3: {kind: ImportRefLoaded, arg0: import_ir_instFB, arg1: entity_name, type: type(symbolic_constant78000180)} +// CHECK:STDOUT: inst780001C4: {kind: ReturnSlotPattern, arg0: inst780001C2, arg1: inst, type: type(symbolic_constant78000180)} +// CHECK:STDOUT: inst780001C5: {kind: InitForm, arg0: inst7800018E, type: type(inst(FormType))} +// CHECK:STDOUT: inst780001C6: {kind: ValueParamPattern, arg0: name(SelfValue), type: type(symbolic_constant78000180)} +// CHECK:STDOUT: inst780001C7: {kind: ImportRefLoaded, arg0: import_ir_instFC, arg1: entity_name, type: type(symbolic_constant78000180)} +// CHECK:STDOUT: inst780001C8: {kind: WrapperBindingPattern, arg0: entity_name78000007, arg1: inst780001C6, type: type(symbolic_constant78000180)} +// CHECK:STDOUT: inst780001C9: {kind: RequireCompleteType, arg0: inst7800018E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001CA: {kind: RequireCompleteType, arg0: inst7800018F, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001CB: {kind: RequireCompleteType, arg0: inst780001B4, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001CC: {kind: RequireCompleteType, arg0: inst780001AF, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001CD: {kind: FunctionType, arg0: function78000001, arg1: specific7800001B, type: type(TypeType)} +// CHECK:STDOUT: inst780001CE: {kind: FunctionTypeWithSelfType, arg0: inst780001CD, arg1: inst780001AE, type: type(TypeType)} +// CHECK:STDOUT: inst780001CF: {kind: LookupImplWitness, arg0: inst780001AE, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001D0: {kind: ImplWitnessAccess, arg0: inst780001CF, arg1: element0, type: type(symbolic_constant7800019D)} +// CHECK:STDOUT: inst780001D1: {kind: SpecificImplFunction, arg0: inst780001D0, arg1: specific7800001C, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst780001D2: {kind: RequireCompleteType, arg0: inst780001B1, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001D3: {kind: FunctionType, arg0: function78000001, arg1: specific7800001D, type: type(TypeType)} +// CHECK:STDOUT: inst780001D4: {kind: FunctionTypeWithSelfType, arg0: inst780001D3, arg1: inst780001B0, type: type(TypeType)} +// CHECK:STDOUT: inst780001D5: {kind: LookupImplWitness, arg0: inst780001B0, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001D6: {kind: ImplWitnessAccess, arg0: inst780001D5, arg1: element0, type: type(symbolic_constant780001A3)} +// CHECK:STDOUT: inst780001D7: {kind: SpecificImplFunction, arg0: inst780001D6, arg1: specific7800001E, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst780001D8: {kind: RequireCompleteType, arg0: inst780001B3, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001D9: {kind: FunctionType, arg0: function78000001, arg1: specific7800001F, type: type(TypeType)} +// CHECK:STDOUT: inst780001DA: {kind: FunctionTypeWithSelfType, arg0: inst780001D9, arg1: inst780001B2, type: type(TypeType)} +// CHECK:STDOUT: inst780001DB: {kind: LookupImplWitness, arg0: inst780001B2, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001DC: {kind: ImplWitnessAccess, arg0: inst780001DB, arg1: element0, type: type(symbolic_constant780001A9)} +// CHECK:STDOUT: inst780001DD: {kind: SpecificImplFunction, arg0: inst780001DC, arg1: specific78000020, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst780001DE: {kind: ImportRefLoaded, arg0: import_ir_inst110, arg1: entity_name, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst780001DF: {kind: ImportRefLoaded, arg0: import_ir_inst111, arg1: entity_name, type: type(symbolic_constant7800014D)} +// CHECK:STDOUT: inst780001E0: {kind: ImportRefLoaded, arg0: import_ir_inst112, arg1: entity_name, type: type(inst78000096)} +// CHECK:STDOUT: inst780001E1: {kind: ImportRefLoaded, arg0: import_ir_inst113, arg1: entity_name, type: type(inst78000096)} +// CHECK:STDOUT: inst780001E2: {kind: ImportRefLoaded, arg0: import_ir_inst114, arg1: entity_name, type: type(inst78000096)} +// CHECK:STDOUT: inst780001E3: {kind: ImportRefLoaded, arg0: import_ir_inst115, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780001E4: {kind: ImportRefLoaded, arg0: import_ir_inst116, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst780001E5: {kind: ImportRefLoaded, arg0: import_ir_inst117, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001E6: {kind: ImportRefLoaded, arg0: import_ir_inst118, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001E7: {kind: ImportRefLoaded, arg0: import_ir_inst119, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001E8: {kind: ImportRefLoaded, arg0: import_ir_inst11A, arg1: entity_name, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001E9: {kind: SymbolicBindingPattern, arg0: entity_name78000001, type: type(inst78000096)} +// CHECK:STDOUT: inst780001EA: {kind: SymbolicBinding, arg0: entity_name78000001, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001EB: {kind: SymbolicBindingPattern, arg0: entity_name78000021, type: type(inst78000096)} +// CHECK:STDOUT: inst780001EC: {kind: SymbolicBinding, arg0: entity_name78000021, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001ED: {kind: SymbolicBindingPattern, arg0: entity_name78000031, type: type(inst78000096)} +// CHECK:STDOUT: inst780001EE: {kind: SymbolicBinding, arg0: entity_name78000031, arg1: inst, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001EF: {kind: TupleValue, arg0: inst_block7800007A, type: type(inst78000199)} +// CHECK:STDOUT: inst780001F0: {kind: FacetAccessType, arg0: inst780001EA, type: type(TypeType)} +// CHECK:STDOUT: inst780001F1: {kind: FacetAccessType, arg0: inst780001EC, type: type(TypeType)} +// CHECK:STDOUT: inst780001F2: {kind: FacetAccessType, arg0: inst780001EE, type: type(TypeType)} +// CHECK:STDOUT: inst780001F3: {kind: TupleType, arg0: inst_block7800007B, type: type(TypeType)} +// CHECK:STDOUT: inst780001F4: {kind: ImplSelfWitness, arg0: inst780001F3, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001F5: {kind: ImplWitness, arg0: inst78000192, arg1: specific78000021, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001F6: {kind: FunctionType, arg0: function78000005, arg1: specific78000021, type: type(TypeType)} +// CHECK:STDOUT: inst780001F7: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780001CA)} +// CHECK:STDOUT: inst780001F8: {kind: LookupImplWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst780001F9: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst780001FA: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst780001FB: {kind: RequireSpecificDefinition, arg0: specific78000022, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst780001FC: {kind: FacetValue, arg0: inst7800001F, arg1: inst_block78000082, type: type(inst7800005A)} +// CHECK:STDOUT: inst780001FD: {kind: FunctionType, arg0: function78000001, arg1: specific78000023, type: type(TypeType)} +// CHECK:STDOUT: inst780001FE: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant780001D1)} +// CHECK:STDOUT: inst780001FF: {kind: FunctionTypeWithSelfType, arg0: inst780001FD, arg1: inst780001FC, type: type(TypeType)} +// CHECK:STDOUT: inst78000200: {kind: ImplWitnessAccess, arg0: inst780001F8, arg1: element0, type: type(symbolic_constant780001D8)} +// CHECK:STDOUT: inst78000201: {kind: ImplWitnessAccess, arg0: inst780001F8, arg1: element0, type: type(symbolic_constant780001D3)} +// CHECK:STDOUT: inst78000202: {kind: LookupImplWitness, arg0: inst78000020, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000203: {kind: FacetValue, arg0: inst78000020, arg1: inst_block78000085, type: type(inst7800005A)} +// CHECK:STDOUT: inst78000204: {kind: FunctionType, arg0: function78000001, arg1: specific78000024, type: type(TypeType)} +// CHECK:STDOUT: inst78000205: {kind: FunctionTypeWithSelfType, arg0: inst78000204, arg1: inst78000203, type: type(TypeType)} +// CHECK:STDOUT: inst78000206: {kind: ImplWitnessAccess, arg0: inst78000202, arg1: element0, type: type(symbolic_constant780001D8)} +// CHECK:STDOUT: inst78000207: {kind: BoundMethod, arg0: inst78000052, arg1: inst78000200, type: type(inst(BoundMethodType))} +// CHECK:STDOUT: inst78000208: {kind: LookupImplWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst78000209: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst7800020A: {kind: FacetValue, arg0: inst7800001F, arg1: inst_block78000082, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800020B: {kind: Converted, arg0: inst7800001F, arg1: inst7800020A, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800020C: {kind: LookupImplWitness, arg0: inst7800001F, arg1: specific_interface78000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst7800020D: {kind: RequireSpecificDefinition, arg0: specific7800000B, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst7800020E: {kind: FacetValue, arg0: inst7800001F, arg1: inst_block78000082, type: type(inst7800005A)} +// CHECK:STDOUT: inst7800020F: {kind: Converted, arg0: inst7800001F, arg1: inst7800020E, type: type(inst7800005A)} +// CHECK:STDOUT: inst78000210: {kind: SpecificImplFunction, arg0: inst78000200, arg1: specific78000025, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst78000211: {kind: SpecificImplFunction, arg0: inst78000201, arg1: specific78000025, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst78000212: {kind: SpecificImplFunction, arg0: inst78000206, arg1: specific78000026, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst78000213: {kind: BoundMethod, arg0: inst78000052, arg1: inst78000210, type: type(inst(BoundMethodType))} +// CHECK:STDOUT: inst78000214: {kind: Call, arg0: inst78000213, arg1: inst_block78000089, type: type(symbolic_constant78000006)} +// CHECK:STDOUT: inst78000215: {kind: InPlaceInit, arg0: inst78000214, arg1: inst78000056, type: type(symbolic_constant78000006)} +// CHECK:STDOUT: inst78000216: {kind: TupleAccess, arg0: inst78000046, arg1: element1, type: type(inst7800002C)} +// CHECK:STDOUT: inst78000217: {kind: TupleInit, arg0: inst_block_empty, arg1: inst78000216, type: type(inst7800002C)} +// CHECK:STDOUT: inst78000218: {kind: Converted, arg0: inst78000053, arg1: inst78000217, type: type(inst7800002C)} +// CHECK:STDOUT: inst78000219: {kind: InPlaceInit, arg0: inst78000218, arg1: inst78000216, type: type(inst7800002C)} +// CHECK:STDOUT: inst7800021A: {kind: TupleInit, arg0: inst_block7800008A, arg1: inst78000046, type: type(symbolic_constant78000010)} +// CHECK:STDOUT: inst7800021B: {kind: Converted, arg0: inst78000054, arg1: inst7800021A, type: type(symbolic_constant78000010)} +// CHECK:STDOUT: inst7800021C: {kind: ReturnExpr, arg0: inst7800021B, arg1: inst78000046} // CHECK:STDOUT: bundles: {} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: @@ -1221,372 +1259,396 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst7800008A: symbolic_constant78000045 // CHECK:STDOUT: inst7800008B: symbolic_constant78000046 // CHECK:STDOUT: inst7800008C: symbolic_constant78000047 -// CHECK:STDOUT: inst7800008D: constant -// CHECK:STDOUT: inst7800008E: concrete_constant(inst7800008E) -// CHECK:STDOUT: inst7800008F: symbolic_constant78000049 -// CHECK:STDOUT: inst78000090: symbolic_constant7800004D -// CHECK:STDOUT: inst78000091: symbolic_constant7800004B -// CHECK:STDOUT: inst78000092: symbolic_constant7800004C +// CHECK:STDOUT: inst7800008D: symbolic_constant78000048 +// CHECK:STDOUT: inst7800008E: constant +// CHECK:STDOUT: inst7800008F: concrete_constant(inst7800008F) +// CHECK:STDOUT: inst78000090: symbolic_constant7800004B +// CHECK:STDOUT: inst78000091: symbolic_constant7800004F +// CHECK:STDOUT: inst78000092: symbolic_constant7800004D // CHECK:STDOUT: inst78000093: symbolic_constant7800004E -// CHECK:STDOUT: inst78000094: symbolic_constant7800004F -// CHECK:STDOUT: inst78000095: concrete_constant(inst78000095) -// CHECK:STDOUT: inst78000096: symbolic_constant78000051 -// CHECK:STDOUT: inst78000097: symbolic_constant7800004F -// CHECK:STDOUT: inst78000098: symbolic_constant78000052 -// CHECK:STDOUT: inst78000099: symbolic_constant78000055 -// CHECK:STDOUT: inst7800009A: symbolic_constant78000055 -// CHECK:STDOUT: inst7800009B: symbolic_constant78000056 -// CHECK:STDOUT: inst7800009C: symbolic_constant7800004F -// CHECK:STDOUT: inst7800009D: symbolic_constant7800005A -// CHECK:STDOUT: inst7800009E: symbolic_constant78000055 -// CHECK:STDOUT: inst7800009F: symbolic_constant78000065 -// CHECK:STDOUT: inst780000A0: symbolic_constant78000064 -// CHECK:STDOUT: inst780000A1: symbolic_constant78000057 -// CHECK:STDOUT: inst780000A2: symbolic_constant78000057 -// CHECK:STDOUT: inst780000A3: symbolic_constant78000063 -// CHECK:STDOUT: inst780000A4: symbolic_constant78000062 -// CHECK:STDOUT: inst780000A5: symbolic_constant78000053 -// CHECK:STDOUT: inst780000A6: symbolic_constant78000061 -// CHECK:STDOUT: inst780000A7: symbolic_constant78000066 -// CHECK:STDOUT: inst780000A8: symbolic_constant78000067 -// CHECK:STDOUT: inst780000A9: symbolic_constant78000068 -// CHECK:STDOUT: inst780000AA: symbolic_constant78000069 -// CHECK:STDOUT: inst780000AB: symbolic_constant7800006A -// CHECK:STDOUT: inst780000AC: symbolic_constant7800006B -// CHECK:STDOUT: inst780000AD: symbolic_constant7800006C -// CHECK:STDOUT: inst780000AE: symbolic_constant7800006D -// CHECK:STDOUT: inst780000AF: symbolic_constant7800006E -// CHECK:STDOUT: inst780000B0: symbolic_constant7800006F -// CHECK:STDOUT: inst780000B1: symbolic_constant78000070 -// CHECK:STDOUT: inst780000B2: symbolic_constant78000071 -// CHECK:STDOUT: inst780000B3: symbolic_constant78000072 -// CHECK:STDOUT: inst780000B4: symbolic_constant78000073 -// CHECK:STDOUT: inst780000B5: symbolic_constant78000074 +// CHECK:STDOUT: inst78000094: symbolic_constant78000050 +// CHECK:STDOUT: inst78000095: symbolic_constant78000051 +// CHECK:STDOUT: inst78000096: concrete_constant(inst78000096) +// CHECK:STDOUT: inst78000097: symbolic_constant78000053 +// CHECK:STDOUT: inst78000098: symbolic_constant78000051 +// CHECK:STDOUT: inst78000099: symbolic_constant78000054 +// CHECK:STDOUT: inst7800009A: symbolic_constant78000057 +// CHECK:STDOUT: inst7800009B: symbolic_constant78000057 +// CHECK:STDOUT: inst7800009C: symbolic_constant78000058 +// CHECK:STDOUT: inst7800009D: symbolic_constant78000051 +// CHECK:STDOUT: inst7800009E: symbolic_constant7800005C +// CHECK:STDOUT: inst7800009F: symbolic_constant78000057 +// CHECK:STDOUT: inst780000A0: symbolic_constant78000067 +// CHECK:STDOUT: inst780000A1: symbolic_constant78000066 +// CHECK:STDOUT: inst780000A2: symbolic_constant78000059 +// CHECK:STDOUT: inst780000A3: symbolic_constant78000059 +// CHECK:STDOUT: inst780000A4: symbolic_constant78000065 +// CHECK:STDOUT: inst780000A5: symbolic_constant78000064 +// CHECK:STDOUT: inst780000A6: symbolic_constant78000055 +// CHECK:STDOUT: inst780000A7: symbolic_constant78000063 +// CHECK:STDOUT: inst780000A8: symbolic_constant78000068 +// CHECK:STDOUT: inst780000A9: symbolic_constant78000069 +// CHECK:STDOUT: inst780000AA: symbolic_constant7800006A +// CHECK:STDOUT: inst780000AB: symbolic_constant7800006B +// CHECK:STDOUT: inst780000AC: symbolic_constant7800006C +// CHECK:STDOUT: inst780000AD: symbolic_constant7800006D +// CHECK:STDOUT: inst780000AE: symbolic_constant7800006E +// CHECK:STDOUT: inst780000AF: symbolic_constant7800006F +// CHECK:STDOUT: inst780000B0: symbolic_constant78000070 +// CHECK:STDOUT: inst780000B1: symbolic_constant78000071 +// CHECK:STDOUT: inst780000B2: symbolic_constant78000072 +// CHECK:STDOUT: inst780000B3: symbolic_constant78000073 +// CHECK:STDOUT: inst780000B4: symbolic_constant78000074 +// CHECK:STDOUT: inst780000B5: symbolic_constant78000075 // CHECK:STDOUT: inst780000B6: symbolic_constant78000076 -// CHECK:STDOUT: inst780000B7: symbolic_constant78000077 -// CHECK:STDOUT: inst780000B8: symbolic_constant78000077 -// CHECK:STDOUT: inst780000B9: symbolic_constant78000078 -// CHECK:STDOUT: inst780000BA: symbolic_constant78000079 -// CHECK:STDOUT: inst780000BB: symbolic_constant7800007A -// CHECK:STDOUT: inst780000BC: symbolic_constant7800007A -// CHECK:STDOUT: inst780000BD: symbolic_constant7800007B -// CHECK:STDOUT: inst780000BE: symbolic_constant78000080 +// CHECK:STDOUT: inst780000B7: symbolic_constant78000078 +// CHECK:STDOUT: inst780000B8: symbolic_constant78000079 +// CHECK:STDOUT: inst780000B9: symbolic_constant78000079 +// CHECK:STDOUT: inst780000BA: symbolic_constant7800007A +// CHECK:STDOUT: inst780000BB: symbolic_constant7800007B +// CHECK:STDOUT: inst780000BC: symbolic_constant7800007C +// CHECK:STDOUT: inst780000BD: symbolic_constant7800007C +// CHECK:STDOUT: inst780000BE: symbolic_constant7800007D // CHECK:STDOUT: inst780000BF: symbolic_constant78000082 // CHECK:STDOUT: inst780000C0: symbolic_constant78000084 -// CHECK:STDOUT: inst780000C1: symbolic_constant78000085 -// CHECK:STDOUT: inst780000C2: symbolic_constant78000086 -// CHECK:STDOUT: inst780000C3: symbolic_constant78000087 -// CHECK:STDOUT: inst780000C4: symbolic_constant78000088 -// CHECK:STDOUT: inst780000C5: symbolic_constant78000089 -// CHECK:STDOUT: inst780000C6: symbolic_constant7800008A -// CHECK:STDOUT: inst780000C7: symbolic_constant7800004F -// CHECK:STDOUT: inst780000C8: symbolic_constant78000055 -// CHECK:STDOUT: inst780000C9: symbolic_constant7800008F -// CHECK:STDOUT: inst780000CA: symbolic_constant78000048 -// CHECK:STDOUT: inst780000CB: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780000CC: symbolic_constant78000061 -// CHECK:STDOUT: inst780000CD: symbolic_constant78000090 -// CHECK:STDOUT: inst780000CE: symbolic_constant78000091 -// CHECK:STDOUT: inst780000CF: symbolic_constant78000092 -// CHECK:STDOUT: inst780000D0: symbolic_constant78000093 -// CHECK:STDOUT: inst780000D1: symbolic_constant78000094 +// CHECK:STDOUT: inst780000C1: symbolic_constant78000086 +// CHECK:STDOUT: inst780000C2: symbolic_constant78000087 +// CHECK:STDOUT: inst780000C3: symbolic_constant78000088 +// CHECK:STDOUT: inst780000C4: symbolic_constant78000089 +// CHECK:STDOUT: inst780000C5: symbolic_constant7800008A +// CHECK:STDOUT: inst780000C6: symbolic_constant7800008B +// CHECK:STDOUT: inst780000C7: symbolic_constant7800008C +// CHECK:STDOUT: inst780000C8: symbolic_constant78000051 +// CHECK:STDOUT: inst780000C9: symbolic_constant78000057 +// CHECK:STDOUT: inst780000CA: symbolic_constant78000092 +// CHECK:STDOUT: inst780000CB: symbolic_constant7800004A +// CHECK:STDOUT: inst780000CC: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst780000CD: symbolic_constant78000049 +// CHECK:STDOUT: inst780000CE: symbolic_constant78000063 +// CHECK:STDOUT: inst780000CF: symbolic_constant78000093 +// CHECK:STDOUT: inst780000D0: symbolic_constant78000094 +// CHECK:STDOUT: inst780000D1: symbolic_constant78000095 // CHECK:STDOUT: inst780000D2: symbolic_constant78000096 // CHECK:STDOUT: inst780000D3: symbolic_constant78000097 -// CHECK:STDOUT: inst780000D4: constant -// CHECK:STDOUT: inst780000D5: concrete_constant(inst780000D5) -// CHECK:STDOUT: inst780000D6: concrete_constant(inst(BoolType)) -// CHECK:STDOUT: inst780000D7: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780000D8: constant +// CHECK:STDOUT: inst780000D4: symbolic_constant78000098 +// CHECK:STDOUT: inst780000D5: symbolic_constant7800009A +// CHECK:STDOUT: inst780000D6: symbolic_constant7800009B +// CHECK:STDOUT: inst780000D7: constant +// CHECK:STDOUT: inst780000D8: concrete_constant(inst780000D8) // CHECK:STDOUT: inst780000D9: concrete_constant(inst780000D9) -// CHECK:STDOUT: inst780000DA: concrete_constant(inst(CharLiteralType)) +// CHECK:STDOUT: inst780000DA: concrete_constant(inst(BoolType)) // CHECK:STDOUT: inst780000DB: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780000DC: constant -// CHECK:STDOUT: inst780000DD: concrete_constant(inst780000DD) -// CHECK:STDOUT: inst780000DE: concrete_constant(inst(FloatLiteralType)) -// CHECK:STDOUT: inst780000DF: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780000E0: constant -// CHECK:STDOUT: inst780000E1: concrete_constant(inst780000E1) -// CHECK:STDOUT: inst780000E2: concrete_constant(inst(IntLiteralType)) -// CHECK:STDOUT: inst780000E3: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780000E4: symbolic_constant780001BD +// CHECK:STDOUT: inst780000DC: concrete_constant(inst780000D9) +// CHECK:STDOUT: inst780000DD: constant +// CHECK:STDOUT: inst780000DE: concrete_constant(inst780000DE) +// CHECK:STDOUT: inst780000DF: concrete_constant(inst780000DF) +// CHECK:STDOUT: inst780000E0: concrete_constant(inst(CharLiteralType)) +// CHECK:STDOUT: inst780000E1: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst780000E2: concrete_constant(inst780000DF) +// CHECK:STDOUT: inst780000E3: constant +// CHECK:STDOUT: inst780000E4: concrete_constant(inst780000E4) // CHECK:STDOUT: inst780000E5: concrete_constant(inst780000E5) -// CHECK:STDOUT: inst780000E6: constant -// CHECK:STDOUT: inst780000E7: concrete_constant(inst780000E7) -// CHECK:STDOUT: inst780000E8: symbolic_constant78000099 -// CHECK:STDOUT: inst780000E9: symbolic_constant7800009F -// CHECK:STDOUT: inst780000EA: symbolic_constant78000098 -// CHECK:STDOUT: inst780000EB: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780000EC: symbolic_constant7800009E -// CHECK:STDOUT: inst780000ED: symbolic_constant780000A0 -// CHECK:STDOUT: inst780000EE: symbolic_constant780000A1 -// CHECK:STDOUT: inst780000EF: symbolic_constant780000A2 -// CHECK:STDOUT: inst780000F0: symbolic_constant780000A3 -// CHECK:STDOUT: inst780000F1: symbolic_constant780000A7 -// CHECK:STDOUT: inst780000F2: symbolic_constant780000A5 -// CHECK:STDOUT: inst780000F3: symbolic_constant780000A6 -// CHECK:STDOUT: inst780000F4: symbolic_constant780000A8 -// CHECK:STDOUT: inst780000F5: symbolic_constant780000A8 -// CHECK:STDOUT: inst780000F6: symbolic_constant780000AA -// CHECK:STDOUT: inst780000F7: symbolic_constant780000AD -// CHECK:STDOUT: inst780000F8: symbolic_constant780000AD -// CHECK:STDOUT: inst780000F9: symbolic_constant780000AE -// CHECK:STDOUT: inst780000FA: symbolic_constant780000A8 -// CHECK:STDOUT: inst780000FB: symbolic_constant780000B2 -// CHECK:STDOUT: inst780000FC: symbolic_constant780000AD -// CHECK:STDOUT: inst780000FD: symbolic_constant780000BB -// CHECK:STDOUT: inst780000FE: symbolic_constant780000BA +// CHECK:STDOUT: inst780000E6: concrete_constant(inst(FloatLiteralType)) +// CHECK:STDOUT: inst780000E7: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst780000E8: concrete_constant(inst780000E5) +// CHECK:STDOUT: inst780000E9: constant +// CHECK:STDOUT: inst780000EA: concrete_constant(inst780000EA) +// CHECK:STDOUT: inst780000EB: concrete_constant(inst780000EB) +// CHECK:STDOUT: inst780000EC: concrete_constant(inst(IntLiteralType)) +// CHECK:STDOUT: inst780000ED: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst780000EE: concrete_constant(inst780000EB) +// CHECK:STDOUT: inst780000EF: symbolic_constant780001CD +// CHECK:STDOUT: inst780000F0: concrete_constant(inst780000F0) +// CHECK:STDOUT: inst780000F1: symbolic_constant7800009C +// CHECK:STDOUT: inst780000F2: constant +// CHECK:STDOUT: inst780000F3: concrete_constant(inst780000F3) +// CHECK:STDOUT: inst780000F4: symbolic_constant7800009F +// CHECK:STDOUT: inst780000F5: symbolic_constant780000A6 +// CHECK:STDOUT: inst780000F6: symbolic_constant7800009E +// CHECK:STDOUT: inst780000F7: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst780000F8: symbolic_constant7800009D +// CHECK:STDOUT: inst780000F9: symbolic_constant780000A5 +// CHECK:STDOUT: inst780000FA: symbolic_constant780000A7 +// CHECK:STDOUT: inst780000FB: symbolic_constant780000A8 +// CHECK:STDOUT: inst780000FC: symbolic_constant780000A9 +// CHECK:STDOUT: inst780000FD: symbolic_constant780000AA +// CHECK:STDOUT: inst780000FE: symbolic_constant780000AB // CHECK:STDOUT: inst780000FF: symbolic_constant780000AF -// CHECK:STDOUT: inst78000100: symbolic_constant780000AF -// CHECK:STDOUT: inst78000101: symbolic_constant780000B9 -// CHECK:STDOUT: inst78000102: symbolic_constant780000B8 -// CHECK:STDOUT: inst78000103: symbolic_constant780000AB -// CHECK:STDOUT: inst78000104: symbolic_constant7800009E -// CHECK:STDOUT: inst78000105: symbolic_constant780000BC -// CHECK:STDOUT: inst78000106: symbolic_constant780000BD -// CHECK:STDOUT: inst78000107: symbolic_constant780000BE -// CHECK:STDOUT: inst78000108: symbolic_constant780000BF -// CHECK:STDOUT: inst78000109: symbolic_constant780000C0 -// CHECK:STDOUT: inst7800010A: symbolic_constant780000C1 -// CHECK:STDOUT: inst7800010B: symbolic_constant780000C2 -// CHECK:STDOUT: inst7800010C: symbolic_constant780000C3 -// CHECK:STDOUT: inst7800010D: symbolic_constant780000A8 -// CHECK:STDOUT: inst7800010E: symbolic_constant780000AD -// CHECK:STDOUT: inst7800010F: symbolic_constant780000C5 -// CHECK:STDOUT: inst78000110: symbolic_constant780000C6 -// CHECK:STDOUT: inst78000111: symbolic_constant780000C7 -// CHECK:STDOUT: inst78000112: constant -// CHECK:STDOUT: inst78000113: concrete_constant(inst78000113) -// CHECK:STDOUT: inst78000114: concrete_constant(inst(TypeType)) -// CHECK:STDOUT: inst78000115: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst78000116: constant -// CHECK:STDOUT: inst78000117: concrete_constant(inst78000117) -// CHECK:STDOUT: inst78000118: concrete_constant(inst7800002C) -// CHECK:STDOUT: inst78000119: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst7800011A: constant -// CHECK:STDOUT: inst7800011B: concrete_constant(inst7800011B) -// CHECK:STDOUT: inst7800011C: symbolic_constant780000C8 -// CHECK:STDOUT: inst7800011D: symbolic_constant780000C9 -// CHECK:STDOUT: inst7800011E: symbolic_constant780000CA -// CHECK:STDOUT: inst7800011F: constant -// CHECK:STDOUT: inst78000120: concrete_constant(inst78000120) -// CHECK:STDOUT: inst78000121: symbolic_constant780000CC -// CHECK:STDOUT: inst78000122: symbolic_constant780000D0 -// CHECK:STDOUT: inst78000123: symbolic_constant780000CE -// CHECK:STDOUT: inst78000124: symbolic_constant780000CF -// CHECK:STDOUT: inst78000125: symbolic_constant780000D1 -// CHECK:STDOUT: inst78000126: symbolic_constant780000D2 +// CHECK:STDOUT: inst78000100: symbolic_constant780000AD +// CHECK:STDOUT: inst78000101: symbolic_constant780000AE +// CHECK:STDOUT: inst78000102: symbolic_constant780000B0 +// CHECK:STDOUT: inst78000103: symbolic_constant780000B0 +// CHECK:STDOUT: inst78000104: symbolic_constant780000B2 +// CHECK:STDOUT: inst78000105: symbolic_constant780000B5 +// CHECK:STDOUT: inst78000106: symbolic_constant780000B5 +// CHECK:STDOUT: inst78000107: symbolic_constant780000B6 +// CHECK:STDOUT: inst78000108: symbolic_constant780000B0 +// CHECK:STDOUT: inst78000109: symbolic_constant780000BA +// CHECK:STDOUT: inst7800010A: symbolic_constant780000B5 +// CHECK:STDOUT: inst7800010B: symbolic_constant780000C3 +// CHECK:STDOUT: inst7800010C: symbolic_constant780000C2 +// CHECK:STDOUT: inst7800010D: symbolic_constant780000B7 +// CHECK:STDOUT: inst7800010E: symbolic_constant780000B7 +// CHECK:STDOUT: inst7800010F: symbolic_constant780000C1 +// CHECK:STDOUT: inst78000110: symbolic_constant780000C0 +// CHECK:STDOUT: inst78000111: symbolic_constant780000B3 +// CHECK:STDOUT: inst78000112: symbolic_constant780000A5 +// CHECK:STDOUT: inst78000113: symbolic_constant780000C4 +// CHECK:STDOUT: inst78000114: symbolic_constant780000C5 +// CHECK:STDOUT: inst78000115: symbolic_constant780000C6 +// CHECK:STDOUT: inst78000116: symbolic_constant780000C7 +// CHECK:STDOUT: inst78000117: symbolic_constant780000C8 +// CHECK:STDOUT: inst78000118: symbolic_constant780000C9 +// CHECK:STDOUT: inst78000119: symbolic_constant780000CA +// CHECK:STDOUT: inst7800011A: symbolic_constant780000CB +// CHECK:STDOUT: inst7800011B: symbolic_constant780000B0 +// CHECK:STDOUT: inst7800011C: symbolic_constant780000B5 +// CHECK:STDOUT: inst7800011D: symbolic_constant780000CD +// CHECK:STDOUT: inst7800011E: symbolic_constant780000CE +// CHECK:STDOUT: inst7800011F: symbolic_constant780000CF +// CHECK:STDOUT: inst78000120: constant +// CHECK:STDOUT: inst78000121: concrete_constant(inst78000121) +// CHECK:STDOUT: inst78000122: concrete_constant(inst78000122) +// CHECK:STDOUT: inst78000123: concrete_constant(inst(TypeType)) +// CHECK:STDOUT: inst78000124: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst78000125: concrete_constant(inst78000122) +// CHECK:STDOUT: inst78000126: constant // CHECK:STDOUT: inst78000127: concrete_constant(inst78000127) -// CHECK:STDOUT: inst78000128: symbolic_constant780000D4 -// CHECK:STDOUT: inst78000129: symbolic_constant780000D5 -// CHECK:STDOUT: inst7800012A: symbolic_constant780000D2 -// CHECK:STDOUT: inst7800012B: symbolic_constant780000D6 -// CHECK:STDOUT: inst7800012C: symbolic_constant780000D9 -// CHECK:STDOUT: inst7800012D: symbolic_constant780000D9 -// CHECK:STDOUT: inst7800012E: symbolic_constant780000DA -// CHECK:STDOUT: inst7800012F: symbolic_constant780000D2 -// CHECK:STDOUT: inst78000130: symbolic_constant780000DE -// CHECK:STDOUT: inst78000131: symbolic_constant780000D9 -// CHECK:STDOUT: inst78000132: symbolic_constant780000EC -// CHECK:STDOUT: inst78000133: symbolic_constant780000EB -// CHECK:STDOUT: inst78000134: symbolic_constant780000DB -// CHECK:STDOUT: inst78000135: symbolic_constant780000DB -// CHECK:STDOUT: inst78000136: symbolic_constant780000EA -// CHECK:STDOUT: inst78000137: symbolic_constant780000E9 -// CHECK:STDOUT: inst78000138: symbolic_constant780000D7 -// CHECK:STDOUT: inst78000139: symbolic_constant780000E8 -// CHECK:STDOUT: inst7800013A: symbolic_constant780000E7 -// CHECK:STDOUT: inst7800013B: symbolic_constant780000ED -// CHECK:STDOUT: inst7800013C: symbolic_constant780000EE -// CHECK:STDOUT: inst7800013D: symbolic_constant780000EF -// CHECK:STDOUT: inst7800013E: symbolic_constant780000F0 -// CHECK:STDOUT: inst7800013F: symbolic_constant780000F1 -// CHECK:STDOUT: inst78000140: symbolic_constant780000F2 -// CHECK:STDOUT: inst78000141: symbolic_constant780000F3 -// CHECK:STDOUT: inst78000142: symbolic_constant780000F4 -// CHECK:STDOUT: inst78000143: symbolic_constant780000F5 -// CHECK:STDOUT: inst78000144: symbolic_constant780000F6 -// CHECK:STDOUT: inst78000145: symbolic_constant780000F7 -// CHECK:STDOUT: inst78000146: symbolic_constant780000F8 -// CHECK:STDOUT: inst78000147: symbolic_constant780000F9 -// CHECK:STDOUT: inst78000148: symbolic_constant780000FA -// CHECK:STDOUT: inst78000149: symbolic_constant780000FB -// CHECK:STDOUT: inst7800014A: symbolic_constant780000FC -// CHECK:STDOUT: inst7800014B: symbolic_constant780000FD -// CHECK:STDOUT: inst7800014C: symbolic_constant780000FF -// CHECK:STDOUT: inst7800014D: symbolic_constant78000100 -// CHECK:STDOUT: inst7800014E: symbolic_constant78000100 -// CHECK:STDOUT: inst7800014F: symbolic_constant78000101 -// CHECK:STDOUT: inst78000150: symbolic_constant78000102 -// CHECK:STDOUT: inst78000151: symbolic_constant78000103 -// CHECK:STDOUT: inst78000152: symbolic_constant78000103 -// CHECK:STDOUT: inst78000153: symbolic_constant78000104 -// CHECK:STDOUT: inst78000154: symbolic_constant78000109 -// CHECK:STDOUT: inst78000155: symbolic_constant78000111 -// CHECK:STDOUT: inst78000156: symbolic_constant78000113 -// CHECK:STDOUT: inst78000157: symbolic_constant78000114 -// CHECK:STDOUT: inst78000158: symbolic_constant78000115 -// CHECK:STDOUT: inst78000159: symbolic_constant78000116 -// CHECK:STDOUT: inst7800015A: symbolic_constant78000117 -// CHECK:STDOUT: inst7800015B: symbolic_constant78000118 -// CHECK:STDOUT: inst7800015C: symbolic_constant78000119 -// CHECK:STDOUT: inst7800015D: symbolic_constant7800011A -// CHECK:STDOUT: inst7800015E: symbolic_constant7800011B -// CHECK:STDOUT: inst7800015F: symbolic_constant7800011C -// CHECK:STDOUT: inst78000160: symbolic_constant7800011D -// CHECK:STDOUT: inst78000161: symbolic_constant7800011E -// CHECK:STDOUT: inst78000162: symbolic_constant7800011F -// CHECK:STDOUT: inst78000163: symbolic_constant780000D2 -// CHECK:STDOUT: inst78000164: symbolic_constant780000D9 -// CHECK:STDOUT: inst78000165: symbolic_constant78000129 -// CHECK:STDOUT: inst78000166: symbolic_constant78000128 -// CHECK:STDOUT: inst78000167: symbolic_constant780000CB -// CHECK:STDOUT: inst78000168: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst78000169: symbolic_constant780000E8 -// CHECK:STDOUT: inst7800016A: symbolic_constant780000E7 -// CHECK:STDOUT: inst7800016B: symbolic_constant7800012A -// CHECK:STDOUT: inst7800016C: symbolic_constant7800012B -// CHECK:STDOUT: inst7800016D: symbolic_constant7800012C -// CHECK:STDOUT: inst7800016E: symbolic_constant7800012D -// CHECK:STDOUT: inst7800016F: symbolic_constant7800012E -// CHECK:STDOUT: inst78000170: symbolic_constant7800012F -// CHECK:STDOUT: inst78000171: symbolic_constant78000130 -// CHECK:STDOUT: inst78000172: symbolic_constant78000131 -// CHECK:STDOUT: inst78000173: symbolic_constant78000132 -// CHECK:STDOUT: inst78000174: symbolic_constant78000134 -// CHECK:STDOUT: inst78000175: symbolic_constant78000135 -// CHECK:STDOUT: inst78000176: constant -// CHECK:STDOUT: inst78000177: concrete_constant(inst78000177) -// CHECK:STDOUT: inst78000178: symbolic_constant78000136 -// CHECK:STDOUT: inst78000179: symbolic_constant78000137 -// CHECK:STDOUT: inst7800017A: symbolic_constant78000138 -// CHECK:STDOUT: inst7800017B: constant -// CHECK:STDOUT: inst7800017C: concrete_constant(inst7800017C) -// CHECK:STDOUT: inst7800017D: symbolic_constant7800013A -// CHECK:STDOUT: inst7800017E: symbolic_constant7800013E -// CHECK:STDOUT: inst7800017F: symbolic_constant7800013C -// CHECK:STDOUT: inst78000180: symbolic_constant7800013D -// CHECK:STDOUT: inst78000181: symbolic_constant7800013F -// CHECK:STDOUT: inst78000182: symbolic_constant78000140 -// CHECK:STDOUT: inst78000183: concrete_constant(inst78000183) -// CHECK:STDOUT: inst78000184: symbolic_constant78000142 -// CHECK:STDOUT: inst78000185: symbolic_constant78000143 -// CHECK:STDOUT: inst78000186: symbolic_constant78000140 -// CHECK:STDOUT: inst78000187: symbolic_constant78000144 -// CHECK:STDOUT: inst78000188: symbolic_constant78000147 -// CHECK:STDOUT: inst78000189: symbolic_constant78000147 -// CHECK:STDOUT: inst7800018A: symbolic_constant78000148 -// CHECK:STDOUT: inst7800018B: symbolic_constant78000140 -// CHECK:STDOUT: inst7800018C: symbolic_constant7800014C -// CHECK:STDOUT: inst7800018D: symbolic_constant78000147 -// CHECK:STDOUT: inst7800018E: symbolic_constant7800015D -// CHECK:STDOUT: inst7800018F: symbolic_constant7800015C -// CHECK:STDOUT: inst78000190: symbolic_constant78000149 -// CHECK:STDOUT: inst78000191: symbolic_constant78000149 -// CHECK:STDOUT: inst78000192: symbolic_constant7800015B -// CHECK:STDOUT: inst78000193: symbolic_constant7800015A -// CHECK:STDOUT: inst78000194: symbolic_constant78000145 -// CHECK:STDOUT: inst78000195: symbolic_constant78000159 -// CHECK:STDOUT: inst78000196: symbolic_constant78000158 -// CHECK:STDOUT: inst78000197: symbolic_constant78000157 -// CHECK:STDOUT: inst78000198: symbolic_constant7800015E -// CHECK:STDOUT: inst78000199: symbolic_constant7800015F -// CHECK:STDOUT: inst7800019A: symbolic_constant78000160 -// CHECK:STDOUT: inst7800019B: symbolic_constant78000161 -// CHECK:STDOUT: inst7800019C: symbolic_constant78000162 -// CHECK:STDOUT: inst7800019D: symbolic_constant78000163 -// CHECK:STDOUT: inst7800019E: symbolic_constant78000164 -// CHECK:STDOUT: inst7800019F: symbolic_constant78000165 -// CHECK:STDOUT: inst780001A0: symbolic_constant78000166 -// CHECK:STDOUT: inst780001A1: symbolic_constant78000167 -// CHECK:STDOUT: inst780001A2: symbolic_constant78000168 -// CHECK:STDOUT: inst780001A3: symbolic_constant78000169 -// CHECK:STDOUT: inst780001A4: symbolic_constant7800016A -// CHECK:STDOUT: inst780001A5: symbolic_constant7800016B -// CHECK:STDOUT: inst780001A6: symbolic_constant7800016C -// CHECK:STDOUT: inst780001A7: symbolic_constant7800016D -// CHECK:STDOUT: inst780001A8: symbolic_constant7800016E -// CHECK:STDOUT: inst780001A9: symbolic_constant7800016F -// CHECK:STDOUT: inst780001AA: symbolic_constant78000170 -// CHECK:STDOUT: inst780001AB: symbolic_constant78000172 -// CHECK:STDOUT: inst780001AC: symbolic_constant78000173 -// CHECK:STDOUT: inst780001AD: symbolic_constant78000173 -// CHECK:STDOUT: inst780001AE: symbolic_constant78000174 -// CHECK:STDOUT: inst780001AF: symbolic_constant78000175 -// CHECK:STDOUT: inst780001B0: symbolic_constant78000176 -// CHECK:STDOUT: inst780001B1: symbolic_constant78000176 -// CHECK:STDOUT: inst780001B2: symbolic_constant78000177 -// CHECK:STDOUT: inst780001B3: symbolic_constant7800017C -// CHECK:STDOUT: inst780001B4: symbolic_constant7800018A -// CHECK:STDOUT: inst780001B5: symbolic_constant7800018C -// CHECK:STDOUT: inst780001B6: symbolic_constant7800018D -// CHECK:STDOUT: inst780001B7: symbolic_constant7800018E -// CHECK:STDOUT: inst780001B8: symbolic_constant7800018F -// CHECK:STDOUT: inst780001B9: symbolic_constant78000190 -// CHECK:STDOUT: inst780001BA: symbolic_constant78000191 -// CHECK:STDOUT: inst780001BB: symbolic_constant78000192 -// CHECK:STDOUT: inst780001BC: symbolic_constant78000193 -// CHECK:STDOUT: inst780001BD: symbolic_constant78000194 -// CHECK:STDOUT: inst780001BE: symbolic_constant78000195 -// CHECK:STDOUT: inst780001BF: symbolic_constant78000196 -// CHECK:STDOUT: inst780001C0: symbolic_constant78000197 -// CHECK:STDOUT: inst780001C1: symbolic_constant78000198 -// CHECK:STDOUT: inst780001C2: symbolic_constant78000199 -// CHECK:STDOUT: inst780001C3: symbolic_constant7800019A -// CHECK:STDOUT: inst780001C4: symbolic_constant7800019B -// CHECK:STDOUT: inst780001C5: symbolic_constant7800019C -// CHECK:STDOUT: inst780001C6: symbolic_constant7800019D -// CHECK:STDOUT: inst780001C7: symbolic_constant7800019E -// CHECK:STDOUT: inst780001C8: symbolic_constant78000140 -// CHECK:STDOUT: inst780001C9: symbolic_constant78000147 -// CHECK:STDOUT: inst780001CA: symbolic_constant780001AC -// CHECK:STDOUT: inst780001CB: symbolic_constant780001AB -// CHECK:STDOUT: inst780001CC: symbolic_constant780001AA -// CHECK:STDOUT: inst780001CD: symbolic_constant78000139 -// CHECK:STDOUT: inst780001CE: concrete_constant(inst7800005A) -// CHECK:STDOUT: inst780001CF: symbolic_constant78000159 -// CHECK:STDOUT: inst780001D0: symbolic_constant78000158 -// CHECK:STDOUT: inst780001D1: symbolic_constant78000157 -// CHECK:STDOUT: inst780001D2: symbolic_constant780001AD -// CHECK:STDOUT: inst780001D3: symbolic_constant780001AE -// CHECK:STDOUT: inst780001D4: symbolic_constant780001AF -// CHECK:STDOUT: inst780001D5: symbolic_constant780001B0 -// CHECK:STDOUT: inst780001D6: symbolic_constant780001B1 -// CHECK:STDOUT: inst780001D7: symbolic_constant780001B2 -// CHECK:STDOUT: inst780001D8: symbolic_constant780001B3 -// CHECK:STDOUT: inst780001D9: symbolic_constant780001B4 -// CHECK:STDOUT: inst780001DA: symbolic_constant780001B5 -// CHECK:STDOUT: inst780001DB: symbolic_constant780001B6 -// CHECK:STDOUT: inst780001DC: symbolic_constant780001B7 -// CHECK:STDOUT: inst780001DD: symbolic_constant780001B8 -// CHECK:STDOUT: inst780001DE: symbolic_constant780001BA -// CHECK:STDOUT: inst780001DF: symbolic_constant780001BB -// CHECK:STDOUT: inst780001E0: symbolic_constant780001BC -// CHECK:STDOUT: inst780001E1: symbolic_constant780001BF -// CHECK:STDOUT: inst780001E2: symbolic_constant780001BE -// CHECK:STDOUT: inst780001E3: symbolic_constant780001BF -// CHECK:STDOUT: inst780001E4: symbolic_constant780001C0 -// CHECK:STDOUT: inst780001E5: symbolic_constant780001C1 -// CHECK:STDOUT: inst780001E6: symbolic_constant780001C2 -// CHECK:STDOUT: inst780001E7: symbolic_constant780001C3 -// CHECK:STDOUT: inst780001E8: symbolic_constant780001C9 -// CHECK:STDOUT: inst780001E9: symbolic_constant780001C4 -// CHECK:STDOUT: inst780001EA: symbolic_constant780001C5 -// CHECK:STDOUT: inst780001EB: symbolic_constant780001C6 -// CHECK:STDOUT: inst780001EC: symbolic_constant780001C7 -// CHECK:STDOUT: inst780001ED: symbolic_constant780001C8 -// CHECK:STDOUT: inst780001EE: symbolic_constant780001C9 -// CHECK:STDOUT: inst780001F1: symbolic_constant780001BF -// CHECK:STDOUT: inst780001F2: symbolic_constant780001C6 +// CHECK:STDOUT: inst78000128: concrete_constant(inst78000128) +// CHECK:STDOUT: inst78000129: concrete_constant(inst7800002C) +// CHECK:STDOUT: inst7800012A: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst7800012B: concrete_constant(inst78000128) +// CHECK:STDOUT: inst7800012C: constant +// CHECK:STDOUT: inst7800012D: concrete_constant(inst7800012D) +// CHECK:STDOUT: inst7800012E: symbolic_constant780000D0 +// CHECK:STDOUT: inst7800012F: symbolic_constant780000D1 +// CHECK:STDOUT: inst78000130: symbolic_constant780000D2 +// CHECK:STDOUT: inst78000131: symbolic_constant780000D3 +// CHECK:STDOUT: inst78000132: constant +// CHECK:STDOUT: inst78000133: concrete_constant(inst78000133) +// CHECK:STDOUT: inst78000134: symbolic_constant780000D6 +// CHECK:STDOUT: inst78000135: symbolic_constant780000DA +// CHECK:STDOUT: inst78000136: symbolic_constant780000D8 +// CHECK:STDOUT: inst78000137: symbolic_constant780000D9 +// CHECK:STDOUT: inst78000138: symbolic_constant780000DB +// CHECK:STDOUT: inst78000139: symbolic_constant780000DC +// CHECK:STDOUT: inst7800013A: concrete_constant(inst7800013A) +// CHECK:STDOUT: inst7800013B: symbolic_constant780000DE +// CHECK:STDOUT: inst7800013C: symbolic_constant780000DF +// CHECK:STDOUT: inst7800013D: symbolic_constant780000DC +// CHECK:STDOUT: inst7800013E: symbolic_constant780000E0 +// CHECK:STDOUT: inst7800013F: symbolic_constant780000E3 +// CHECK:STDOUT: inst78000140: symbolic_constant780000E3 +// CHECK:STDOUT: inst78000141: symbolic_constant780000E4 +// CHECK:STDOUT: inst78000142: symbolic_constant780000DC +// CHECK:STDOUT: inst78000143: symbolic_constant780000E8 +// CHECK:STDOUT: inst78000144: symbolic_constant780000E3 +// CHECK:STDOUT: inst78000145: symbolic_constant780000F6 +// CHECK:STDOUT: inst78000146: symbolic_constant780000F5 +// CHECK:STDOUT: inst78000147: symbolic_constant780000E5 +// CHECK:STDOUT: inst78000148: symbolic_constant780000E5 +// CHECK:STDOUT: inst78000149: symbolic_constant780000F4 +// CHECK:STDOUT: inst7800014A: symbolic_constant780000F3 +// CHECK:STDOUT: inst7800014B: symbolic_constant780000E1 +// CHECK:STDOUT: inst7800014C: symbolic_constant780000F2 +// CHECK:STDOUT: inst7800014D: symbolic_constant780000F1 +// CHECK:STDOUT: inst7800014E: symbolic_constant780000F7 +// CHECK:STDOUT: inst7800014F: symbolic_constant780000F8 +// CHECK:STDOUT: inst78000150: symbolic_constant780000F9 +// CHECK:STDOUT: inst78000151: symbolic_constant780000FA +// CHECK:STDOUT: inst78000152: symbolic_constant780000FB +// CHECK:STDOUT: inst78000153: symbolic_constant780000FC +// CHECK:STDOUT: inst78000154: symbolic_constant780000FD +// CHECK:STDOUT: inst78000155: symbolic_constant780000FE +// CHECK:STDOUT: inst78000156: symbolic_constant780000FF +// CHECK:STDOUT: inst78000157: symbolic_constant78000100 +// CHECK:STDOUT: inst78000158: symbolic_constant78000101 +// CHECK:STDOUT: inst78000159: symbolic_constant78000102 +// CHECK:STDOUT: inst7800015A: symbolic_constant78000103 +// CHECK:STDOUT: inst7800015B: symbolic_constant78000104 +// CHECK:STDOUT: inst7800015C: symbolic_constant78000105 +// CHECK:STDOUT: inst7800015D: symbolic_constant78000106 +// CHECK:STDOUT: inst7800015E: symbolic_constant78000107 +// CHECK:STDOUT: inst7800015F: symbolic_constant78000109 +// CHECK:STDOUT: inst78000160: symbolic_constant7800010A +// CHECK:STDOUT: inst78000161: symbolic_constant7800010A +// CHECK:STDOUT: inst78000162: symbolic_constant7800010B +// CHECK:STDOUT: inst78000163: symbolic_constant7800010C +// CHECK:STDOUT: inst78000164: symbolic_constant7800010D +// CHECK:STDOUT: inst78000165: symbolic_constant7800010D +// CHECK:STDOUT: inst78000166: symbolic_constant7800010E +// CHECK:STDOUT: inst78000167: symbolic_constant78000113 +// CHECK:STDOUT: inst78000168: symbolic_constant7800011B +// CHECK:STDOUT: inst78000169: symbolic_constant7800011D +// CHECK:STDOUT: inst7800016A: symbolic_constant7800011E +// CHECK:STDOUT: inst7800016B: symbolic_constant7800011F +// CHECK:STDOUT: inst7800016C: symbolic_constant78000120 +// CHECK:STDOUT: inst7800016D: symbolic_constant78000121 +// CHECK:STDOUT: inst7800016E: symbolic_constant78000122 +// CHECK:STDOUT: inst7800016F: symbolic_constant78000123 +// CHECK:STDOUT: inst78000170: symbolic_constant78000124 +// CHECK:STDOUT: inst78000171: symbolic_constant78000125 +// CHECK:STDOUT: inst78000172: symbolic_constant78000126 +// CHECK:STDOUT: inst78000173: symbolic_constant78000127 +// CHECK:STDOUT: inst78000174: symbolic_constant78000128 +// CHECK:STDOUT: inst78000175: symbolic_constant78000129 +// CHECK:STDOUT: inst78000176: symbolic_constant780000DC +// CHECK:STDOUT: inst78000177: symbolic_constant780000E3 +// CHECK:STDOUT: inst78000178: symbolic_constant78000134 +// CHECK:STDOUT: inst78000179: symbolic_constant78000133 +// CHECK:STDOUT: inst7800017A: symbolic_constant780000D5 +// CHECK:STDOUT: inst7800017B: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst7800017C: symbolic_constant780000D4 +// CHECK:STDOUT: inst7800017D: symbolic_constant780000F2 +// CHECK:STDOUT: inst7800017E: symbolic_constant780000F1 +// CHECK:STDOUT: inst7800017F: symbolic_constant78000135 +// CHECK:STDOUT: inst78000180: symbolic_constant78000136 +// CHECK:STDOUT: inst78000181: symbolic_constant78000137 +// CHECK:STDOUT: inst78000182: symbolic_constant78000138 +// CHECK:STDOUT: inst78000183: symbolic_constant78000139 +// CHECK:STDOUT: inst78000184: symbolic_constant7800013A +// CHECK:STDOUT: inst78000185: symbolic_constant7800013B +// CHECK:STDOUT: inst78000186: symbolic_constant7800013C +// CHECK:STDOUT: inst78000187: symbolic_constant7800013D +// CHECK:STDOUT: inst78000188: symbolic_constant7800013E +// CHECK:STDOUT: inst78000189: symbolic_constant78000140 +// CHECK:STDOUT: inst7800018A: symbolic_constant78000141 +// CHECK:STDOUT: inst7800018B: constant +// CHECK:STDOUT: inst7800018C: concrete_constant(inst7800018C) +// CHECK:STDOUT: inst7800018D: symbolic_constant78000142 +// CHECK:STDOUT: inst7800018E: symbolic_constant78000143 +// CHECK:STDOUT: inst7800018F: symbolic_constant78000144 +// CHECK:STDOUT: inst78000190: symbolic_constant78000145 +// CHECK:STDOUT: inst78000191: constant +// CHECK:STDOUT: inst78000192: concrete_constant(inst78000192) +// CHECK:STDOUT: inst78000193: symbolic_constant78000148 +// CHECK:STDOUT: inst78000194: symbolic_constant7800014C +// CHECK:STDOUT: inst78000195: symbolic_constant7800014A +// CHECK:STDOUT: inst78000196: symbolic_constant7800014B +// CHECK:STDOUT: inst78000197: symbolic_constant7800014D +// CHECK:STDOUT: inst78000198: symbolic_constant7800014E +// CHECK:STDOUT: inst78000199: concrete_constant(inst78000199) +// CHECK:STDOUT: inst7800019A: symbolic_constant78000150 +// CHECK:STDOUT: inst7800019B: symbolic_constant78000151 +// CHECK:STDOUT: inst7800019C: symbolic_constant7800014E +// CHECK:STDOUT: inst7800019D: symbolic_constant78000152 +// CHECK:STDOUT: inst7800019E: symbolic_constant78000155 +// CHECK:STDOUT: inst7800019F: symbolic_constant78000155 +// CHECK:STDOUT: inst780001A0: symbolic_constant78000156 +// CHECK:STDOUT: inst780001A1: symbolic_constant7800014E +// CHECK:STDOUT: inst780001A2: symbolic_constant7800015A +// CHECK:STDOUT: inst780001A3: symbolic_constant78000155 +// CHECK:STDOUT: inst780001A4: symbolic_constant7800016B +// CHECK:STDOUT: inst780001A5: symbolic_constant7800016A +// CHECK:STDOUT: inst780001A6: symbolic_constant78000157 +// CHECK:STDOUT: inst780001A7: symbolic_constant78000157 +// CHECK:STDOUT: inst780001A8: symbolic_constant78000169 +// CHECK:STDOUT: inst780001A9: symbolic_constant78000168 +// CHECK:STDOUT: inst780001AA: symbolic_constant78000153 +// CHECK:STDOUT: inst780001AB: symbolic_constant78000167 +// CHECK:STDOUT: inst780001AC: symbolic_constant78000166 +// CHECK:STDOUT: inst780001AD: symbolic_constant78000165 +// CHECK:STDOUT: inst780001AE: symbolic_constant7800016C +// CHECK:STDOUT: inst780001AF: symbolic_constant7800016D +// CHECK:STDOUT: inst780001B0: symbolic_constant7800016E +// CHECK:STDOUT: inst780001B1: symbolic_constant7800016F +// CHECK:STDOUT: inst780001B2: symbolic_constant78000170 +// CHECK:STDOUT: inst780001B3: symbolic_constant78000171 +// CHECK:STDOUT: inst780001B4: symbolic_constant78000172 +// CHECK:STDOUT: inst780001B5: symbolic_constant78000173 +// CHECK:STDOUT: inst780001B6: symbolic_constant78000174 +// CHECK:STDOUT: inst780001B7: symbolic_constant78000175 +// CHECK:STDOUT: inst780001B8: symbolic_constant78000176 +// CHECK:STDOUT: inst780001B9: symbolic_constant78000177 +// CHECK:STDOUT: inst780001BA: symbolic_constant78000178 +// CHECK:STDOUT: inst780001BB: symbolic_constant78000179 +// CHECK:STDOUT: inst780001BC: symbolic_constant7800017A +// CHECK:STDOUT: inst780001BD: symbolic_constant7800017B +// CHECK:STDOUT: inst780001BE: symbolic_constant7800017C +// CHECK:STDOUT: inst780001BF: symbolic_constant7800017D +// CHECK:STDOUT: inst780001C0: symbolic_constant7800017E +// CHECK:STDOUT: inst780001C1: symbolic_constant78000180 +// CHECK:STDOUT: inst780001C2: symbolic_constant78000181 +// CHECK:STDOUT: inst780001C3: symbolic_constant78000181 +// CHECK:STDOUT: inst780001C4: symbolic_constant78000182 +// CHECK:STDOUT: inst780001C5: symbolic_constant78000183 +// CHECK:STDOUT: inst780001C6: symbolic_constant78000184 +// CHECK:STDOUT: inst780001C7: symbolic_constant78000184 +// CHECK:STDOUT: inst780001C8: symbolic_constant78000185 +// CHECK:STDOUT: inst780001C9: symbolic_constant7800018A +// CHECK:STDOUT: inst780001CA: symbolic_constant78000198 +// CHECK:STDOUT: inst780001CB: symbolic_constant7800019A +// CHECK:STDOUT: inst780001CC: symbolic_constant7800019B +// CHECK:STDOUT: inst780001CD: symbolic_constant7800019C +// CHECK:STDOUT: inst780001CE: symbolic_constant7800019D +// CHECK:STDOUT: inst780001CF: symbolic_constant7800019E +// CHECK:STDOUT: inst780001D0: symbolic_constant7800019F +// CHECK:STDOUT: inst780001D1: symbolic_constant780001A0 +// CHECK:STDOUT: inst780001D2: symbolic_constant780001A1 +// CHECK:STDOUT: inst780001D3: symbolic_constant780001A2 +// CHECK:STDOUT: inst780001D4: symbolic_constant780001A3 +// CHECK:STDOUT: inst780001D5: symbolic_constant780001A4 +// CHECK:STDOUT: inst780001D6: symbolic_constant780001A5 +// CHECK:STDOUT: inst780001D7: symbolic_constant780001A6 +// CHECK:STDOUT: inst780001D8: symbolic_constant780001A7 +// CHECK:STDOUT: inst780001D9: symbolic_constant780001A8 +// CHECK:STDOUT: inst780001DA: symbolic_constant780001A9 +// CHECK:STDOUT: inst780001DB: symbolic_constant780001AA +// CHECK:STDOUT: inst780001DC: symbolic_constant780001AB +// CHECK:STDOUT: inst780001DD: symbolic_constant780001AC +// CHECK:STDOUT: inst780001DE: symbolic_constant7800014E +// CHECK:STDOUT: inst780001DF: symbolic_constant78000155 +// CHECK:STDOUT: inst780001E0: symbolic_constant780001BB +// CHECK:STDOUT: inst780001E1: symbolic_constant780001BA +// CHECK:STDOUT: inst780001E2: symbolic_constant780001B9 +// CHECK:STDOUT: inst780001E3: symbolic_constant78000147 +// CHECK:STDOUT: inst780001E4: concrete_constant(inst7800005A) +// CHECK:STDOUT: inst780001E5: symbolic_constant78000146 +// CHECK:STDOUT: inst780001E6: symbolic_constant78000167 +// CHECK:STDOUT: inst780001E7: symbolic_constant78000166 +// CHECK:STDOUT: inst780001E8: symbolic_constant78000165 +// CHECK:STDOUT: inst780001E9: symbolic_constant780001BC +// CHECK:STDOUT: inst780001EA: symbolic_constant780001BD +// CHECK:STDOUT: inst780001EB: symbolic_constant780001BE +// CHECK:STDOUT: inst780001EC: symbolic_constant780001BF +// CHECK:STDOUT: inst780001ED: symbolic_constant780001C0 +// CHECK:STDOUT: inst780001EE: symbolic_constant780001C1 +// CHECK:STDOUT: inst780001EF: symbolic_constant780001C2 +// CHECK:STDOUT: inst780001F0: symbolic_constant780001C3 +// CHECK:STDOUT: inst780001F1: symbolic_constant780001C4 +// CHECK:STDOUT: inst780001F2: symbolic_constant780001C5 // CHECK:STDOUT: inst780001F3: symbolic_constant780001C6 -// CHECK:STDOUT: inst780001F5: symbolic_constant780001BF -// CHECK:STDOUT: inst780001F6: symbolic_constant780001C6 -// CHECK:STDOUT: inst780001F7: symbolic_constant780001C6 -// CHECK:STDOUT: inst780001F8: symbolic_constant780001CB -// CHECK:STDOUT: inst780001F9: symbolic_constant780001CA -// CHECK:STDOUT: inst780001FA: symbolic_constant780001CB -// CHECK:STDOUT: inst780001FF: concrete_constant(inst7800002E) -// CHECK:STDOUT: inst78000200: concrete_constant(inst7800002E) -// CHECK:STDOUT: inst78000201: concrete_constant(inst7800002E) +// CHECK:STDOUT: inst780001F4: symbolic_constant780001C7 +// CHECK:STDOUT: inst780001F5: symbolic_constant780001C8 +// CHECK:STDOUT: inst780001F6: symbolic_constant780001CA +// CHECK:STDOUT: inst780001F7: symbolic_constant780001CB +// CHECK:STDOUT: inst780001F8: symbolic_constant780001CC +// CHECK:STDOUT: inst780001F9: symbolic_constant780001CF +// CHECK:STDOUT: inst780001FA: symbolic_constant780001CE +// CHECK:STDOUT: inst780001FB: symbolic_constant780001CF +// CHECK:STDOUT: inst780001FC: symbolic_constant780001D0 +// CHECK:STDOUT: inst780001FD: symbolic_constant780001D1 +// CHECK:STDOUT: inst780001FE: symbolic_constant780001D2 +// CHECK:STDOUT: inst780001FF: symbolic_constant780001D3 +// CHECK:STDOUT: inst78000200: symbolic_constant780001D9 +// CHECK:STDOUT: inst78000201: symbolic_constant780001D4 +// CHECK:STDOUT: inst78000202: symbolic_constant780001D5 +// CHECK:STDOUT: inst78000203: symbolic_constant780001D6 +// CHECK:STDOUT: inst78000204: symbolic_constant780001D7 +// CHECK:STDOUT: inst78000205: symbolic_constant780001D8 +// CHECK:STDOUT: inst78000206: symbolic_constant780001D9 +// CHECK:STDOUT: inst78000209: symbolic_constant780001CF +// CHECK:STDOUT: inst7800020A: symbolic_constant780001D6 +// CHECK:STDOUT: inst7800020B: symbolic_constant780001D6 +// CHECK:STDOUT: inst7800020D: symbolic_constant780001CF +// CHECK:STDOUT: inst7800020E: symbolic_constant780001D6 +// CHECK:STDOUT: inst7800020F: symbolic_constant780001D6 +// CHECK:STDOUT: inst78000210: symbolic_constant780001DB +// CHECK:STDOUT: inst78000211: symbolic_constant780001DA +// CHECK:STDOUT: inst78000212: symbolic_constant780001DB +// CHECK:STDOUT: inst78000217: concrete_constant(inst7800002E) +// CHECK:STDOUT: inst78000218: concrete_constant(inst7800002E) +// CHECK:STDOUT: inst78000219: concrete_constant(inst7800002E) // CHECK:STDOUT: symbolic_constants: // CHECK:STDOUT: symbolic_constant78000000: {inst: inst78000014, kind: self, attached: null} // CHECK:STDOUT: symbolic_constant78000001: {inst: inst78000018, kind: checked, attached: null} @@ -1660,394 +1722,410 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: symbolic_constant78000045: {inst: inst7800008A, kind: checked, attached: null} // CHECK:STDOUT: symbolic_constant78000046: {inst: inst7800008B, kind: checked, attached: null} // CHECK:STDOUT: symbolic_constant78000047: {inst: inst7800008C, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000048: {inst: inst7800008C, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000049: {inst: inst7800008F, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800004A: {inst: inst7800008F, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant7800004B: {inst: inst78000091, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800004C: {inst: inst78000092, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800004D: {inst: inst78000092, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000048: {inst: inst7800008D, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000049: {inst: inst7800008D, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant7800004A: {inst: inst7800008C, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant7800004B: {inst: inst78000090, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800004C: {inst: inst78000090, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant7800004D: {inst: inst78000092, kind: checked, attached: null} // CHECK:STDOUT: symbolic_constant7800004E: {inst: inst78000093, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800004F: {inst: inst78000094, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000050: {inst: inst78000091, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000051: {inst: inst78000096, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000052: {inst: inst78000098, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000053: {inst: inst78000098, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant78000054: {inst: inst78000093, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000055: {inst: inst78000099, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000056: {inst: inst7800009B, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000057: {inst: inst7800009B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant78000058: {inst: inst78000098, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant78000059: {inst: inst78000094, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant7800005A: {inst: inst7800009D, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800005B: {inst: inst7800009D, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant7800005C: {inst: inst7800009B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant7800005D: {inst: inst78000099, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant7800005E: {inst: inst7800008C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant7800005F: {inst: inst7800008B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000060: {inst: inst7800008A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant78000061: {inst: inst7800008A, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000062: {inst: inst7800009D, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant78000063: {inst: inst7800008C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000064: {inst: inst78000094, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant78000065: {inst: inst78000099, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant78000066: {inst: inst7800008A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant78000067: {inst: inst7800008B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000068: {inst: inst7800008C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000069: {inst: inst78000093, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant7800006A: {inst: inst78000099, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant7800006B: {inst: inst7800009B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant7800006C: {inst: inst7800009D, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant7800006D: {inst: inst78000094, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant7800006E: {inst: inst78000098, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant7800006F: {inst: inst780000B0, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000070: {inst: inst780000B1, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000071: {inst: inst780000B2, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000072: {inst: inst780000B3, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000073: {inst: inst780000B4, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000074: {inst: inst780000B5, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000075: {inst: inst780000B5, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant7800004F: {inst: inst78000093, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000050: {inst: inst78000094, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000051: {inst: inst78000095, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000052: {inst: inst78000092, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant78000053: {inst: inst78000097, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000054: {inst: inst78000099, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000055: {inst: inst78000099, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant78000056: {inst: inst78000094, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000057: {inst: inst7800009A, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000058: {inst: inst7800009C, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000059: {inst: inst7800009C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant7800005A: {inst: inst78000099, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant7800005B: {inst: inst78000095, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant7800005C: {inst: inst7800009E, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800005D: {inst: inst7800009E, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant7800005E: {inst: inst7800009C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant7800005F: {inst: inst7800009A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant78000060: {inst: inst7800008C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000061: {inst: inst7800008B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000062: {inst: inst7800008A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000063: {inst: inst7800008A, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000064: {inst: inst7800009E, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant78000065: {inst: inst7800008C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000066: {inst: inst78000095, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant78000067: {inst: inst7800009A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant78000068: {inst: inst7800008A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000069: {inst: inst7800008B, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant7800006A: {inst: inst7800008C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant7800006B: {inst: inst78000094, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant7800006C: {inst: inst7800009A, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant7800006D: {inst: inst7800009C, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant7800006E: {inst: inst7800009E, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant7800006F: {inst: inst78000095, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant78000070: {inst: inst78000099, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant78000071: {inst: inst780000B1, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000072: {inst: inst780000B2, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000073: {inst: inst780000B3, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000074: {inst: inst780000B4, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000075: {inst: inst780000B5, kind: checked, attached: null} // CHECK:STDOUT: symbolic_constant78000076: {inst: inst780000B6, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000077: {inst: inst780000B7, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000078: {inst: inst780000B9, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000079: {inst: inst780000BA, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800007A: {inst: inst780000BB, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800007B: {inst: inst780000BD, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800007C: {inst: inst780000B4, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant7800007D: {inst: inst780000B0, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant7800007E: {inst: inst780000B3, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant7800007F: {inst: inst780000B1, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant78000080: {inst: inst780000BE, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000081: {inst: inst780000BE, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000077: {inst: inst780000B6, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant78000078: {inst: inst780000B7, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000079: {inst: inst780000B8, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800007A: {inst: inst780000BA, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800007B: {inst: inst780000BB, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800007C: {inst: inst780000BC, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800007D: {inst: inst780000BE, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800007E: {inst: inst780000B5, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant7800007F: {inst: inst780000B1, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant78000080: {inst: inst780000B4, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant78000081: {inst: inst780000B2, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def2}} // CHECK:STDOUT: symbolic_constant78000082: {inst: inst780000BF, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000083: {inst: inst780000BF, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000084: {inst: inst780000BF, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000085: {inst: inst780000BE, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000086: {inst: inst780000B1, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant78000087: {inst: inst780000B3, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant78000088: {inst: inst780000B0, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant78000089: {inst: inst780000B4, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant7800008A: {inst: inst780000B5, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def6}} -// CHECK:STDOUT: symbolic_constant7800008B: {inst: inst7800008C, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant7800008C: {inst: inst7800008B, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant7800008D: {inst: inst7800008A, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant7800008E: {inst: inst78000096, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant7800008F: {inst: inst78000096, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant78000090: {inst: inst78000096, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant78000091: {inst: inst7800008A, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000092: {inst: inst7800008B, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000093: {inst: inst7800008C, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000094: {inst: inst7800008F, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant78000095: {inst: inst78000092, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000096: {inst: inst78000091, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000097: {inst: inst78000092, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000098: {inst: inst7800001F, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000099: {inst: inst780000E8, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800009A: {inst: inst780000E8, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant7800009B: {inst: inst7800001F, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant7800009C: {inst: inst7800001B, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant7800009D: {inst: inst78000018, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant7800009E: {inst: inst7800001B, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant7800009F: {inst: inst78000018, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780000A0: {inst: inst78000018, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780000A1: {inst: inst7800001B, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000083: {inst: inst780000BF, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000084: {inst: inst780000C0, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000085: {inst: inst780000C0, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant78000086: {inst: inst780000C0, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant78000087: {inst: inst780000BF, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000088: {inst: inst780000B2, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant78000089: {inst: inst780000B4, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant7800008A: {inst: inst780000B1, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant7800008B: {inst: inst780000B5, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant7800008C: {inst: inst780000B6, kind: checked, attached: {generic: generic78000004, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant7800008D: {inst: inst7800008D, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant7800008E: {inst: inst7800008C, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant7800008F: {inst: inst7800008B, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000090: {inst: inst7800008A, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000091: {inst: inst78000097, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000092: {inst: inst78000097, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000093: {inst: inst78000097, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000094: {inst: inst7800008A, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000095: {inst: inst7800008B, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000096: {inst: inst7800008C, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000097: {inst: inst7800008D, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant78000098: {inst: inst78000090, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant78000099: {inst: inst78000093, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant7800009A: {inst: inst78000092, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant7800009B: {inst: inst78000093, kind: checked, attached: {generic: generic78000003, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant7800009C: {inst: inst780000F1, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800009D: {inst: inst780000F1, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant7800009E: {inst: inst7800001F, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant7800009F: {inst: inst780000F4, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000A0: {inst: inst780000F4, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000A1: {inst: inst780000F1, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl3}} // CHECK:STDOUT: symbolic_constant780000A2: {inst: inst7800001F, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780000A3: {inst: inst780000E8, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000A4: {inst: inst7800004C, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant780000A5: {inst: inst780000F2, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000A6: {inst: inst780000F3, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000A7: {inst: inst780000F3, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant780000A8: {inst: inst780000F4, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000A9: {inst: inst780000F2, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant780000AA: {inst: inst780000F6, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000AB: {inst: inst780000F6, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000AC: {inst: inst78000021, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780000AD: {inst: inst780000F7, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000AE: {inst: inst780000F9, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000AF: {inst: inst780000F9, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780000B0: {inst: inst780000F6, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000B1: {inst: inst780000F4, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780000B2: {inst: inst780000FB, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000B3: {inst: inst780000FB, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780000B4: {inst: inst780000F9, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780000B5: {inst: inst780000F7, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000B6: {inst: inst7800001F, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780000B7: {inst: inst7800001B, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780000B8: {inst: inst780000FB, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780000B9: {inst: inst7800001F, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780000BA: {inst: inst780000F4, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780000BB: {inst: inst780000F7, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000BC: {inst: inst7800001B, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780000BD: {inst: inst7800001F, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780000BE: {inst: inst78000021, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780000BF: {inst: inst780000F7, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000C0: {inst: inst780000F9, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780000C1: {inst: inst780000FB, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780000C2: {inst: inst780000F4, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780000C3: {inst: inst780000F6, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000C4: {inst: inst780000F3, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant780000C5: {inst: inst780000F2, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant780000C6: {inst: inst780000F3, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant780000C7: {inst: inst7800004C, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant780000C8: {inst: inst7800011C, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000C9: {inst: inst7800011D, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000CA: {inst: inst7800011E, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000CB: {inst: inst7800011E, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000CC: {inst: inst78000121, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000CD: {inst: inst78000121, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant780000CE: {inst: inst78000123, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000CF: {inst: inst78000124, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000D0: {inst: inst78000124, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant780000D1: {inst: inst78000125, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000D2: {inst: inst78000126, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000D3: {inst: inst78000123, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant780000D4: {inst: inst78000128, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000D5: {inst: inst78000129, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000D6: {inst: inst7800012B, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000D7: {inst: inst7800012B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant780000D8: {inst: inst78000125, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780000D9: {inst: inst7800012C, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000DA: {inst: inst7800012E, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000DB: {inst: inst7800012E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000DC: {inst: inst7800012B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant780000DD: {inst: inst78000126, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant780000DE: {inst: inst78000130, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000DF: {inst: inst78000130, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant780000E0: {inst: inst7800012E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000E1: {inst: inst7800012C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780000E2: {inst: inst7800011E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780000E3: {inst: inst7800011D, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000E4: {inst: inst7800011C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780000E5: {inst: inst7800008B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780000E6: {inst: inst7800008A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780000E7: {inst: inst7800011C, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000E8: {inst: inst7800008A, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780000E9: {inst: inst78000130, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant780000EA: {inst: inst7800011E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780000EB: {inst: inst78000126, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant780000EC: {inst: inst7800012C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780000ED: {inst: inst7800008A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780000EE: {inst: inst7800008B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780000EF: {inst: inst7800011C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780000F0: {inst: inst7800011D, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780000F1: {inst: inst7800011E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780000F2: {inst: inst78000125, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780000F3: {inst: inst7800012C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780000F4: {inst: inst7800012E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780000F5: {inst: inst78000130, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant780000F6: {inst: inst78000126, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant780000F7: {inst: inst7800012B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant780000F8: {inst: inst78000146, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000F9: {inst: inst78000147, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000FA: {inst: inst78000148, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000FB: {inst: inst78000149, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000FC: {inst: inst7800014A, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000FD: {inst: inst7800014B, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780000FE: {inst: inst7800014B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def12}} -// CHECK:STDOUT: symbolic_constant780000FF: {inst: inst7800014C, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000100: {inst: inst7800014D, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000101: {inst: inst7800014F, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000102: {inst: inst78000150, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000103: {inst: inst78000151, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000104: {inst: inst78000153, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000105: {inst: inst7800014A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def11}} -// CHECK:STDOUT: symbolic_constant78000106: {inst: inst78000146, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def10}} -// CHECK:STDOUT: symbolic_constant78000107: {inst: inst78000149, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def9}} -// CHECK:STDOUT: symbolic_constant78000108: {inst: inst78000147, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def8}} -// CHECK:STDOUT: symbolic_constant78000109: {inst: inst78000154, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800010A: {inst: inst78000154, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def7}} -// CHECK:STDOUT: symbolic_constant7800010B: {inst: inst780000B5, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def6}} -// CHECK:STDOUT: symbolic_constant7800010C: {inst: inst780000B4, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant7800010D: {inst: inst780000B0, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant7800010E: {inst: inst780000B3, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant7800010F: {inst: inst780000B1, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant78000110: {inst: inst780000BE, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000111: {inst: inst78000155, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000112: {inst: inst78000155, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000113: {inst: inst78000155, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000114: {inst: inst780000BE, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000115: {inst: inst780000B1, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant78000116: {inst: inst780000B3, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant78000117: {inst: inst780000B0, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant78000118: {inst: inst780000B4, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant78000119: {inst: inst780000B5, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def6}} -// CHECK:STDOUT: symbolic_constant7800011A: {inst: inst78000154, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def7}} -// CHECK:STDOUT: symbolic_constant7800011B: {inst: inst78000147, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def8}} -// CHECK:STDOUT: symbolic_constant7800011C: {inst: inst78000149, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def9}} -// CHECK:STDOUT: symbolic_constant7800011D: {inst: inst78000146, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def10}} -// CHECK:STDOUT: symbolic_constant7800011E: {inst: inst7800014A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def11}} -// CHECK:STDOUT: symbolic_constant7800011F: {inst: inst7800014B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def12}} -// CHECK:STDOUT: symbolic_constant78000120: {inst: inst7800011E, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant78000121: {inst: inst7800011D, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant78000122: {inst: inst7800008B, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant78000123: {inst: inst78000128, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant78000124: {inst: inst7800011C, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000125: {inst: inst78000129, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000126: {inst: inst7800008A, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000127: {inst: inst78000096, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant78000128: {inst: inst78000129, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000129: {inst: inst78000096, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant7800012A: {inst: inst78000096, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant7800012B: {inst: inst7800008A, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant7800012C: {inst: inst78000129, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant7800012D: {inst: inst7800011C, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant7800012E: {inst: inst78000128, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant7800012F: {inst: inst7800008B, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant78000130: {inst: inst7800011D, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant78000131: {inst: inst7800011E, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant78000132: {inst: inst78000121, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant78000133: {inst: inst78000124, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000134: {inst: inst78000123, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000135: {inst: inst78000124, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant78000136: {inst: inst78000178, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000137: {inst: inst78000179, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000138: {inst: inst7800017A, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000139: {inst: inst7800017A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant7800013A: {inst: inst7800017D, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800013B: {inst: inst7800017D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl11}} -// CHECK:STDOUT: symbolic_constant7800013C: {inst: inst7800017F, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800013D: {inst: inst78000180, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800013E: {inst: inst78000180, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant7800013F: {inst: inst78000181, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000140: {inst: inst78000182, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000141: {inst: inst7800017F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant78000142: {inst: inst78000184, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000143: {inst: inst78000185, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000144: {inst: inst78000187, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000145: {inst: inst78000187, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl12}} -// CHECK:STDOUT: symbolic_constant78000146: {inst: inst78000181, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant78000147: {inst: inst78000188, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000148: {inst: inst7800018A, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000149: {inst: inst7800018A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant7800014A: {inst: inst78000187, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl12}} -// CHECK:STDOUT: symbolic_constant7800014B: {inst: inst78000182, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl11}} -// CHECK:STDOUT: symbolic_constant7800014C: {inst: inst7800018C, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800014D: {inst: inst7800018C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant7800014E: {inst: inst7800018A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant7800014F: {inst: inst78000188, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant78000150: {inst: inst7800017A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant78000151: {inst: inst78000179, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant78000152: {inst: inst78000178, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant78000153: {inst: inst7800011D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000154: {inst: inst7800011C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000155: {inst: inst7800008B, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000156: {inst: inst7800008A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant78000157: {inst: inst78000178, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant78000158: {inst: inst7800011C, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000159: {inst: inst7800008A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant7800015A: {inst: inst7800018C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant7800015B: {inst: inst7800017A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant7800015C: {inst: inst78000182, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl11}} -// CHECK:STDOUT: symbolic_constant7800015D: {inst: inst78000188, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant7800015E: {inst: inst7800008A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant7800015F: {inst: inst7800008B, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant78000160: {inst: inst7800011C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant78000161: {inst: inst7800011D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant78000162: {inst: inst78000178, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant78000163: {inst: inst78000179, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant78000164: {inst: inst7800017A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant78000165: {inst: inst78000181, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant78000166: {inst: inst78000188, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant78000167: {inst: inst7800018A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant78000168: {inst: inst7800018C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant78000169: {inst: inst78000182, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl11}} -// CHECK:STDOUT: symbolic_constant7800016A: {inst: inst78000187, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl12}} -// CHECK:STDOUT: symbolic_constant7800016B: {inst: inst780001A5, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800016C: {inst: inst780001A6, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800016D: {inst: inst780001A7, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800016E: {inst: inst780001A8, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800016F: {inst: inst780001A9, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000170: {inst: inst780001AA, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000171: {inst: inst780001AA, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def18}} -// CHECK:STDOUT: symbolic_constant78000172: {inst: inst780001AB, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000173: {inst: inst780001AC, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000174: {inst: inst780001AE, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000175: {inst: inst780001AF, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000176: {inst: inst780001B0, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000177: {inst: inst780001B2, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant78000178: {inst: inst780001A9, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def17}} -// CHECK:STDOUT: symbolic_constant78000179: {inst: inst780001A5, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def16}} -// CHECK:STDOUT: symbolic_constant7800017A: {inst: inst780001A8, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def15}} -// CHECK:STDOUT: symbolic_constant7800017B: {inst: inst780001A6, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def14}} -// CHECK:STDOUT: symbolic_constant7800017C: {inst: inst780001B3, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800017D: {inst: inst780001B3, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def13}} -// CHECK:STDOUT: symbolic_constant7800017E: {inst: inst7800014B, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def12}} -// CHECK:STDOUT: symbolic_constant7800017F: {inst: inst7800014A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def11}} -// CHECK:STDOUT: symbolic_constant78000180: {inst: inst78000146, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def10}} -// CHECK:STDOUT: symbolic_constant78000181: {inst: inst78000149, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def9}} -// CHECK:STDOUT: symbolic_constant78000182: {inst: inst78000147, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def8}} -// CHECK:STDOUT: symbolic_constant78000183: {inst: inst78000154, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def7}} -// CHECK:STDOUT: symbolic_constant78000184: {inst: inst780000B5, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def6}} -// CHECK:STDOUT: symbolic_constant78000185: {inst: inst780000B4, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant78000186: {inst: inst780000B0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant78000187: {inst: inst780000B3, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant78000188: {inst: inst780000B1, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant78000189: {inst: inst780000BE, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant7800018A: {inst: inst780001B4, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant7800018B: {inst: inst780001B4, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant7800018C: {inst: inst780001B4, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant7800018D: {inst: inst780000BE, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant7800018E: {inst: inst780000B1, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant7800018F: {inst: inst780000B3, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant78000190: {inst: inst780000B0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant78000191: {inst: inst780000B4, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant78000192: {inst: inst780000B5, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def6}} -// CHECK:STDOUT: symbolic_constant78000193: {inst: inst78000154, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def7}} -// CHECK:STDOUT: symbolic_constant78000194: {inst: inst78000147, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def8}} -// CHECK:STDOUT: symbolic_constant78000195: {inst: inst78000149, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def9}} -// CHECK:STDOUT: symbolic_constant78000196: {inst: inst78000146, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def10}} -// CHECK:STDOUT: symbolic_constant78000197: {inst: inst7800014A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def11}} -// CHECK:STDOUT: symbolic_constant78000198: {inst: inst7800014B, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def12}} -// CHECK:STDOUT: symbolic_constant78000199: {inst: inst780001B3, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def13}} -// CHECK:STDOUT: symbolic_constant7800019A: {inst: inst780001A6, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def14}} -// CHECK:STDOUT: symbolic_constant7800019B: {inst: inst780001A8, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def15}} -// CHECK:STDOUT: symbolic_constant7800019C: {inst: inst780001A5, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def16}} -// CHECK:STDOUT: symbolic_constant7800019D: {inst: inst780001A9, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def17}} -// CHECK:STDOUT: symbolic_constant7800019E: {inst: inst780001AA, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def18}} -// CHECK:STDOUT: symbolic_constant7800019F: {inst: inst7800017A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant780001A0: {inst: inst78000179, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant780001A1: {inst: inst7800011D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant780001A2: {inst: inst7800008B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780001A3: {inst: inst78000184, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780001A4: {inst: inst78000178, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780001A5: {inst: inst78000185, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780001A6: {inst: inst7800011C, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780001A7: {inst: inst78000129, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780001A8: {inst: inst7800008A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780001A9: {inst: inst78000096, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780001AA: {inst: inst78000185, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780001AB: {inst: inst78000129, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780001AC: {inst: inst78000096, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780001AD: {inst: inst78000096, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl0}} -// CHECK:STDOUT: symbolic_constant780001AE: {inst: inst7800008A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl1}} -// CHECK:STDOUT: symbolic_constant780001AF: {inst: inst78000129, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl2}} -// CHECK:STDOUT: symbolic_constant780001B0: {inst: inst7800011C, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780001B1: {inst: inst78000185, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl4}} -// CHECK:STDOUT: symbolic_constant780001B2: {inst: inst78000178, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl5}} -// CHECK:STDOUT: symbolic_constant780001B3: {inst: inst78000184, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl6}} -// CHECK:STDOUT: symbolic_constant780001B4: {inst: inst7800008B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl7}} -// CHECK:STDOUT: symbolic_constant780001B5: {inst: inst7800011D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl8}} -// CHECK:STDOUT: symbolic_constant780001B6: {inst: inst78000179, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl9}} -// CHECK:STDOUT: symbolic_constant780001B7: {inst: inst7800017A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl10}} -// CHECK:STDOUT: symbolic_constant780001B8: {inst: inst7800017D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl11}} -// CHECK:STDOUT: symbolic_constant780001B9: {inst: inst78000180, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant780001BA: {inst: inst7800017F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def0}} -// CHECK:STDOUT: symbolic_constant780001BB: {inst: inst78000180, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def1}} -// CHECK:STDOUT: symbolic_constant780001BC: {inst: inst780001E0, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001BD: {inst: inst780000E8, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl3}} -// CHECK:STDOUT: symbolic_constant780001BE: {inst: inst780001E2, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001BF: {inst: inst780001E2, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def2}} -// CHECK:STDOUT: symbolic_constant780001C0: {inst: inst780001E4, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001C1: {inst: inst780001E5, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001C2: {inst: inst780001E6, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001C3: {inst: inst780001E7, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001C4: {inst: inst780001E9, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001C5: {inst: inst780001E0, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def3}} -// CHECK:STDOUT: symbolic_constant780001C6: {inst: inst780001E4, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def4}} -// CHECK:STDOUT: symbolic_constant780001C7: {inst: inst780001E5, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def5}} -// CHECK:STDOUT: symbolic_constant780001C8: {inst: inst780001E7, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def6}} -// CHECK:STDOUT: symbolic_constant780001C9: {inst: inst780001E9, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def7}} -// CHECK:STDOUT: symbolic_constant780001CA: {inst: inst780001F9, kind: checked, attached: null} -// CHECK:STDOUT: symbolic_constant780001CB: {inst: inst780001F9, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def8}} +// CHECK:STDOUT: symbolic_constant780000A3: {inst: inst7800001B, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000A4: {inst: inst78000018, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000A5: {inst: inst7800001B, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000A6: {inst: inst78000018, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000A7: {inst: inst78000018, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000A8: {inst: inst7800001B, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000A9: {inst: inst7800001F, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780000AA: {inst: inst780000F1, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000AB: {inst: inst780000F4, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000AC: {inst: inst7800004C, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant780000AD: {inst: inst78000100, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000AE: {inst: inst78000101, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000AF: {inst: inst78000101, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant780000B0: {inst: inst78000102, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000B1: {inst: inst78000100, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant780000B2: {inst: inst78000104, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000B3: {inst: inst78000104, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000B4: {inst: inst78000021, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780000B5: {inst: inst78000105, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000B6: {inst: inst78000107, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000B7: {inst: inst78000107, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000B8: {inst: inst78000104, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000B9: {inst: inst78000102, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780000BA: {inst: inst78000109, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000BB: {inst: inst78000109, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780000BC: {inst: inst78000107, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000BD: {inst: inst78000105, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000BE: {inst: inst7800001F, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000BF: {inst: inst7800001B, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000C0: {inst: inst78000109, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780000C1: {inst: inst7800001F, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000C2: {inst: inst78000102, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780000C3: {inst: inst78000105, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000C4: {inst: inst7800001B, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000C5: {inst: inst7800001F, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000C6: {inst: inst78000021, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780000C7: {inst: inst78000105, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000C8: {inst: inst78000107, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000C9: {inst: inst78000109, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780000CA: {inst: inst78000102, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780000CB: {inst: inst78000104, kind: checked, attached: {generic: generic78000006, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000CC: {inst: inst78000101, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant780000CD: {inst: inst78000100, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant780000CE: {inst: inst78000101, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant780000CF: {inst: inst7800004C, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant780000D0: {inst: inst7800012E, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000D1: {inst: inst7800012F, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000D2: {inst: inst78000130, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000D3: {inst: inst78000131, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000D4: {inst: inst78000131, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant780000D5: {inst: inst78000130, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000D6: {inst: inst78000134, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000D7: {inst: inst78000134, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant780000D8: {inst: inst78000136, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000D9: {inst: inst78000137, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000DA: {inst: inst78000137, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant780000DB: {inst: inst78000138, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000DC: {inst: inst78000139, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000DD: {inst: inst78000136, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant780000DE: {inst: inst7800013B, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000DF: {inst: inst7800013C, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000E0: {inst: inst7800013E, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000E1: {inst: inst7800013E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant780000E2: {inst: inst78000138, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780000E3: {inst: inst7800013F, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000E4: {inst: inst78000141, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000E5: {inst: inst78000141, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000E6: {inst: inst7800013E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant780000E7: {inst: inst78000139, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant780000E8: {inst: inst78000143, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780000E9: {inst: inst78000143, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant780000EA: {inst: inst78000141, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000EB: {inst: inst7800013F, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780000EC: {inst: inst78000130, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000ED: {inst: inst7800012F, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000EE: {inst: inst7800012E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780000EF: {inst: inst7800008B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000F0: {inst: inst7800008A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000F1: {inst: inst7800012E, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000F2: {inst: inst7800008A, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000F3: {inst: inst78000143, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant780000F4: {inst: inst78000130, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000F5: {inst: inst78000139, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant780000F6: {inst: inst7800013F, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780000F7: {inst: inst7800008A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780000F8: {inst: inst7800008B, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780000F9: {inst: inst7800012E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780000FA: {inst: inst7800012F, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780000FB: {inst: inst78000130, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780000FC: {inst: inst78000138, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780000FD: {inst: inst7800013F, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780000FE: {inst: inst78000141, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780000FF: {inst: inst78000143, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant78000100: {inst: inst78000139, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant78000101: {inst: inst7800013E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant78000102: {inst: inst78000159, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000103: {inst: inst7800015A, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000104: {inst: inst7800015B, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000105: {inst: inst7800015C, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000106: {inst: inst7800015D, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000107: {inst: inst7800015E, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000108: {inst: inst7800015E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def12}} +// CHECK:STDOUT: symbolic_constant78000109: {inst: inst7800015F, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800010A: {inst: inst78000160, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800010B: {inst: inst78000162, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800010C: {inst: inst78000163, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800010D: {inst: inst78000164, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800010E: {inst: inst78000166, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800010F: {inst: inst7800015D, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def11}} +// CHECK:STDOUT: symbolic_constant78000110: {inst: inst78000159, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def10}} +// CHECK:STDOUT: symbolic_constant78000111: {inst: inst7800015C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def9}} +// CHECK:STDOUT: symbolic_constant78000112: {inst: inst7800015A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def8}} +// CHECK:STDOUT: symbolic_constant78000113: {inst: inst78000167, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000114: {inst: inst78000167, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def7}} +// CHECK:STDOUT: symbolic_constant78000115: {inst: inst780000B6, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant78000116: {inst: inst780000B5, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant78000117: {inst: inst780000B1, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant78000118: {inst: inst780000B4, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant78000119: {inst: inst780000B2, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant7800011A: {inst: inst780000BF, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant7800011B: {inst: inst78000168, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800011C: {inst: inst78000168, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant7800011D: {inst: inst78000168, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant7800011E: {inst: inst780000BF, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant7800011F: {inst: inst780000B2, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant78000120: {inst: inst780000B4, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant78000121: {inst: inst780000B1, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant78000122: {inst: inst780000B5, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant78000123: {inst: inst780000B6, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant78000124: {inst: inst78000167, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def7}} +// CHECK:STDOUT: symbolic_constant78000125: {inst: inst7800015A, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def8}} +// CHECK:STDOUT: symbolic_constant78000126: {inst: inst7800015C, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def9}} +// CHECK:STDOUT: symbolic_constant78000127: {inst: inst78000159, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def10}} +// CHECK:STDOUT: symbolic_constant78000128: {inst: inst7800015D, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def11}} +// CHECK:STDOUT: symbolic_constant78000129: {inst: inst7800015E, kind: checked, attached: {generic: generic78000008, index: generic_inst_in_def12}} +// CHECK:STDOUT: symbolic_constant7800012A: {inst: inst78000131, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant7800012B: {inst: inst78000130, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant7800012C: {inst: inst7800012F, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant7800012D: {inst: inst7800008B, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant7800012E: {inst: inst7800013B, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant7800012F: {inst: inst7800012E, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000130: {inst: inst7800013C, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000131: {inst: inst7800008A, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000132: {inst: inst78000097, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000133: {inst: inst7800013C, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000134: {inst: inst78000097, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000135: {inst: inst78000097, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000136: {inst: inst7800008A, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000137: {inst: inst7800013C, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000138: {inst: inst7800012E, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000139: {inst: inst7800013B, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant7800013A: {inst: inst7800008B, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant7800013B: {inst: inst7800012F, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant7800013C: {inst: inst78000130, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant7800013D: {inst: inst78000131, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant7800013E: {inst: inst78000134, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant7800013F: {inst: inst78000137, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000140: {inst: inst78000136, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant78000141: {inst: inst78000137, kind: checked, attached: {generic: generic78000007, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000142: {inst: inst7800018D, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000143: {inst: inst7800018E, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000144: {inst: inst7800018F, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000145: {inst: inst78000190, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000146: {inst: inst78000190, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl11}} +// CHECK:STDOUT: symbolic_constant78000147: {inst: inst7800018F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant78000148: {inst: inst78000193, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000149: {inst: inst78000193, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl12}} +// CHECK:STDOUT: symbolic_constant7800014A: {inst: inst78000195, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800014B: {inst: inst78000196, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800014C: {inst: inst78000196, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant7800014D: {inst: inst78000197, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800014E: {inst: inst78000198, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800014F: {inst: inst78000195, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant78000150: {inst: inst7800019A, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000151: {inst: inst7800019B, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000152: {inst: inst7800019D, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000153: {inst: inst7800019D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl12}} +// CHECK:STDOUT: symbolic_constant78000154: {inst: inst78000197, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant78000155: {inst: inst7800019E, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000156: {inst: inst780001A0, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000157: {inst: inst780001A0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant78000158: {inst: inst7800019D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl12}} +// CHECK:STDOUT: symbolic_constant78000159: {inst: inst78000198, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl11}} +// CHECK:STDOUT: symbolic_constant7800015A: {inst: inst780001A2, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800015B: {inst: inst780001A2, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant7800015C: {inst: inst780001A0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant7800015D: {inst: inst7800019E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant7800015E: {inst: inst7800018F, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant7800015F: {inst: inst7800018E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant78000160: {inst: inst7800018D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant78000161: {inst: inst7800012F, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000162: {inst: inst7800012E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant78000163: {inst: inst7800008B, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000164: {inst: inst7800008A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant78000165: {inst: inst7800018D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant78000166: {inst: inst7800012E, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000167: {inst: inst7800008A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant78000168: {inst: inst780001A2, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant78000169: {inst: inst7800018F, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant7800016A: {inst: inst78000198, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl11}} +// CHECK:STDOUT: symbolic_constant7800016B: {inst: inst7800019E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant7800016C: {inst: inst7800008A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant7800016D: {inst: inst7800008B, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant7800016E: {inst: inst7800012E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant7800016F: {inst: inst7800012F, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant78000170: {inst: inst7800018D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant78000171: {inst: inst7800018E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant78000172: {inst: inst7800018F, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant78000173: {inst: inst78000197, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant78000174: {inst: inst7800019E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant78000175: {inst: inst780001A0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant78000176: {inst: inst780001A2, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant78000177: {inst: inst78000198, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl11}} +// CHECK:STDOUT: symbolic_constant78000178: {inst: inst7800019D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_decl12}} +// CHECK:STDOUT: symbolic_constant78000179: {inst: inst780001BB, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800017A: {inst: inst780001BC, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800017B: {inst: inst780001BD, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800017C: {inst: inst780001BE, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800017D: {inst: inst780001BF, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800017E: {inst: inst780001C0, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800017F: {inst: inst780001C0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def18}} +// CHECK:STDOUT: symbolic_constant78000180: {inst: inst780001C1, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000181: {inst: inst780001C2, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000182: {inst: inst780001C4, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000183: {inst: inst780001C5, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000184: {inst: inst780001C6, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000185: {inst: inst780001C8, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000186: {inst: inst780001BF, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def17}} +// CHECK:STDOUT: symbolic_constant78000187: {inst: inst780001BB, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def16}} +// CHECK:STDOUT: symbolic_constant78000188: {inst: inst780001BE, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def15}} +// CHECK:STDOUT: symbolic_constant78000189: {inst: inst780001BC, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def14}} +// CHECK:STDOUT: symbolic_constant7800018A: {inst: inst780001C9, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant7800018B: {inst: inst780001C9, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def13}} +// CHECK:STDOUT: symbolic_constant7800018C: {inst: inst7800015E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def12}} +// CHECK:STDOUT: symbolic_constant7800018D: {inst: inst7800015D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def11}} +// CHECK:STDOUT: symbolic_constant7800018E: {inst: inst78000159, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def10}} +// CHECK:STDOUT: symbolic_constant7800018F: {inst: inst7800015C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def9}} +// CHECK:STDOUT: symbolic_constant78000190: {inst: inst7800015A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def8}} +// CHECK:STDOUT: symbolic_constant78000191: {inst: inst78000167, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def7}} +// CHECK:STDOUT: symbolic_constant78000192: {inst: inst780000B6, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant78000193: {inst: inst780000B5, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant78000194: {inst: inst780000B1, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant78000195: {inst: inst780000B4, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant78000196: {inst: inst780000B2, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant78000197: {inst: inst780000BF, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant78000198: {inst: inst780001CA, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant78000199: {inst: inst780001CA, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant7800019A: {inst: inst780001CA, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant7800019B: {inst: inst780000BF, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant7800019C: {inst: inst780000B2, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant7800019D: {inst: inst780000B4, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant7800019E: {inst: inst780000B1, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant7800019F: {inst: inst780000B5, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant780001A0: {inst: inst780000B6, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant780001A1: {inst: inst78000167, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def7}} +// CHECK:STDOUT: symbolic_constant780001A2: {inst: inst7800015A, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def8}} +// CHECK:STDOUT: symbolic_constant780001A3: {inst: inst7800015C, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def9}} +// CHECK:STDOUT: symbolic_constant780001A4: {inst: inst78000159, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def10}} +// CHECK:STDOUT: symbolic_constant780001A5: {inst: inst7800015D, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def11}} +// CHECK:STDOUT: symbolic_constant780001A6: {inst: inst7800015E, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def12}} +// CHECK:STDOUT: symbolic_constant780001A7: {inst: inst780001C9, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def13}} +// CHECK:STDOUT: symbolic_constant780001A8: {inst: inst780001BC, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def14}} +// CHECK:STDOUT: symbolic_constant780001A9: {inst: inst780001BE, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def15}} +// CHECK:STDOUT: symbolic_constant780001AA: {inst: inst780001BB, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def16}} +// CHECK:STDOUT: symbolic_constant780001AB: {inst: inst780001BF, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def17}} +// CHECK:STDOUT: symbolic_constant780001AC: {inst: inst780001C0, kind: checked, attached: {generic: generic7800000A, index: generic_inst_in_def18}} +// CHECK:STDOUT: symbolic_constant780001AD: {inst: inst78000190, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl11}} +// CHECK:STDOUT: symbolic_constant780001AE: {inst: inst7800018F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant780001AF: {inst: inst7800018E, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant780001B0: {inst: inst7800012F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant780001B1: {inst: inst7800008B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780001B2: {inst: inst7800019A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780001B3: {inst: inst7800018D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780001B4: {inst: inst7800019B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780001B5: {inst: inst7800012E, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780001B6: {inst: inst7800013C, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780001B7: {inst: inst7800008A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780001B8: {inst: inst78000097, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780001B9: {inst: inst7800019B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780001BA: {inst: inst7800013C, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780001BB: {inst: inst78000097, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780001BC: {inst: inst78000097, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl0}} +// CHECK:STDOUT: symbolic_constant780001BD: {inst: inst7800008A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl1}} +// CHECK:STDOUT: symbolic_constant780001BE: {inst: inst7800013C, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl2}} +// CHECK:STDOUT: symbolic_constant780001BF: {inst: inst7800012E, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl3}} +// CHECK:STDOUT: symbolic_constant780001C0: {inst: inst7800019B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780001C1: {inst: inst7800018D, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl5}} +// CHECK:STDOUT: symbolic_constant780001C2: {inst: inst7800019A, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl6}} +// CHECK:STDOUT: symbolic_constant780001C3: {inst: inst7800008B, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl7}} +// CHECK:STDOUT: symbolic_constant780001C4: {inst: inst7800012F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl8}} +// CHECK:STDOUT: symbolic_constant780001C5: {inst: inst7800018E, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl9}} +// CHECK:STDOUT: symbolic_constant780001C6: {inst: inst7800018F, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl10}} +// CHECK:STDOUT: symbolic_constant780001C7: {inst: inst78000190, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl11}} +// CHECK:STDOUT: symbolic_constant780001C8: {inst: inst78000193, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_decl12}} +// CHECK:STDOUT: symbolic_constant780001C9: {inst: inst78000196, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant780001CA: {inst: inst78000195, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def0}} +// CHECK:STDOUT: symbolic_constant780001CB: {inst: inst78000196, kind: checked, attached: {generic: generic78000009, index: generic_inst_in_def1}} +// CHECK:STDOUT: symbolic_constant780001CC: {inst: inst780001F8, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001CD: {inst: inst780000F4, kind: checked, attached: {generic: generic78000005, index: generic_inst_in_decl4}} +// CHECK:STDOUT: symbolic_constant780001CE: {inst: inst780001FA, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001CF: {inst: inst780001FA, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def2}} +// CHECK:STDOUT: symbolic_constant780001D0: {inst: inst780001FC, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001D1: {inst: inst780001FD, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001D2: {inst: inst780001FE, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001D3: {inst: inst780001FF, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001D4: {inst: inst78000201, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001D5: {inst: inst780001F8, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def3}} +// CHECK:STDOUT: symbolic_constant780001D6: {inst: inst780001FC, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def4}} +// CHECK:STDOUT: symbolic_constant780001D7: {inst: inst780001FD, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def5}} +// CHECK:STDOUT: symbolic_constant780001D8: {inst: inst780001FF, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def6}} +// CHECK:STDOUT: symbolic_constant780001D9: {inst: inst78000201, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def7}} +// CHECK:STDOUT: symbolic_constant780001DA: {inst: inst78000211, kind: checked, attached: null} +// CHECK:STDOUT: symbolic_constant780001DB: {inst: inst78000211, kind: checked, attached: {generic: generic78000000, index: generic_inst_in_def8}} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: @@ -2080,135 +2158,145 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 23: inst78000085 // CHECK:STDOUT: 24: inst78000088 // CHECK:STDOUT: 25: inst78000089 -// CHECK:STDOUT: 26: inst7800008D -// CHECK:STDOUT: 27: inst7800008E -// CHECK:STDOUT: 28: inst78000090 -// CHECK:STDOUT: 29: inst78000097 -// CHECK:STDOUT: 30: inst7800009A -// CHECK:STDOUT: 31: inst7800009C -// CHECK:STDOUT: 32: inst7800009E -// CHECK:STDOUT: 33: inst7800009F -// CHECK:STDOUT: 34: inst780000A0 -// CHECK:STDOUT: 35: inst780000A1 -// CHECK:STDOUT: 36: inst780000A2 -// CHECK:STDOUT: 37: inst780000A3 -// CHECK:STDOUT: 38: inst780000A4 -// CHECK:STDOUT: 39: inst780000A5 -// CHECK:STDOUT: 40: inst780000A6 -// CHECK:STDOUT: 41: inst780000B8 -// CHECK:STDOUT: 42: inst780000BC -// CHECK:STDOUT: 43: inst780000C7 -// CHECK:STDOUT: 44: inst780000C8 -// CHECK:STDOUT: 45: inst780000C9 -// CHECK:STDOUT: 46: inst780000CA -// CHECK:STDOUT: 47: inst780000CB -// CHECK:STDOUT: 48: inst780000CC -// CHECK:STDOUT: 49: inst780000D4 -// CHECK:STDOUT: 50: inst780000D5 -// CHECK:STDOUT: 51: inst780000D6 -// CHECK:STDOUT: 52: inst780000D7 -// CHECK:STDOUT: 53: inst780000D8 -// CHECK:STDOUT: 54: inst780000D9 -// CHECK:STDOUT: 55: inst780000DA -// CHECK:STDOUT: 56: inst780000DB -// CHECK:STDOUT: 57: inst780000DC -// CHECK:STDOUT: 58: inst780000DD -// CHECK:STDOUT: 59: inst780000DE -// CHECK:STDOUT: 60: inst780000DF -// CHECK:STDOUT: 61: inst780000E0 -// CHECK:STDOUT: 62: inst780000E1 -// CHECK:STDOUT: 63: inst780000E2 -// CHECK:STDOUT: 64: inst780000E3 -// CHECK:STDOUT: 65: inst780000E4 -// CHECK:STDOUT: 66: inst780000E5 -// CHECK:STDOUT: 67: inst780000E6 -// CHECK:STDOUT: 68: inst780000E7 -// CHECK:STDOUT: 69: inst780000E9 -// CHECK:STDOUT: 70: inst780000EA -// CHECK:STDOUT: 71: inst780000EB -// CHECK:STDOUT: 72: inst780000EC -// CHECK:STDOUT: 73: inst780000F1 +// CHECK:STDOUT: 26: inst7800008E +// CHECK:STDOUT: 27: inst7800008F +// CHECK:STDOUT: 28: inst78000091 +// CHECK:STDOUT: 29: inst78000098 +// CHECK:STDOUT: 30: inst7800009B +// CHECK:STDOUT: 31: inst7800009D +// CHECK:STDOUT: 32: inst7800009F +// CHECK:STDOUT: 33: inst780000A0 +// CHECK:STDOUT: 34: inst780000A1 +// CHECK:STDOUT: 35: inst780000A2 +// CHECK:STDOUT: 36: inst780000A3 +// CHECK:STDOUT: 37: inst780000A4 +// CHECK:STDOUT: 38: inst780000A5 +// CHECK:STDOUT: 39: inst780000A6 +// CHECK:STDOUT: 40: inst780000A7 +// CHECK:STDOUT: 41: inst780000B9 +// CHECK:STDOUT: 42: inst780000BD +// CHECK:STDOUT: 43: inst780000C8 +// CHECK:STDOUT: 44: inst780000C9 +// CHECK:STDOUT: 45: inst780000CA +// CHECK:STDOUT: 46: inst780000CB +// CHECK:STDOUT: 47: inst780000CC +// CHECK:STDOUT: 48: inst780000CD +// CHECK:STDOUT: 49: inst780000CE +// CHECK:STDOUT: 50: inst780000D7 +// CHECK:STDOUT: 51: inst780000D8 +// CHECK:STDOUT: 52: inst780000DA +// CHECK:STDOUT: 53: inst780000DB +// CHECK:STDOUT: 54: inst780000DC +// CHECK:STDOUT: 55: inst780000DD +// CHECK:STDOUT: 56: inst780000DE +// CHECK:STDOUT: 57: inst780000E0 +// CHECK:STDOUT: 58: inst780000E1 +// CHECK:STDOUT: 59: inst780000E2 +// CHECK:STDOUT: 60: inst780000E3 +// CHECK:STDOUT: 61: inst780000E4 +// CHECK:STDOUT: 62: inst780000E6 +// CHECK:STDOUT: 63: inst780000E7 +// CHECK:STDOUT: 64: inst780000E8 +// CHECK:STDOUT: 65: inst780000E9 +// CHECK:STDOUT: 66: inst780000EA +// CHECK:STDOUT: 67: inst780000EC +// CHECK:STDOUT: 68: inst780000ED +// CHECK:STDOUT: 69: inst780000EE +// CHECK:STDOUT: 70: inst780000EF +// CHECK:STDOUT: 71: inst780000F0 +// CHECK:STDOUT: 72: inst780000F2 +// CHECK:STDOUT: 73: inst780000F3 // CHECK:STDOUT: 74: inst780000F5 -// CHECK:STDOUT: 75: inst780000F8 -// CHECK:STDOUT: 76: inst780000FA -// CHECK:STDOUT: 77: inst780000FC -// CHECK:STDOUT: 78: inst780000FD -// CHECK:STDOUT: 79: inst780000FE -// CHECK:STDOUT: 80: inst780000FF -// CHECK:STDOUT: 81: inst78000100 -// CHECK:STDOUT: 82: inst78000101 -// CHECK:STDOUT: 83: inst78000102 -// CHECK:STDOUT: 84: inst78000103 -// CHECK:STDOUT: 85: inst78000104 +// CHECK:STDOUT: 75: inst780000F6 +// CHECK:STDOUT: 76: inst780000F7 +// CHECK:STDOUT: 77: inst780000F8 +// CHECK:STDOUT: 78: inst780000F9 +// CHECK:STDOUT: 79: inst780000FF +// CHECK:STDOUT: 80: inst78000103 +// CHECK:STDOUT: 81: inst78000106 +// CHECK:STDOUT: 82: inst78000108 +// CHECK:STDOUT: 83: inst7800010A +// CHECK:STDOUT: 84: inst7800010B +// CHECK:STDOUT: 85: inst7800010C // CHECK:STDOUT: 86: inst7800010D // CHECK:STDOUT: 87: inst7800010E -// CHECK:STDOUT: 88: inst78000112 -// CHECK:STDOUT: 89: inst78000113 -// CHECK:STDOUT: 90: inst78000114 -// CHECK:STDOUT: 91: inst78000115 -// CHECK:STDOUT: 92: inst78000116 -// CHECK:STDOUT: 93: inst78000117 -// CHECK:STDOUT: 94: inst78000118 -// CHECK:STDOUT: 95: inst78000119 -// CHECK:STDOUT: 96: inst7800011A -// CHECK:STDOUT: 97: inst7800011B -// CHECK:STDOUT: 98: inst7800011F -// CHECK:STDOUT: 99: inst78000120 -// CHECK:STDOUT: 100: inst78000122 -// CHECK:STDOUT: 101: inst7800012A -// CHECK:STDOUT: 102: inst7800012D -// CHECK:STDOUT: 103: inst7800012F -// CHECK:STDOUT: 104: inst78000131 -// CHECK:STDOUT: 105: inst78000132 -// CHECK:STDOUT: 106: inst78000133 -// CHECK:STDOUT: 107: inst78000134 +// CHECK:STDOUT: 88: inst7800010F +// CHECK:STDOUT: 89: inst78000110 +// CHECK:STDOUT: 90: inst78000111 +// CHECK:STDOUT: 91: inst78000112 +// CHECK:STDOUT: 92: inst7800011B +// CHECK:STDOUT: 93: inst7800011C +// CHECK:STDOUT: 94: inst78000120 +// CHECK:STDOUT: 95: inst78000121 +// CHECK:STDOUT: 96: inst78000123 +// CHECK:STDOUT: 97: inst78000124 +// CHECK:STDOUT: 98: inst78000125 +// CHECK:STDOUT: 99: inst78000126 +// CHECK:STDOUT: 100: inst78000127 +// CHECK:STDOUT: 101: inst78000129 +// CHECK:STDOUT: 102: inst7800012A +// CHECK:STDOUT: 103: inst7800012B +// CHECK:STDOUT: 104: inst7800012C +// CHECK:STDOUT: 105: inst7800012D +// CHECK:STDOUT: 106: inst78000132 +// CHECK:STDOUT: 107: inst78000133 // CHECK:STDOUT: 108: inst78000135 -// CHECK:STDOUT: 109: inst78000136 -// CHECK:STDOUT: 110: inst78000137 -// CHECK:STDOUT: 111: inst78000138 -// CHECK:STDOUT: 112: inst78000139 -// CHECK:STDOUT: 113: inst7800013A -// CHECK:STDOUT: 114: inst7800014E -// CHECK:STDOUT: 115: inst78000152 -// CHECK:STDOUT: 116: inst78000163 -// CHECK:STDOUT: 117: inst78000164 -// CHECK:STDOUT: 118: inst78000165 -// CHECK:STDOUT: 119: inst78000166 -// CHECK:STDOUT: 120: inst78000167 -// CHECK:STDOUT: 121: inst78000168 -// CHECK:STDOUT: 122: inst78000169 -// CHECK:STDOUT: 123: inst7800016A +// CHECK:STDOUT: 109: inst7800013D +// CHECK:STDOUT: 110: inst78000140 +// CHECK:STDOUT: 111: inst78000142 +// CHECK:STDOUT: 112: inst78000144 +// CHECK:STDOUT: 113: inst78000145 +// CHECK:STDOUT: 114: inst78000146 +// CHECK:STDOUT: 115: inst78000147 +// CHECK:STDOUT: 116: inst78000148 +// CHECK:STDOUT: 117: inst78000149 +// CHECK:STDOUT: 118: inst7800014A +// CHECK:STDOUT: 119: inst7800014B +// CHECK:STDOUT: 120: inst7800014C +// CHECK:STDOUT: 121: inst7800014D +// CHECK:STDOUT: 122: inst78000161 +// CHECK:STDOUT: 123: inst78000165 // CHECK:STDOUT: 124: inst78000176 // CHECK:STDOUT: 125: inst78000177 -// CHECK:STDOUT: 126: inst7800017B -// CHECK:STDOUT: 127: inst7800017C -// CHECK:STDOUT: 128: inst7800017E -// CHECK:STDOUT: 129: inst78000186 -// CHECK:STDOUT: 130: inst78000189 -// CHECK:STDOUT: 131: inst7800018B -// CHECK:STDOUT: 132: inst7800018D -// CHECK:STDOUT: 133: inst7800018E -// CHECK:STDOUT: 134: inst7800018F -// CHECK:STDOUT: 135: inst78000190 -// CHECK:STDOUT: 136: inst78000191 -// CHECK:STDOUT: 137: inst78000192 -// CHECK:STDOUT: 138: inst78000193 -// CHECK:STDOUT: 139: inst78000194 -// CHECK:STDOUT: 140: inst78000195 -// CHECK:STDOUT: 141: inst78000196 -// CHECK:STDOUT: 142: inst78000197 -// CHECK:STDOUT: 143: inst780001AD -// CHECK:STDOUT: 144: inst780001B1 -// CHECK:STDOUT: 145: inst780001C8 -// CHECK:STDOUT: 146: inst780001C9 -// CHECK:STDOUT: 147: inst780001CA -// CHECK:STDOUT: 148: inst780001CB -// CHECK:STDOUT: 149: inst780001CC -// CHECK:STDOUT: 150: inst780001CD -// CHECK:STDOUT: 151: inst780001CE -// CHECK:STDOUT: 152: inst780001CF -// CHECK:STDOUT: 153: inst780001D0 -// CHECK:STDOUT: 154: inst780001D1 +// CHECK:STDOUT: 126: inst78000178 +// CHECK:STDOUT: 127: inst78000179 +// CHECK:STDOUT: 128: inst7800017A +// CHECK:STDOUT: 129: inst7800017B +// CHECK:STDOUT: 130: inst7800017C +// CHECK:STDOUT: 131: inst7800017D +// CHECK:STDOUT: 132: inst7800017E +// CHECK:STDOUT: 133: inst7800018B +// CHECK:STDOUT: 134: inst7800018C +// CHECK:STDOUT: 135: inst78000191 +// CHECK:STDOUT: 136: inst78000192 +// CHECK:STDOUT: 137: inst78000194 +// CHECK:STDOUT: 138: inst7800019C +// CHECK:STDOUT: 139: inst7800019F +// CHECK:STDOUT: 140: inst780001A1 +// CHECK:STDOUT: 141: inst780001A3 +// CHECK:STDOUT: 142: inst780001A4 +// CHECK:STDOUT: 143: inst780001A5 +// CHECK:STDOUT: 144: inst780001A6 +// CHECK:STDOUT: 145: inst780001A7 +// CHECK:STDOUT: 146: inst780001A8 +// CHECK:STDOUT: 147: inst780001A9 +// CHECK:STDOUT: 148: inst780001AA +// CHECK:STDOUT: 149: inst780001AB +// CHECK:STDOUT: 150: inst780001AC +// CHECK:STDOUT: 151: inst780001AD +// CHECK:STDOUT: 152: inst780001C3 +// CHECK:STDOUT: 153: inst780001C7 +// CHECK:STDOUT: 154: inst780001DE +// CHECK:STDOUT: 155: inst780001DF +// CHECK:STDOUT: 156: inst780001E0 +// CHECK:STDOUT: 157: inst780001E1 +// CHECK:STDOUT: 158: inst780001E2 +// CHECK:STDOUT: 159: inst780001E3 +// CHECK:STDOUT: 160: inst780001E4 +// CHECK:STDOUT: 161: inst780001E5 +// CHECK:STDOUT: 162: inst780001E6 +// CHECK:STDOUT: 163: inst780001E7 +// CHECK:STDOUT: 164: inst780001E8 // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block78000005: // CHECK:STDOUT: 0: inst78000013 @@ -2302,24 +2390,24 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 0: inst78000052 // CHECK:STDOUT: 1: inst78000053 // CHECK:STDOUT: 2: inst78000054 -// CHECK:STDOUT: 3: inst780001E8 -// CHECK:STDOUT: 4: inst780001EF -// CHECK:STDOUT: 5: inst780001F2 -// CHECK:STDOUT: 6: inst780001F3 -// CHECK:STDOUT: 7: inst780001F6 -// CHECK:STDOUT: 8: inst780001F7 -// CHECK:STDOUT: 9: inst780001F8 -// CHECK:STDOUT: 10: inst780001FB -// CHECK:STDOUT: 11: inst780001FC +// CHECK:STDOUT: 3: inst78000200 +// CHECK:STDOUT: 4: inst78000207 +// CHECK:STDOUT: 5: inst7800020A +// CHECK:STDOUT: 6: inst7800020B +// CHECK:STDOUT: 7: inst7800020E +// CHECK:STDOUT: 8: inst7800020F +// CHECK:STDOUT: 9: inst78000210 +// CHECK:STDOUT: 10: inst78000213 +// CHECK:STDOUT: 11: inst78000214 // CHECK:STDOUT: 12: inst78000056 -// CHECK:STDOUT: 13: inst780001FD -// CHECK:STDOUT: 14: inst780001FE -// CHECK:STDOUT: 15: inst780001FF -// CHECK:STDOUT: 16: inst78000200 -// CHECK:STDOUT: 17: inst78000201 -// CHECK:STDOUT: 18: inst78000202 -// CHECK:STDOUT: 19: inst78000203 -// CHECK:STDOUT: 20: inst78000204 +// CHECK:STDOUT: 13: inst78000215 +// CHECK:STDOUT: 14: inst78000216 +// CHECK:STDOUT: 15: inst78000217 +// CHECK:STDOUT: 16: inst78000218 +// CHECK:STDOUT: 17: inst78000219 +// CHECK:STDOUT: 18: inst7800021A +// CHECK:STDOUT: 19: inst7800021B +// CHECK:STDOUT: 20: inst7800021C // CHECK:STDOUT: inst_block78000019: // CHECK:STDOUT: 0: inst78000052 // CHECK:STDOUT: 1: inst78000053 @@ -2365,465 +2453,473 @@ fn Foo[T: type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 1: inst78000081 // CHECK:STDOUT: 2: inst78000082 // CHECK:STDOUT: inst_block78000025: -// CHECK:STDOUT: 0: inst7800008D +// CHECK:STDOUT: 0: inst7800008E // CHECK:STDOUT: inst_block78000026: // CHECK:STDOUT: 0: inst7800008A // CHECK:STDOUT: inst_block78000027: -// CHECK:STDOUT: 0: inst78000096 +// CHECK:STDOUT: 0: inst78000097 // CHECK:STDOUT: 1: inst7800008A // CHECK:STDOUT: 2: inst7800008B // CHECK:STDOUT: 3: inst7800008C -// CHECK:STDOUT: 4: inst7800008F +// CHECK:STDOUT: 4: inst7800008D +// CHECK:STDOUT: 5: inst78000090 // CHECK:STDOUT: inst_block78000028: -// CHECK:STDOUT: 0: inst78000091 -// CHECK:STDOUT: 1: inst78000092 +// CHECK:STDOUT: 0: inst78000092 +// CHECK:STDOUT: 1: inst78000093 // CHECK:STDOUT: inst_block78000029: -// CHECK:STDOUT: 0: inst7800009F -// CHECK:STDOUT: 1: inst780000A0 +// CHECK:STDOUT: 0: inst780000A0 +// CHECK:STDOUT: 1: inst780000A1 // CHECK:STDOUT: inst_block7800002A: -// CHECK:STDOUT: 0: inst780000A2 +// CHECK:STDOUT: 0: inst780000A3 // CHECK:STDOUT: inst_block7800002B: -// CHECK:STDOUT: 0: inst780000A6 -// CHECK:STDOUT: inst_block7800002C: // CHECK:STDOUT: 0: inst780000A7 -// CHECK:STDOUT: 1: inst780000A8 -// CHECK:STDOUT: 2: inst780000A9 -// CHECK:STDOUT: 3: inst780000AA -// CHECK:STDOUT: 4: inst780000AB -// CHECK:STDOUT: 5: inst780000AC -// CHECK:STDOUT: 6: inst780000AD -// CHECK:STDOUT: 7: inst780000AE -// CHECK:STDOUT: 8: inst780000AF +// CHECK:STDOUT: inst_block7800002C: +// CHECK:STDOUT: 0: inst780000A8 +// CHECK:STDOUT: 1: inst780000A9 +// CHECK:STDOUT: 2: inst780000AA +// CHECK:STDOUT: 3: inst780000AB +// CHECK:STDOUT: 4: inst780000AC +// CHECK:STDOUT: 5: inst780000AD +// CHECK:STDOUT: 6: inst780000AE +// CHECK:STDOUT: 7: inst780000AF +// CHECK:STDOUT: 8: inst780000B0 // CHECK:STDOUT: inst_block7800002D: // CHECK:STDOUT: 0: inst7800008A -// CHECK:STDOUT: 1: inst780000B1 -// CHECK:STDOUT: 2: inst780000B2 +// CHECK:STDOUT: 1: inst780000B2 +// CHECK:STDOUT: 2: inst780000B3 // CHECK:STDOUT: inst_block7800002E: // CHECK:STDOUT: 0: inst7800008A // CHECK:STDOUT: 1: inst7800008B -// CHECK:STDOUT: 2: inst780000B6 -// CHECK:STDOUT: 3: inst780000BB -// CHECK:STDOUT: 4: inst780000BD -// CHECK:STDOUT: 5: inst780000BA -// CHECK:STDOUT: 6: inst780000B7 -// CHECK:STDOUT: 7: inst780000B9 +// CHECK:STDOUT: 2: inst780000B7 +// CHECK:STDOUT: 3: inst780000BC +// CHECK:STDOUT: 4: inst780000BE +// CHECK:STDOUT: 5: inst780000BB +// CHECK:STDOUT: 6: inst780000B8 +// CHECK:STDOUT: 7: inst780000BA // CHECK:STDOUT: inst_block7800002F: -// CHECK:STDOUT: 0: inst780000A7 +// CHECK:STDOUT: 0: inst780000A8 // CHECK:STDOUT: inst_block78000030: -// CHECK:STDOUT: 0: inst780000A7 +// CHECK:STDOUT: 0: inst780000A8 // CHECK:STDOUT: inst_block78000031: -// CHECK:STDOUT: 0: inst780000C0 -// CHECK:STDOUT: 1: inst780000C1 -// CHECK:STDOUT: 2: inst780000C2 -// CHECK:STDOUT: 3: inst780000C3 -// CHECK:STDOUT: 4: inst780000C4 -// CHECK:STDOUT: 5: inst780000C5 -// CHECK:STDOUT: 6: inst780000C6 +// CHECK:STDOUT: 0: inst780000C1 +// CHECK:STDOUT: 1: inst780000C2 +// CHECK:STDOUT: 2: inst780000C3 +// CHECK:STDOUT: 3: inst780000C4 +// CHECK:STDOUT: 4: inst780000C5 +// CHECK:STDOUT: 5: inst780000C6 +// CHECK:STDOUT: 6: inst780000C7 // CHECK:STDOUT: inst_block78000032: // CHECK:STDOUT: 0: inst7800008A // CHECK:STDOUT: 1: inst7800008B // CHECK:STDOUT: 2: inst7800008C -// CHECK:STDOUT: 3: inst78000093 -// CHECK:STDOUT: 4: inst78000099 -// CHECK:STDOUT: 5: inst7800009B -// CHECK:STDOUT: 6: inst7800009D -// CHECK:STDOUT: 7: inst78000094 -// CHECK:STDOUT: 8: inst78000098 +// CHECK:STDOUT: 3: inst78000094 +// CHECK:STDOUT: 4: inst7800009A +// CHECK:STDOUT: 5: inst7800009C +// CHECK:STDOUT: 6: inst7800009E +// CHECK:STDOUT: 7: inst78000095 +// CHECK:STDOUT: 8: inst78000099 // CHECK:STDOUT: inst_block78000033: -// CHECK:STDOUT: 0: inst780000C9 +// CHECK:STDOUT: 0: inst780000CA // CHECK:STDOUT: inst_block78000034: -// CHECK:STDOUT: 0: inst780000CC +// CHECK:STDOUT: 0: inst780000CE // CHECK:STDOUT: inst_block78000035: -// CHECK:STDOUT: 0: inst780000CE +// CHECK:STDOUT: 0: inst780000D0 // CHECK:STDOUT: inst_block78000036: -// CHECK:STDOUT: 0: inst780000CD -// CHECK:STDOUT: 1: inst780000CE -// CHECK:STDOUT: 2: inst780000CF -// CHECK:STDOUT: 3: inst780000D0 -// CHECK:STDOUT: 4: inst780000D1 +// CHECK:STDOUT: 0: inst780000CF +// CHECK:STDOUT: 1: inst780000D0 +// CHECK:STDOUT: 2: inst780000D1 +// CHECK:STDOUT: 3: inst780000D2 +// CHECK:STDOUT: 4: inst780000D3 +// CHECK:STDOUT: 5: inst780000D4 // CHECK:STDOUT: inst_block78000037: -// CHECK:STDOUT: 0: inst780000CE +// CHECK:STDOUT: 0: inst780000D0 // CHECK:STDOUT: inst_block78000038: -// CHECK:STDOUT: 0: inst780000D2 -// CHECK:STDOUT: 1: inst780000D3 +// CHECK:STDOUT: 0: inst780000D5 +// CHECK:STDOUT: 1: inst780000D6 // CHECK:STDOUT: inst_block78000039: -// CHECK:STDOUT: 0: inst780000E6 +// CHECK:STDOUT: 0: inst780000F2 // CHECK:STDOUT: inst_block7800003A: // CHECK:STDOUT: 0: inst78000018 // CHECK:STDOUT: 1: inst7800001B // CHECK:STDOUT: 2: inst7800001F -// CHECK:STDOUT: 3: inst780000E8 +// CHECK:STDOUT: 3: inst780000F1 +// CHECK:STDOUT: 4: inst780000F4 // CHECK:STDOUT: inst_block7800003B: -// CHECK:STDOUT: 0: inst780000E9 +// CHECK:STDOUT: 0: inst780000F5 // CHECK:STDOUT: inst_block7800003C: -// CHECK:STDOUT: 0: inst780000EC +// CHECK:STDOUT: 0: inst780000F9 // CHECK:STDOUT: inst_block7800003D: -// CHECK:STDOUT: 0: inst780000EE +// CHECK:STDOUT: 0: inst780000FB // CHECK:STDOUT: inst_block7800003E: -// CHECK:STDOUT: 0: inst780000ED -// CHECK:STDOUT: 1: inst780000EE -// CHECK:STDOUT: 2: inst780000EF -// CHECK:STDOUT: 3: inst780000F0 +// CHECK:STDOUT: 0: inst780000FA +// CHECK:STDOUT: 1: inst780000FB +// CHECK:STDOUT: 2: inst780000FC +// CHECK:STDOUT: 3: inst780000FD +// CHECK:STDOUT: 4: inst780000FE // CHECK:STDOUT: inst_block7800003F: -// CHECK:STDOUT: 0: inst780000FD -// CHECK:STDOUT: 1: inst780000FE +// CHECK:STDOUT: 0: inst7800010B +// CHECK:STDOUT: 1: inst7800010C // CHECK:STDOUT: inst_block78000040: -// CHECK:STDOUT: 0: inst78000100 +// CHECK:STDOUT: 0: inst7800010E // CHECK:STDOUT: inst_block78000041: -// CHECK:STDOUT: 0: inst78000104 +// CHECK:STDOUT: 0: inst78000112 // CHECK:STDOUT: inst_block78000042: -// CHECK:STDOUT: 0: inst78000105 -// CHECK:STDOUT: 1: inst78000106 -// CHECK:STDOUT: 2: inst78000107 -// CHECK:STDOUT: 3: inst78000108 -// CHECK:STDOUT: 4: inst78000109 -// CHECK:STDOUT: 5: inst7800010A -// CHECK:STDOUT: 6: inst7800010B -// CHECK:STDOUT: 7: inst7800010C +// CHECK:STDOUT: 0: inst78000113 +// CHECK:STDOUT: 1: inst78000114 +// CHECK:STDOUT: 2: inst78000115 +// CHECK:STDOUT: 3: inst78000116 +// CHECK:STDOUT: 4: inst78000117 +// CHECK:STDOUT: 5: inst78000118 +// CHECK:STDOUT: 6: inst78000119 +// CHECK:STDOUT: 7: inst7800011A // CHECK:STDOUT: inst_block78000043: // CHECK:STDOUT: 0: inst7800001B // CHECK:STDOUT: 1: inst7800001F // CHECK:STDOUT: 2: inst78000021 -// CHECK:STDOUT: 3: inst780000F7 -// CHECK:STDOUT: 4: inst780000F9 -// CHECK:STDOUT: 5: inst780000FB -// CHECK:STDOUT: 6: inst780000F4 -// CHECK:STDOUT: 7: inst780000F6 +// CHECK:STDOUT: 3: inst78000105 +// CHECK:STDOUT: 4: inst78000107 +// CHECK:STDOUT: 5: inst78000109 +// CHECK:STDOUT: 6: inst78000102 +// CHECK:STDOUT: 7: inst78000104 // CHECK:STDOUT: inst_block78000044: -// CHECK:STDOUT: 0: inst780000EE +// CHECK:STDOUT: 0: inst780000FB // CHECK:STDOUT: inst_block78000045: -// CHECK:STDOUT: 0: inst7800010F -// CHECK:STDOUT: 1: inst78000110 -// CHECK:STDOUT: 2: inst78000111 +// CHECK:STDOUT: 0: inst7800011D +// CHECK:STDOUT: 1: inst7800011E +// CHECK:STDOUT: 2: inst7800011F // CHECK:STDOUT: inst_block78000046: // CHECK:STDOUT: 0: inst7800008B -// CHECK:STDOUT: 1: inst7800011D +// CHECK:STDOUT: 1: inst7800012F // CHECK:STDOUT: inst_block78000047: -// CHECK:STDOUT: 0: inst7800011F +// CHECK:STDOUT: 0: inst78000132 // CHECK:STDOUT: inst_block78000048: // CHECK:STDOUT: 0: inst7800008A -// CHECK:STDOUT: 1: inst7800011C +// CHECK:STDOUT: 1: inst7800012E // CHECK:STDOUT: inst_block78000049: // CHECK:STDOUT: 0: inst7800005A // CHECK:STDOUT: 1: inst7800005A // CHECK:STDOUT: inst_block7800004A: -// CHECK:STDOUT: 0: inst78000096 +// CHECK:STDOUT: 0: inst78000097 // CHECK:STDOUT: 1: inst7800008A -// CHECK:STDOUT: 2: inst78000129 -// CHECK:STDOUT: 3: inst7800011C -// CHECK:STDOUT: 4: inst78000128 +// CHECK:STDOUT: 2: inst7800013C +// CHECK:STDOUT: 3: inst7800012E +// CHECK:STDOUT: 4: inst7800013B // CHECK:STDOUT: 5: inst7800008B -// CHECK:STDOUT: 6: inst7800011D -// CHECK:STDOUT: 7: inst7800011E -// CHECK:STDOUT: 8: inst78000121 +// CHECK:STDOUT: 6: inst7800012F +// CHECK:STDOUT: 7: inst78000130 +// CHECK:STDOUT: 8: inst78000131 +// CHECK:STDOUT: 9: inst78000134 // CHECK:STDOUT: inst_block7800004B: -// CHECK:STDOUT: 0: inst78000123 -// CHECK:STDOUT: 1: inst78000124 +// CHECK:STDOUT: 0: inst78000136 +// CHECK:STDOUT: 1: inst78000137 // CHECK:STDOUT: inst_block7800004C: -// CHECK:STDOUT: 0: inst78000132 -// CHECK:STDOUT: 1: inst78000133 +// CHECK:STDOUT: 0: inst78000145 +// CHECK:STDOUT: 1: inst78000146 // CHECK:STDOUT: inst_block7800004D: -// CHECK:STDOUT: 0: inst78000135 +// CHECK:STDOUT: 0: inst78000148 // CHECK:STDOUT: inst_block7800004E: -// CHECK:STDOUT: 0: inst78000139 -// CHECK:STDOUT: 1: inst7800013A +// CHECK:STDOUT: 0: inst7800014C +// CHECK:STDOUT: 1: inst7800014D // CHECK:STDOUT: inst_block7800004F: -// CHECK:STDOUT: 0: inst7800013C -// CHECK:STDOUT: 1: inst7800013E +// CHECK:STDOUT: 0: inst7800014F +// CHECK:STDOUT: 1: inst78000151 // CHECK:STDOUT: inst_block78000050: -// CHECK:STDOUT: 0: inst7800013B -// CHECK:STDOUT: 1: inst7800013C -// CHECK:STDOUT: 2: inst7800013D -// CHECK:STDOUT: 3: inst7800013E -// CHECK:STDOUT: 4: inst7800013F -// CHECK:STDOUT: 5: inst78000140 -// CHECK:STDOUT: 6: inst78000141 -// CHECK:STDOUT: 7: inst78000142 -// CHECK:STDOUT: 8: inst78000143 -// CHECK:STDOUT: 9: inst78000144 -// CHECK:STDOUT: 10: inst78000145 -// CHECK:STDOUT: inst_block78000051: -// CHECK:STDOUT: 0: inst7800011C -// CHECK:STDOUT: inst_block78000052: -// CHECK:STDOUT: 0: inst7800011C -// CHECK:STDOUT: 1: inst78000147 -// CHECK:STDOUT: 2: inst78000148 -// CHECK:STDOUT: inst_block78000053: -// CHECK:STDOUT: 0: inst7800011C -// CHECK:STDOUT: 1: inst7800011D -// CHECK:STDOUT: 2: inst7800014C +// CHECK:STDOUT: 0: inst7800014E +// CHECK:STDOUT: 1: inst7800014F +// CHECK:STDOUT: 2: inst78000150 // CHECK:STDOUT: 3: inst78000151 -// CHECK:STDOUT: 4: inst78000153 -// CHECK:STDOUT: 5: inst78000150 -// CHECK:STDOUT: 6: inst7800014D -// CHECK:STDOUT: 7: inst7800014F +// CHECK:STDOUT: 4: inst78000152 +// CHECK:STDOUT: 5: inst78000153 +// CHECK:STDOUT: 6: inst78000154 +// CHECK:STDOUT: 7: inst78000155 +// CHECK:STDOUT: 8: inst78000156 +// CHECK:STDOUT: 9: inst78000157 +// CHECK:STDOUT: 10: inst78000158 +// CHECK:STDOUT: inst_block78000051: +// CHECK:STDOUT: 0: inst7800012E +// CHECK:STDOUT: inst_block78000052: +// CHECK:STDOUT: 0: inst7800012E +// CHECK:STDOUT: 1: inst7800015A +// CHECK:STDOUT: 2: inst7800015B +// CHECK:STDOUT: inst_block78000053: +// CHECK:STDOUT: 0: inst7800012E +// CHECK:STDOUT: 1: inst7800012F +// CHECK:STDOUT: 2: inst7800015F +// CHECK:STDOUT: 3: inst78000164 +// CHECK:STDOUT: 4: inst78000166 +// CHECK:STDOUT: 5: inst78000163 +// CHECK:STDOUT: 6: inst78000160 +// CHECK:STDOUT: 7: inst78000162 // CHECK:STDOUT: inst_block78000054: -// CHECK:STDOUT: 0: inst7800013B +// CHECK:STDOUT: 0: inst7800014E // CHECK:STDOUT: inst_block78000055: -// CHECK:STDOUT: 0: inst7800013B +// CHECK:STDOUT: 0: inst7800014E // CHECK:STDOUT: inst_block78000056: -// CHECK:STDOUT: 0: inst7800013D +// CHECK:STDOUT: 0: inst78000150 // CHECK:STDOUT: inst_block78000057: -// CHECK:STDOUT: 0: inst7800013D +// CHECK:STDOUT: 0: inst78000150 // CHECK:STDOUT: inst_block78000058: -// CHECK:STDOUT: 0: inst78000156 -// CHECK:STDOUT: 1: inst78000157 -// CHECK:STDOUT: 2: inst78000158 -// CHECK:STDOUT: 3: inst78000159 -// CHECK:STDOUT: 4: inst7800015A -// CHECK:STDOUT: 5: inst7800015B -// CHECK:STDOUT: 6: inst7800015C -// CHECK:STDOUT: 7: inst7800015D -// CHECK:STDOUT: 8: inst7800015E -// CHECK:STDOUT: 9: inst7800015F -// CHECK:STDOUT: 10: inst78000160 -// CHECK:STDOUT: 11: inst78000161 -// CHECK:STDOUT: 12: inst78000162 +// CHECK:STDOUT: 0: inst78000169 +// CHECK:STDOUT: 1: inst7800016A +// CHECK:STDOUT: 2: inst7800016B +// CHECK:STDOUT: 3: inst7800016C +// CHECK:STDOUT: 4: inst7800016D +// CHECK:STDOUT: 5: inst7800016E +// CHECK:STDOUT: 6: inst7800016F +// CHECK:STDOUT: 7: inst78000170 +// CHECK:STDOUT: 8: inst78000171 +// CHECK:STDOUT: 9: inst78000172 +// CHECK:STDOUT: 10: inst78000173 +// CHECK:STDOUT: 11: inst78000174 +// CHECK:STDOUT: 12: inst78000175 // CHECK:STDOUT: inst_block78000059: // CHECK:STDOUT: 0: inst7800008A // CHECK:STDOUT: 1: inst7800008B -// CHECK:STDOUT: 2: inst7800011C -// CHECK:STDOUT: 3: inst7800011D -// CHECK:STDOUT: 4: inst7800011E -// CHECK:STDOUT: 5: inst78000125 -// CHECK:STDOUT: 6: inst7800012C -// CHECK:STDOUT: 7: inst7800012E -// CHECK:STDOUT: 8: inst78000130 -// CHECK:STDOUT: 9: inst78000126 -// CHECK:STDOUT: 10: inst7800012B +// CHECK:STDOUT: 2: inst7800012E +// CHECK:STDOUT: 3: inst7800012F +// CHECK:STDOUT: 4: inst78000130 +// CHECK:STDOUT: 5: inst78000138 +// CHECK:STDOUT: 6: inst7800013F +// CHECK:STDOUT: 7: inst78000141 +// CHECK:STDOUT: 8: inst78000143 +// CHECK:STDOUT: 9: inst78000139 +// CHECK:STDOUT: 10: inst7800013E // CHECK:STDOUT: inst_block7800005A: -// CHECK:STDOUT: 0: inst78000165 -// CHECK:STDOUT: 1: inst78000166 +// CHECK:STDOUT: 0: inst78000178 +// CHECK:STDOUT: 1: inst78000179 // CHECK:STDOUT: inst_block7800005B: -// CHECK:STDOUT: 0: inst78000169 -// CHECK:STDOUT: 1: inst7800016A +// CHECK:STDOUT: 0: inst7800017D +// CHECK:STDOUT: 1: inst7800017E // CHECK:STDOUT: inst_block7800005C: -// CHECK:STDOUT: 0: inst7800016C -// CHECK:STDOUT: 1: inst7800016E +// CHECK:STDOUT: 0: inst78000180 +// CHECK:STDOUT: 1: inst78000182 // CHECK:STDOUT: inst_block7800005D: -// CHECK:STDOUT: 0: inst78000170 -// CHECK:STDOUT: 1: inst78000171 +// CHECK:STDOUT: 0: inst78000184 +// CHECK:STDOUT: 1: inst78000185 // CHECK:STDOUT: inst_block7800005E: -// CHECK:STDOUT: 0: inst7800016C -// CHECK:STDOUT: 1: inst7800016E +// CHECK:STDOUT: 0: inst78000180 +// CHECK:STDOUT: 1: inst78000182 // CHECK:STDOUT: inst_block7800005F: -// CHECK:STDOUT: 0: inst7800016B -// CHECK:STDOUT: 1: inst7800016C -// CHECK:STDOUT: 2: inst7800016D -// CHECK:STDOUT: 3: inst7800016E -// CHECK:STDOUT: 4: inst7800016F -// CHECK:STDOUT: 5: inst78000170 -// CHECK:STDOUT: 6: inst78000171 -// CHECK:STDOUT: 7: inst78000172 -// CHECK:STDOUT: 8: inst78000173 +// CHECK:STDOUT: 0: inst7800017F +// CHECK:STDOUT: 1: inst78000180 +// CHECK:STDOUT: 2: inst78000181 +// CHECK:STDOUT: 3: inst78000182 +// CHECK:STDOUT: 4: inst78000183 +// CHECK:STDOUT: 5: inst78000184 +// CHECK:STDOUT: 6: inst78000185 +// CHECK:STDOUT: 7: inst78000186 +// CHECK:STDOUT: 8: inst78000187 +// CHECK:STDOUT: 9: inst78000188 // CHECK:STDOUT: inst_block78000060: -// CHECK:STDOUT: 0: inst7800016C -// CHECK:STDOUT: 1: inst7800016E +// CHECK:STDOUT: 0: inst78000180 +// CHECK:STDOUT: 1: inst78000182 // CHECK:STDOUT: inst_block78000061: -// CHECK:STDOUT: 0: inst78000174 -// CHECK:STDOUT: 1: inst78000175 +// CHECK:STDOUT: 0: inst78000189 +// CHECK:STDOUT: 1: inst7800018A // CHECK:STDOUT: inst_block78000062: // CHECK:STDOUT: 0: inst7800008B -// CHECK:STDOUT: 1: inst7800011D -// CHECK:STDOUT: 2: inst78000179 +// CHECK:STDOUT: 1: inst7800012F +// CHECK:STDOUT: 2: inst7800018E // CHECK:STDOUT: inst_block78000063: -// CHECK:STDOUT: 0: inst7800017B +// CHECK:STDOUT: 0: inst78000191 // CHECK:STDOUT: inst_block78000064: // CHECK:STDOUT: 0: inst7800008A -// CHECK:STDOUT: 1: inst7800011C -// CHECK:STDOUT: 2: inst78000178 +// CHECK:STDOUT: 1: inst7800012E +// CHECK:STDOUT: 2: inst7800018D // CHECK:STDOUT: inst_block78000065: // CHECK:STDOUT: 0: inst7800005A // CHECK:STDOUT: 1: inst7800005A // CHECK:STDOUT: 2: inst7800005A // CHECK:STDOUT: inst_block78000066: -// CHECK:STDOUT: 0: inst78000096 +// CHECK:STDOUT: 0: inst78000097 // CHECK:STDOUT: 1: inst7800008A -// CHECK:STDOUT: 2: inst78000129 -// CHECK:STDOUT: 3: inst7800011C -// CHECK:STDOUT: 4: inst78000185 -// CHECK:STDOUT: 5: inst78000178 -// CHECK:STDOUT: 6: inst78000184 +// CHECK:STDOUT: 2: inst7800013C +// CHECK:STDOUT: 3: inst7800012E +// CHECK:STDOUT: 4: inst7800019B +// CHECK:STDOUT: 5: inst7800018D +// CHECK:STDOUT: 6: inst7800019A // CHECK:STDOUT: 7: inst7800008B -// CHECK:STDOUT: 8: inst7800011D -// CHECK:STDOUT: 9: inst78000179 -// CHECK:STDOUT: 10: inst7800017A -// CHECK:STDOUT: 11: inst7800017D +// CHECK:STDOUT: 8: inst7800012F +// CHECK:STDOUT: 9: inst7800018E +// CHECK:STDOUT: 10: inst7800018F +// CHECK:STDOUT: 11: inst78000190 +// CHECK:STDOUT: 12: inst78000193 // CHECK:STDOUT: inst_block78000067: -// CHECK:STDOUT: 0: inst7800017F -// CHECK:STDOUT: 1: inst78000180 -// CHECK:STDOUT: inst_block78000068: -// CHECK:STDOUT: 0: inst7800018E -// CHECK:STDOUT: 1: inst7800018F -// CHECK:STDOUT: inst_block78000069: -// CHECK:STDOUT: 0: inst78000191 -// CHECK:STDOUT: inst_block7800006A: // CHECK:STDOUT: 0: inst78000195 // CHECK:STDOUT: 1: inst78000196 -// CHECK:STDOUT: 2: inst78000197 +// CHECK:STDOUT: inst_block78000068: +// CHECK:STDOUT: 0: inst780001A4 +// CHECK:STDOUT: 1: inst780001A5 +// CHECK:STDOUT: inst_block78000069: +// CHECK:STDOUT: 0: inst780001A7 +// CHECK:STDOUT: inst_block7800006A: +// CHECK:STDOUT: 0: inst780001AB +// CHECK:STDOUT: 1: inst780001AC +// CHECK:STDOUT: 2: inst780001AD // CHECK:STDOUT: inst_block7800006B: -// CHECK:STDOUT: 0: inst78000199 -// CHECK:STDOUT: 1: inst7800019B -// CHECK:STDOUT: 2: inst7800019D +// CHECK:STDOUT: 0: inst780001AF +// CHECK:STDOUT: 1: inst780001B1 +// CHECK:STDOUT: 2: inst780001B3 // CHECK:STDOUT: inst_block7800006C: -// CHECK:STDOUT: 0: inst78000198 -// CHECK:STDOUT: 1: inst78000199 -// CHECK:STDOUT: 2: inst7800019A -// CHECK:STDOUT: 3: inst7800019B -// CHECK:STDOUT: 4: inst7800019C -// CHECK:STDOUT: 5: inst7800019D -// CHECK:STDOUT: 6: inst7800019E -// CHECK:STDOUT: 7: inst7800019F -// CHECK:STDOUT: 8: inst780001A0 -// CHECK:STDOUT: 9: inst780001A1 -// CHECK:STDOUT: 10: inst780001A2 -// CHECK:STDOUT: 11: inst780001A3 -// CHECK:STDOUT: 12: inst780001A4 -// CHECK:STDOUT: inst_block7800006D: -// CHECK:STDOUT: 0: inst78000178 -// CHECK:STDOUT: inst_block7800006E: -// CHECK:STDOUT: 0: inst78000178 -// CHECK:STDOUT: 1: inst780001A6 -// CHECK:STDOUT: 2: inst780001A7 -// CHECK:STDOUT: inst_block7800006F: -// CHECK:STDOUT: 0: inst78000178 -// CHECK:STDOUT: 1: inst78000179 -// CHECK:STDOUT: 2: inst780001AB -// CHECK:STDOUT: 3: inst780001B0 +// CHECK:STDOUT: 0: inst780001AE +// CHECK:STDOUT: 1: inst780001AF +// CHECK:STDOUT: 2: inst780001B0 +// CHECK:STDOUT: 3: inst780001B1 // CHECK:STDOUT: 4: inst780001B2 -// CHECK:STDOUT: 5: inst780001AF -// CHECK:STDOUT: 6: inst780001AC -// CHECK:STDOUT: 7: inst780001AE +// CHECK:STDOUT: 5: inst780001B3 +// CHECK:STDOUT: 6: inst780001B4 +// CHECK:STDOUT: 7: inst780001B5 +// CHECK:STDOUT: 8: inst780001B6 +// CHECK:STDOUT: 9: inst780001B7 +// CHECK:STDOUT: 10: inst780001B8 +// CHECK:STDOUT: 11: inst780001B9 +// CHECK:STDOUT: 12: inst780001BA +// CHECK:STDOUT: inst_block7800006D: +// CHECK:STDOUT: 0: inst7800018D +// CHECK:STDOUT: inst_block7800006E: +// CHECK:STDOUT: 0: inst7800018D +// CHECK:STDOUT: 1: inst780001BC +// CHECK:STDOUT: 2: inst780001BD +// CHECK:STDOUT: inst_block7800006F: +// CHECK:STDOUT: 0: inst7800018D +// CHECK:STDOUT: 1: inst7800018E +// CHECK:STDOUT: 2: inst780001C1 +// CHECK:STDOUT: 3: inst780001C6 +// CHECK:STDOUT: 4: inst780001C8 +// CHECK:STDOUT: 5: inst780001C5 +// CHECK:STDOUT: 6: inst780001C2 +// CHECK:STDOUT: 7: inst780001C4 // CHECK:STDOUT: inst_block78000070: -// CHECK:STDOUT: 0: inst78000198 +// CHECK:STDOUT: 0: inst780001AE // CHECK:STDOUT: inst_block78000071: -// CHECK:STDOUT: 0: inst78000198 +// CHECK:STDOUT: 0: inst780001AE // CHECK:STDOUT: inst_block78000072: -// CHECK:STDOUT: 0: inst7800019A +// CHECK:STDOUT: 0: inst780001B0 // CHECK:STDOUT: inst_block78000073: -// CHECK:STDOUT: 0: inst7800019A +// CHECK:STDOUT: 0: inst780001B0 // CHECK:STDOUT: inst_block78000074: -// CHECK:STDOUT: 0: inst7800019C +// CHECK:STDOUT: 0: inst780001B2 // CHECK:STDOUT: inst_block78000075: -// CHECK:STDOUT: 0: inst7800019C +// CHECK:STDOUT: 0: inst780001B2 // CHECK:STDOUT: inst_block78000076: -// CHECK:STDOUT: 0: inst780001B5 -// CHECK:STDOUT: 1: inst780001B6 -// CHECK:STDOUT: 2: inst780001B7 -// CHECK:STDOUT: 3: inst780001B8 -// CHECK:STDOUT: 4: inst780001B9 -// CHECK:STDOUT: 5: inst780001BA -// CHECK:STDOUT: 6: inst780001BB -// CHECK:STDOUT: 7: inst780001BC -// CHECK:STDOUT: 8: inst780001BD -// CHECK:STDOUT: 9: inst780001BE -// CHECK:STDOUT: 10: inst780001BF -// CHECK:STDOUT: 11: inst780001C0 -// CHECK:STDOUT: 12: inst780001C1 -// CHECK:STDOUT: 13: inst780001C2 -// CHECK:STDOUT: 14: inst780001C3 -// CHECK:STDOUT: 15: inst780001C4 -// CHECK:STDOUT: 16: inst780001C5 -// CHECK:STDOUT: 17: inst780001C6 -// CHECK:STDOUT: 18: inst780001C7 +// CHECK:STDOUT: 0: inst780001CB +// CHECK:STDOUT: 1: inst780001CC +// CHECK:STDOUT: 2: inst780001CD +// CHECK:STDOUT: 3: inst780001CE +// CHECK:STDOUT: 4: inst780001CF +// CHECK:STDOUT: 5: inst780001D0 +// CHECK:STDOUT: 6: inst780001D1 +// CHECK:STDOUT: 7: inst780001D2 +// CHECK:STDOUT: 8: inst780001D3 +// CHECK:STDOUT: 9: inst780001D4 +// CHECK:STDOUT: 10: inst780001D5 +// CHECK:STDOUT: 11: inst780001D6 +// CHECK:STDOUT: 12: inst780001D7 +// CHECK:STDOUT: 13: inst780001D8 +// CHECK:STDOUT: 14: inst780001D9 +// CHECK:STDOUT: 15: inst780001DA +// CHECK:STDOUT: 16: inst780001DB +// CHECK:STDOUT: 17: inst780001DC +// CHECK:STDOUT: 18: inst780001DD // CHECK:STDOUT: inst_block78000077: // CHECK:STDOUT: 0: inst7800008A // CHECK:STDOUT: 1: inst7800008B -// CHECK:STDOUT: 2: inst7800011C -// CHECK:STDOUT: 3: inst7800011D -// CHECK:STDOUT: 4: inst78000178 -// CHECK:STDOUT: 5: inst78000179 -// CHECK:STDOUT: 6: inst7800017A -// CHECK:STDOUT: 7: inst78000181 -// CHECK:STDOUT: 8: inst78000188 -// CHECK:STDOUT: 9: inst7800018A -// CHECK:STDOUT: 10: inst7800018C -// CHECK:STDOUT: 11: inst78000182 -// CHECK:STDOUT: 12: inst78000187 +// CHECK:STDOUT: 2: inst7800012E +// CHECK:STDOUT: 3: inst7800012F +// CHECK:STDOUT: 4: inst7800018D +// CHECK:STDOUT: 5: inst7800018E +// CHECK:STDOUT: 6: inst7800018F +// CHECK:STDOUT: 7: inst78000197 +// CHECK:STDOUT: 8: inst7800019E +// CHECK:STDOUT: 9: inst780001A0 +// CHECK:STDOUT: 10: inst780001A2 +// CHECK:STDOUT: 11: inst78000198 +// CHECK:STDOUT: 12: inst7800019D // CHECK:STDOUT: inst_block78000078: -// CHECK:STDOUT: 0: inst780001CA -// CHECK:STDOUT: 1: inst780001CB -// CHECK:STDOUT: 2: inst780001CC +// CHECK:STDOUT: 0: inst780001E0 +// CHECK:STDOUT: 1: inst780001E1 +// CHECK:STDOUT: 2: inst780001E2 // CHECK:STDOUT: inst_block78000079: -// CHECK:STDOUT: 0: inst780001CF -// CHECK:STDOUT: 1: inst780001D0 -// CHECK:STDOUT: 2: inst780001D1 +// CHECK:STDOUT: 0: inst780001E6 +// CHECK:STDOUT: 1: inst780001E7 +// CHECK:STDOUT: 2: inst780001E8 // CHECK:STDOUT: inst_block7800007A: -// CHECK:STDOUT: 0: inst780001D3 -// CHECK:STDOUT: 1: inst780001D5 -// CHECK:STDOUT: 2: inst780001D7 +// CHECK:STDOUT: 0: inst780001EA +// CHECK:STDOUT: 1: inst780001EC +// CHECK:STDOUT: 2: inst780001EE // CHECK:STDOUT: inst_block7800007B: -// CHECK:STDOUT: 0: inst780001D9 -// CHECK:STDOUT: 1: inst780001DA -// CHECK:STDOUT: 2: inst780001DB +// CHECK:STDOUT: 0: inst780001F0 +// CHECK:STDOUT: 1: inst780001F1 +// CHECK:STDOUT: 2: inst780001F2 // CHECK:STDOUT: inst_block7800007C: -// CHECK:STDOUT: 0: inst780001D3 -// CHECK:STDOUT: 1: inst780001D5 -// CHECK:STDOUT: 2: inst780001D7 +// CHECK:STDOUT: 0: inst780001EA +// CHECK:STDOUT: 1: inst780001EC +// CHECK:STDOUT: 2: inst780001EE // CHECK:STDOUT: inst_block7800007D: -// CHECK:STDOUT: 0: inst780001D2 -// CHECK:STDOUT: 1: inst780001D3 -// CHECK:STDOUT: 2: inst780001D4 -// CHECK:STDOUT: 3: inst780001D5 -// CHECK:STDOUT: 4: inst780001D6 -// CHECK:STDOUT: 5: inst780001D7 -// CHECK:STDOUT: 6: inst780001D8 -// CHECK:STDOUT: 7: inst780001D9 -// CHECK:STDOUT: 8: inst780001DA -// CHECK:STDOUT: 9: inst780001DB -// CHECK:STDOUT: 10: inst780001DC -// CHECK:STDOUT: 11: inst780001DD +// CHECK:STDOUT: 0: inst780001E9 +// CHECK:STDOUT: 1: inst780001EA +// CHECK:STDOUT: 2: inst780001EB +// CHECK:STDOUT: 3: inst780001EC +// CHECK:STDOUT: 4: inst780001ED +// CHECK:STDOUT: 5: inst780001EE +// CHECK:STDOUT: 6: inst780001EF +// CHECK:STDOUT: 7: inst780001F0 +// CHECK:STDOUT: 8: inst780001F1 +// CHECK:STDOUT: 9: inst780001F2 +// CHECK:STDOUT: 10: inst780001F3 +// CHECK:STDOUT: 11: inst780001F4 +// CHECK:STDOUT: 12: inst780001F5 // CHECK:STDOUT: inst_block7800007E: -// CHECK:STDOUT: 0: inst780001D3 -// CHECK:STDOUT: 1: inst780001D5 -// CHECK:STDOUT: 2: inst780001D7 +// CHECK:STDOUT: 0: inst780001EA +// CHECK:STDOUT: 1: inst780001EC +// CHECK:STDOUT: 2: inst780001EE // CHECK:STDOUT: inst_block7800007F: -// CHECK:STDOUT: 0: inst780001DE -// CHECK:STDOUT: 1: inst780001DF +// CHECK:STDOUT: 0: inst780001F6 +// CHECK:STDOUT: 1: inst780001F7 // CHECK:STDOUT: inst_block78000080: -// CHECK:STDOUT: 0: inst780000F2 -// CHECK:STDOUT: 1: inst780000F3 +// CHECK:STDOUT: 0: inst78000100 +// CHECK:STDOUT: 1: inst78000101 // CHECK:STDOUT: 2: inst7800004C // CHECK:STDOUT: inst_block78000081: // CHECK:STDOUT: 0: inst7800001C // CHECK:STDOUT: inst_block78000082: -// CHECK:STDOUT: 0: inst780001E0 +// CHECK:STDOUT: 0: inst780001F8 // CHECK:STDOUT: inst_block78000083: -// CHECK:STDOUT: 0: inst780001E4 +// CHECK:STDOUT: 0: inst780001FC // CHECK:STDOUT: inst_block78000084: -// CHECK:STDOUT: 0: inst780001E4 -// CHECK:STDOUT: 1: inst780001E5 -// CHECK:STDOUT: 2: inst780001E6 +// CHECK:STDOUT: 0: inst780001FC +// CHECK:STDOUT: 1: inst780001FD +// CHECK:STDOUT: 2: inst780001FE // CHECK:STDOUT: inst_block78000085: -// CHECK:STDOUT: 0: inst780001EA +// CHECK:STDOUT: 0: inst78000202 // CHECK:STDOUT: inst_block78000086: -// CHECK:STDOUT: 0: inst780001EB +// CHECK:STDOUT: 0: inst78000203 // CHECK:STDOUT: inst_block78000087: -// CHECK:STDOUT: 0: inst780001E4 +// CHECK:STDOUT: 0: inst780001FC // CHECK:STDOUT: 1: inst7800001F // CHECK:STDOUT: 2: inst78000021 -// CHECK:STDOUT: 3: inst780000F7 -// CHECK:STDOUT: 4: inst780000F9 -// CHECK:STDOUT: 5: inst780000FB -// CHECK:STDOUT: 6: inst780000F4 -// CHECK:STDOUT: 7: inst780000F6 +// CHECK:STDOUT: 3: inst78000105 +// CHECK:STDOUT: 4: inst78000107 +// CHECK:STDOUT: 5: inst78000109 +// CHECK:STDOUT: 6: inst78000102 +// CHECK:STDOUT: 7: inst78000104 // CHECK:STDOUT: inst_block78000088: -// CHECK:STDOUT: 0: inst780001EB +// CHECK:STDOUT: 0: inst78000203 // CHECK:STDOUT: inst_block78000089: // CHECK:STDOUT: 0: inst78000052 // CHECK:STDOUT: inst_block7800008A: -// CHECK:STDOUT: 0: inst780001FD -// CHECK:STDOUT: 1: inst78000201 +// CHECK:STDOUT: 0: inst78000215 +// CHECK:STDOUT: 1: inst78000219 // CHECK:STDOUT: inst_block7800008B: // CHECK:STDOUT: 0: inst7800004D // CHECK:STDOUT: 1: inst78000051 -// CHECK:STDOUT: 2: inst780001E3 -// CHECK:STDOUT: 3: inst780001EA -// CHECK:STDOUT: 4: inst780001EB -// CHECK:STDOUT: 5: inst780001EC -// CHECK:STDOUT: 6: inst780001ED -// CHECK:STDOUT: 7: inst780001EE -// CHECK:STDOUT: 8: inst780001FA +// CHECK:STDOUT: 2: inst780001FB +// CHECK:STDOUT: 3: inst78000202 +// CHECK:STDOUT: 4: inst78000203 +// CHECK:STDOUT: 5: inst78000204 +// CHECK:STDOUT: 6: inst78000205 +// CHECK:STDOUT: 7: inst78000206 +// CHECK:STDOUT: 8: inst78000212 // CHECK:STDOUT: inst_block7800008C: // CHECK:STDOUT: 0: instF // CHECK:STDOUT: 1: inst78000010 diff --git a/toolchain/check/testdata/class/access/access_modifers.carbon b/toolchain/check/testdata/class/access/access_modifers.carbon index 9c7cb01e40a8..a325b31ee843 100644 --- a/toolchain/check/testdata/class/access/access_modifers.carbon +++ b/toolchain/check/testdata/class/access/access_modifers.carbon @@ -177,7 +177,7 @@ class A { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f6c: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.c9d: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -255,7 +255,7 @@ class A { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -431,7 +431,7 @@ class A { // CHECK:STDOUT: %pattern_type.f70: type = pattern_type %Circle [concrete] // CHECK:STDOUT: %self.param_patt.769: %pattern_type.f70 = value_param_pattern [concrete] // CHECK:STDOUT: %self.patt.cfb: %pattern_type.f70 = at_binding_pattern self, %self.param_patt.769 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Circle.GetRadius.type: type = fn_type @Circle.GetRadius [concrete] @@ -506,7 +506,7 @@ class A { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc7: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc7: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %Circle = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] // CHECK:STDOUT: %self: %Circle = wrapper_binding self, %self.param @@ -518,7 +518,7 @@ class A { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -529,7 +529,7 @@ class A { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %Circle = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] // CHECK:STDOUT: %self: %Circle = wrapper_binding self, %self.param diff --git a/toolchain/check/testdata/class/access/inheritance_access.carbon b/toolchain/check/testdata/class/access/inheritance_access.carbon index 439a44149799..ef0290d5043c 100644 --- a/toolchain/check/testdata/class/access/inheritance_access.carbon +++ b/toolchain/check/testdata/class/access/inheritance_access.carbon @@ -590,7 +590,7 @@ class B { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -667,7 +667,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc6: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -689,7 +689,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc14: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc14: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -698,7 +698,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc18: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1052,7 +1052,7 @@ class B { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_86.bd3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_86.bd3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -1150,7 +1150,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1298,7 +1298,7 @@ class B { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -1413,7 +1413,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1424,7 +1424,7 @@ class B { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc36: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc36: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %B = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [concrete = constants.%B] // CHECK:STDOUT: %self: %B = wrapper_binding self, %self.param diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 875d4cc13e54..2c1fba9a80d6 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -42,7 +42,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] @@ -115,7 +115,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc25_23 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc25_23: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32.loc25_23 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32.loc25_23 [concrete = constants.%.795f] // CHECK:STDOUT: %n.param.loc25: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc25_15: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %n.loc25: %i32 = wrapper_binding n, %n.param.loc25 @@ -127,7 +127,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc29: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc29: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -141,7 +141,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc16_19 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc16_19: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32.loc16_19 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32.loc16_19 [concrete = constants.%.795f] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc16_11: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %n: %i32 = wrapper_binding n, %n.param @@ -155,7 +155,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc25_23 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc20_19: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32.loc20_19 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32.loc20_19 [concrete = constants.%.795f] // CHECK:STDOUT: %n.param.loc20: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc20_11: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %n.loc20: %i32 = wrapper_binding n, %n.param.loc20 diff --git a/toolchain/check/testdata/class/field/field_initializer.carbon b/toolchain/check/testdata/class/field/field_initializer.carbon index eb4a6960a77d..a8ae14686a74 100644 --- a/toolchain/check/testdata/class/field/field_initializer.carbon +++ b/toolchain/check/testdata/class/field/field_initializer.carbon @@ -133,7 +133,7 @@ var C: Class = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0, initializer = inst64000106 [concrete] +// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0, initializer = inst6400010D [concrete] // CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff] // CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, 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] diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index 4818d384d435..e9d604593a9b 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -497,7 +497,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // 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 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] @@ -542,7 +542,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc12: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc12: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %Adapter = value_param call_param0 // CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, file.%Adapter.decl [concrete = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = wrapper_binding a, %a.param @@ -766,7 +766,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // 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 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete] @@ -812,7 +812,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc6: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %Adapter = value_param call_param0 // CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%Main.Adapter [concrete = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = wrapper_binding a, %a.param diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 626580fe86e5..02de1bc8af88 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -107,7 +107,7 @@ class Class(U: type) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass.bae, %i32 [symbolic] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] @@ -216,7 +216,7 @@ class Class(U: type) { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8_13: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8_13: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index c268076521d6..9a4bb92c03f1 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -99,7 +99,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -200,7 +200,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc12 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc12: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc12: Core.Form = init_form %i32.loc12 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc12: Core.Form = init_form %i32.loc12 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -492,6 +492,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.assoc_type.b6b: type = assoc_entity_type @Inner, @Inner(%T) [symbolic] // CHECK:STDOUT: %assoc0.6dc: %Inner.assoc_type.b6b = assoc_entity element0, @Inner.WithSelf.%Inner.WithSelf.F.decl [symbolic] // CHECK:STDOUT: %C.7d7: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %.229: = impl_self_witness %C.7d7, @Inner, @Inner(%T) [symbolic] // CHECK:STDOUT: %Inner.impl_witness.d0a: = impl_witness @C.as.Inner.impl.%Inner.impl_witness_table, @C.as.Inner.impl(%T) [symbolic] // CHECK:STDOUT: %require_complete.fcc: = require_complete_type %Inner.type.84b [symbolic] // CHECK:STDOUT: %pattern_type.6fd: type = pattern_type %C.7d7 [symbolic] @@ -522,6 +523,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Outer.e7c: type = class_type @Outer, @Outer(%i32) [concrete] // CHECK:STDOUT: %Inner.type.5cc: type = facet_type <@Inner, @Inner(%i32)> [concrete] // CHECK:STDOUT: %C.b7f: type = class_type @C, @C(%i32) [concrete] +// CHECK:STDOUT: %.b97: = impl_self_witness %D, @Inner, @Inner(%i32) [concrete] // CHECK:STDOUT: %Inner.impl_witness.8fa: = impl_witness @D.as.Inner.impl.%Inner.impl_witness_table [concrete] // CHECK:STDOUT: %Self.8b6: %Inner.type.5cc = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Inner.WithSelf.F.type.62d: type = fn_type @Inner.WithSelf.F, @Inner.WithSelf(%i32, %Self.656) [symbolic] @@ -549,6 +551,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %c.var_patt: %pattern_type.9d0 = var_pattern %c.patt [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C.b7f = struct_value () [concrete] +// CHECK:STDOUT: %.38a: = impl_self_witness %C.b7f, @Inner, @Inner(%i32) [concrete] // CHECK:STDOUT: %Inner.impl_witness.cdc: = impl_witness @C.as.Inner.impl.%Inner.impl_witness_table, @C.as.Inner.impl(%i32) [concrete] // CHECK:STDOUT: %complete_type.11e: = complete_type_witness %Inner.type.5cc [concrete] // CHECK:STDOUT: %C.as.Inner.impl.F.type.237: type = fn_type @C.as.Inner.impl.F, @C.as.Inner.impl(%i32) [concrete] @@ -656,6 +659,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.7d7)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.84b)] +// CHECK:STDOUT: %.loc10_19: = impl_self_witness %C, @Inner, @Inner(%T) [symbolic = %.loc10_19 (constants.%.229)] // CHECK:STDOUT: %Inner.impl_witness.loc10_19.2: = impl_witness %Inner.impl_witness_table, @C.as.Inner.impl(%T) [symbolic = %Inner.impl_witness.loc10_19.2 (constants.%Inner.impl_witness.d0a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -747,9 +751,10 @@ fn Test() -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: impl_decl @C.as.Inner.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C.7d7 [symbolic = %C (constants.%C.7d7)] -// CHECK:STDOUT: %.loc10: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.type (constants.%Inner.type.84b)] -// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc10 [symbolic = %Inner.type (constants.%Inner.type.84b)] +// CHECK:STDOUT: %.loc10_13: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.type (constants.%Inner.type.84b)] +// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc10_13 [symbolic = %Inner.type (constants.%Inner.type.84b)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C.as.Inner.impl.%Self.ref, @Inner, @Inner(constants.%T) [symbolic = @C.as.Inner.impl.%.loc10_19 (constants.%.229)] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -770,6 +775,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %.loc17: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%i32) [concrete = constants.%Inner.type.5cc] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc17 [concrete = constants.%Inner.type.5cc] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @D.as.Inner.impl.%Self.ref, @Inner, @Inner(constants.%i32) [concrete = constants.%.b97] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -934,6 +940,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.7d7 // CHECK:STDOUT: %Inner.type => constants.%Inner.type.84b +// CHECK:STDOUT: %.loc10_19 => constants.%.229 // CHECK:STDOUT: %Inner.impl_witness.loc10_19.2 => constants.%Inner.impl_witness.d0a // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1064,6 +1071,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %C => constants.%C.b7f // CHECK:STDOUT: %Inner.type => constants.%Inner.type.5cc +// CHECK:STDOUT: %.loc10_19 => constants.%.38a // CHECK:STDOUT: %Inner.impl_witness.loc10_19.2 => constants.%Inner.impl_witness.cdc // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/class/inheritance/self_conversion.carbon b/toolchain/check/testdata/class/inheritance/self_conversion.carbon index 017acdb8e62d..a4ffe3e4a97f 100644 --- a/toolchain/check/testdata/class/inheritance/self_conversion.carbon +++ b/toolchain/check/testdata/class/inheritance/self_conversion.carbon @@ -55,7 +55,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %pattern_type.912: type = pattern_type %Base [concrete] // CHECK:STDOUT: %self.param_patt.0db: %pattern_type.912 = value_param_pattern [concrete] // CHECK:STDOUT: %self.patt.97c: %pattern_type.912 = at_binding_pattern self, %self.param_patt.0db [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Derived.SelfBase.type: type = fn_type @Derived.SelfBase [concrete] @@ -135,7 +135,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc26 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc26: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc26: Core.Form = init_form %i32.loc26 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc26: Core.Form = init_form %i32.loc26 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param.loc26: %Base = value_param call_param0 // CHECK:STDOUT: %Base.ref.loc26: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %self.loc26: %Base = wrapper_binding self, %self.param.loc26 @@ -157,7 +157,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc34_25: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc34_25: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %p.param: %ptr.64c = value_param call_param0 // CHECK:STDOUT: %.loc34_19: type = splice_block %ptr [concrete = constants.%ptr.64c] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] @@ -190,7 +190,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc26 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc22: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22: Core.Form = init_form %i32.loc22 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc22: Core.Form = init_form %i32.loc22 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param.loc22: %Base = value_param call_param0 // CHECK:STDOUT: %Base.ref.loc22: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %self.loc22: %Base = wrapper_binding self, %self.param.loc22 diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index e4f4b9b8cc40..469e87cd434e 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -37,7 +37,7 @@ class A { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -127,7 +127,7 @@ class A { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/method/method.carbon b/toolchain/check/testdata/class/method/method.carbon index 46b0f401461e..c9ce93904657 100644 --- a/toolchain/check/testdata/class/method/method.carbon +++ b/toolchain/check/testdata/class/method/method.carbon @@ -75,7 +75,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -211,7 +211,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc24 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc24: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc24: Core.Form = init_form %i32.loc24 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc24: Core.Form = init_form %i32.loc24 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param.loc24: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc24: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc24: %Class = wrapper_binding self, %self.param.loc24 @@ -225,7 +225,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc28: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc28: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %c.param: %Class = value_param call_param0 // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: %Class = wrapper_binding c, %c.param @@ -239,7 +239,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc34: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc34: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %c.param: %Class = value_param call_param0 // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: %Class = wrapper_binding c, %c.param @@ -251,7 +251,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc38: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc38: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -260,7 +260,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc42: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc42: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -271,7 +271,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc47_38: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc47_38: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %p.param: %ptr.7ee = value_param call_param0 // CHECK:STDOUT: %.loc47_32: type = splice_block %ptr [concrete = constants.%ptr.7ee] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] @@ -288,7 +288,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc51_38: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc51_38: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %p.param: %ptr.7ee = value_param call_param0 // CHECK:STDOUT: %.loc51_32: type = splice_block %ptr [concrete = constants.%ptr.7ee] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] @@ -312,7 +312,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc57: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc57: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -321,7 +321,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc61: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc61: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -335,7 +335,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc24 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32.loc16 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32.loc16 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param.loc16: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc16: %Class = wrapper_binding self, %self.param.loc16 @@ -349,7 +349,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc17: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: ref %Class = ref_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self: ref %Class = wrapper_binding self, %self.param diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index a5472fe6113e..c21b4a871497 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -30,7 +30,7 @@ class Class { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -87,7 +87,7 @@ class Class { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -96,7 +96,7 @@ class Class { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index 3ecfd82568b7..cfcadcfc408b 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -40,7 +40,7 @@ fn Run() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -114,7 +114,7 @@ fn Run() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -127,7 +127,7 @@ fn Run() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -136,7 +136,7 @@ fn Run() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index c8e59679640e..c4f980a6d567 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -394,7 +394,7 @@ fn G() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -478,7 +478,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_52: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc6_52: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc6_13: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -500,7 +500,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1075,7 +1075,7 @@ fn G() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -1163,7 +1163,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc7_52: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc7_52: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc7_13: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -1185,7 +1185,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1349,7 +1349,7 @@ fn G() { // CHECK:STDOUT: %pattern_type.f28: type = pattern_type %array_type.47c [symbolic] // CHECK:STDOUT: %a.param_patt: %pattern_type.f28 = value_param_pattern [symbolic] // CHECK:STDOUT: %a.patt.624: %pattern_type.f28 = at_binding_pattern a, %a.param_patt [symbolic] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -1423,7 +1423,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc6_40 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc6_40: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_40: Core.Form = init_form %i32.loc6_40 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc6_40: Core.Form = init_form %i32.loc6_40 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc6_9: type = splice_block %i32.loc6_9 [concrete = constants.%i32] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_9: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -1451,7 +1451,7 @@ fn G() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 60dbfe16c0ef..ebd72685ef69 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -846,7 +846,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.e30: type = pattern_type %WithNontype.40e [symbolic] // CHECK:STDOUT: %x.param_patt.12a: %pattern_type.e30 = value_param_pattern [symbolic] // CHECK:STDOUT: %x.patt.e34: %pattern_type.e30 = at_binding_pattern x, %x.param_patt.12a [symbolic] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -943,7 +943,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc6_43 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc6_43: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_43: Core.Form = init_form %i32.loc6_43 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc6_43: Core.Form = init_form %i32.loc6_43 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc6_9: type = splice_block %i32.loc6_9 [concrete = constants.%i32] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_9: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -964,7 +964,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index ead2a931c743..9a9b076769fa 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -297,7 +297,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %pattern_type.725: type = pattern_type %HasPair.72f [symbolic] // CHECK:STDOUT: %h.param_patt.cdf: %pattern_type.725 = value_param_pattern [symbolic] // CHECK:STDOUT: %h.patt.596: %pattern_type.725 = at_binding_pattern h, %h.param_patt.cdf [symbolic] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -397,7 +397,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc6_52 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc6_52: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc6_52: Core.Form = init_form %i32.loc6_52 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc6_52: Core.Form = init_form %i32.loc6_52 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc6_9: type = splice_block %i32.loc6_9 [concrete = constants.%i32] { // CHECK:STDOUT: %.Self.frozen.loc6_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_9: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -429,7 +429,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8_29: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8_29: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %h.param: %HasPair.69b = value_param call_param0 // CHECK:STDOUT: %.loc8_23.1: type = splice_block %HasPair [concrete = constants.%HasPair.69b] { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [concrete = constants.%HasPair.generic] diff --git a/toolchain/check/testdata/eval/binding.carbon b/toolchain/check/testdata/eval/binding.carbon index 32a597d0b73e..540305ca7b93 100644 --- a/toolchain/check/testdata/eval/binding.carbon +++ b/toolchain/check/testdata/eval/binding.carbon @@ -78,8 +78,8 @@ let n: array(i32, G()) = (1, 2, 3); // 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: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // 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.a23: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] diff --git a/toolchain/check/testdata/eval/call.carbon b/toolchain/check/testdata/eval/call.carbon index abedbba2f23d..1dcb12d0bf78 100644 --- a/toolchain/check/testdata/eval/call.carbon +++ b/toolchain/check/testdata/eval/call.carbon @@ -99,7 +99,7 @@ fn UseFGenerically(generic X: i32) { // CHECK:STDERR: var unused v: F(X) = {}; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~ // CHECK:STDERR: - // CHECK:STDERR: fail_todo_dependent_call_type.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Core.Destroy` in type `` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: fail_todo_dependent_call_type.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Core.Destroy` in type `` that does not implement that interface [MissingImplInMemberAccess] // CHECK:STDERR: var unused v: F(X) = {}; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~ // CHECK:STDERR: diff --git a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon index 28aa1cc2430d..a912fc49ffd0 100644 --- a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon +++ b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon @@ -66,14 +66,17 @@ fn F() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.6ee: = impl_self_witness %C, @Empty [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness @C.as.Empty.impl.%Empty.impl_witness_table [concrete] // CHECK:STDOUT: %Empty.facet: %Empty.type = facet_value %C, (%Empty.impl_witness) [concrete] +// CHECK:STDOUT: %.4e8: = impl_self_witness %C, @A [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @C.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.A.impl.AA.type: type = fn_type @C.as.A.impl.AA [concrete] // CHECK:STDOUT: %C.as.A.impl.AA: %C.as.A.impl.AA.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet.2ca: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %A.WithSelf.AA.type.624: type = fn_type @A.WithSelf.AA, @A.WithSelf(%A.facet.2ca) [concrete] // CHECK:STDOUT: %A.WithSelf.AA.879: %A.WithSelf.AA.type.624 = struct_value () [concrete] +// CHECK:STDOUT: %.827: = impl_self_witness %C, @B [concrete] // CHECK:STDOUT: %B.impl_witness: = impl_witness @C.as.B.impl.%B.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.B.impl.BB.type: type = fn_type @C.as.B.impl.BB [concrete] // CHECK:STDOUT: %C.as.B.impl.BB: %C.as.B.impl.BB.type = struct_value () [concrete] @@ -173,14 +176,17 @@ fn F() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc25: = impl_self_witness @C.as.Empty.impl.%C.ref, @Empty [concrete = constants.%.6ee] // CHECK:STDOUT: impl_decl @C.as.A.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc26: = impl_self_witness @C.as.A.impl.%C.ref, @A [concrete = constants.%.4e8] // CHECK:STDOUT: impl_decl @C.as.B.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc29: = impl_self_witness @C.as.B.impl.%C.ref, @B [concrete = constants.%.827] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %T.patt.loc33_7.1: %pattern_type.a67 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc33_7.2 (constants.%T.patt)] // CHECK:STDOUT: %t.param_patt.loc33_25.1: @G.%pattern_type (%pattern_type.653) = value_param_pattern [symbolic = %t.param_patt.loc33_25.2 (constants.%t.param_patt.4f9)] diff --git a/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon b/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon index 9f10e49f1ae0..381beda63585 100644 --- a/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon +++ b/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon @@ -31,6 +31,7 @@ fn F() { // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.629: = impl_self_witness %Goat, @Animal [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness @Goat.as.Animal.impl.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -68,6 +69,7 @@ fn F() { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @Goat.as.Animal.impl.%Goat.ref, @Animal [concrete = constants.%.629] // CHECK:STDOUT: %WalkAnimal.decl: %WalkAnimal.type = fn_decl @WalkAnimal [concrete = constants.%WalkAnimal] { // CHECK:STDOUT: %A.patt.loc20_31.1: %pattern_type = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc20_31.2 (constants.%A.patt)] // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon index 7fc7fa96ba6c..d00afd2f1f8c 100644 --- a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon @@ -84,6 +84,7 @@ fn G() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.b40: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] +// CHECK:STDOUT: %.e53: = impl_self_witness %ImplsGeneric, @Generic, @Generic(%GenericParam) [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness @ImplsGeneric.as.Generic.impl.%Generic.impl_witness_table [concrete] // CHECK:STDOUT: %Self.685: %Generic.type.b40 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Generic.WithSelf.F.type.e39: type = fn_type @Generic.WithSelf.F, @Generic.WithSelf(%GenericParam, %Self.8ea1ea.1) [symbolic] @@ -160,6 +161,7 @@ fn G() { // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.b40] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @ImplsGeneric.as.Generic.impl.%ImplsGeneric.ref, @Generic, @Generic(constants.%GenericParam) [concrete = constants.%.e53] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt.loc15_31.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_31.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc15_55.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_55.2 (constants.%U.patt.8a63c8.1)] @@ -457,6 +459,7 @@ fn G() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.b40: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] +// CHECK:STDOUT: %.e53: = impl_self_witness %ImplsGeneric, @Generic, @Generic(%GenericParam) [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness @ImplsGeneric.as.Generic.impl.%Generic.impl_witness_table [concrete] // CHECK:STDOUT: %Self.685: %Generic.type.b40 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Generic.WithSelf.F.type.e39: type = fn_type @Generic.WithSelf.F, @Generic.WithSelf(%GenericParam, %Self.8ea) [symbolic] @@ -533,6 +536,7 @@ fn G() { // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.b40] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @ImplsGeneric.as.Generic.impl.%ImplsGeneric.ref, @Generic, @Generic(constants.%GenericParam) [concrete = constants.%.e53] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt.loc15_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_23.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc15_47.1: @CallGenericMethod.%pattern_type.loc15_47 (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_47.2 (constants.%U.patt.8a6)] diff --git a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon index b70602ab0e1d..3e0297b42168 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon @@ -44,6 +44,7 @@ fn F() { // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.629: = impl_self_witness %Goat, @Animal [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness @Goat.as.Animal.impl.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -103,6 +104,7 @@ fn F() { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @Goat.as.Animal.impl.%Goat.ref, @Animal [concrete = constants.%.629] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon index e4909b17ff14..8d7757e7f76a 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon @@ -116,6 +116,7 @@ fn B() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.b40: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] +// CHECK:STDOUT: %.e53: = impl_self_witness %ImplsGeneric, @Generic, @Generic(%GenericParam) [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness @ImplsGeneric.as.Generic.impl.%Generic.impl_witness_table [concrete] // CHECK:STDOUT: %Self.685: %Generic.type.b40 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Generic.WithSelf.F.type.e39: type = fn_type @Generic.WithSelf.F, @Generic.WithSelf(%GenericParam, %Self.8ea1ea.1) [symbolic] @@ -219,6 +220,7 @@ fn B() { // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.b40] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @ImplsGeneric.as.Generic.impl.%ImplsGeneric.ref, @Generic, @Generic(constants.%GenericParam) [concrete = constants.%.e53] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt.loc15_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_23.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc15_32.1: @CallGenericMethod.%pattern_type.loc15_32 (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_32.2 (constants.%U.patt.8a6)] @@ -534,6 +536,7 @@ fn B() { // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.type.269: type = facet_type <@I, @I(%T.67d, %empty_tuple.type)> [symbolic] +// CHECK:STDOUT: %.78e: = impl_self_witness %C, @I, @I(%T.67d, %empty_tuple.type) [symbolic] // CHECK:STDOUT: %I.impl_witness.a35: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%T.67d) [symbolic] // CHECK:STDOUT: %Self.7df: %I.type.269 = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %require_complete.2dc: = require_complete_type %I.type.269 [symbolic] @@ -554,6 +557,7 @@ fn B() { // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] +// CHECK:STDOUT: %.793: = impl_self_witness %C, @I, @I(%empty_struct_type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %I.impl_witness.a7c: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %complete_type.dfa: = complete_type_witness %I.type.722 [concrete] // CHECK:STDOUT: %I.facet.831: %I.type.722 = facet_value %C, (%I.impl_witness.a7c) [concrete] @@ -617,6 +621,7 @@ fn B() { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref, @I, @I(constants.%T.67d, constants.%empty_tuple.type) [symbolic = @C.as.I.impl.%.loc7_37 (constants.%.78e)] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.bd4 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.be3)] // CHECK:STDOUT: %t.param_patt.loc9_28.1: @A.%pattern_type (%pattern_type.d7b) = value_param_pattern [symbolic = %t.param_patt.loc9_28.2 (constants.%t.param_patt.be8)] @@ -669,6 +674,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc7_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] // CHECK:STDOUT: %I.type.loc7_35.2: type = facet_type <@I, @I(%T.loc7_15.2, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_35.2 (constants.%I.type.269)] +// CHECK:STDOUT: %.loc7_37: = impl_self_witness constants.%C, @I, @I(%T.loc7_15.2, constants.%empty_tuple.type) [symbolic = %.loc7_37 (constants.%.78e)] // CHECK:STDOUT: %I.impl_witness.loc7_37.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%T.loc7_15.2) [symbolic = %I.impl_witness.loc7_37.2 (constants.%I.impl_witness.a35)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -760,6 +766,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc7_15.2 => constants.%T.67d // CHECK:STDOUT: %I.type.loc7_35.2 => constants.%I.type.269 +// CHECK:STDOUT: %.loc7_37 => constants.%.78e // CHECK:STDOUT: %I.impl_witness.loc7_37.2 => constants.%I.impl_witness.a35 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -799,6 +806,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc7_15.2 => constants.%empty_struct_type // CHECK:STDOUT: %I.type.loc7_35.2 => constants.%I.type.722 +// CHECK:STDOUT: %.loc7_37 => constants.%.793 // CHECK:STDOUT: %I.impl_witness.loc7_37.2 => constants.%I.impl_witness.a7c // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -839,6 +847,7 @@ fn B() { // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I.type.269: type = facet_type <@I, @I(%T.67d, %empty_tuple.type)> [symbolic] +// CHECK:STDOUT: %.78e: = impl_self_witness %C, @I, @I(%T.67d, %empty_tuple.type) [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%T.67d) [symbolic] // CHECK:STDOUT: %Self.7df: %I.type.269 = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %require_complete.2dc: = require_complete_type %I.type.269 [symbolic] @@ -908,6 +917,7 @@ fn B() { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref, @I, @I(constants.%T.67d, constants.%empty_tuple.type) [symbolic = @C.as.I.impl.%.loc7_37 (constants.%.78e)] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.5c6 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.c4c)] // CHECK:STDOUT: %t.param_patt.loc9_28.1: @A.%pattern_type (%pattern_type.67d) = value_param_pattern [symbolic = %t.param_patt.loc9_28.2 (constants.%t.param_patt)] @@ -960,6 +970,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc7_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] // CHECK:STDOUT: %I.type.loc7_35.2: type = facet_type <@I, @I(%T.loc7_15.2, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_35.2 (constants.%I.type.269)] +// CHECK:STDOUT: %.loc7_37: = impl_self_witness constants.%C, @I, @I(%T.loc7_15.2, constants.%empty_tuple.type) [symbolic = %.loc7_37 (constants.%.78e)] // CHECK:STDOUT: %I.impl_witness.loc7_37.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%T.loc7_15.2) [symbolic = %I.impl_witness.loc7_37.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1035,6 +1046,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc7_15.2 => constants.%T.67d // CHECK:STDOUT: %I.type.loc7_35.2 => constants.%I.type.269 +// CHECK:STDOUT: %.loc7_37 => constants.%.78e // CHECK:STDOUT: %I.impl_witness.loc7_37.2 => constants.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1092,6 +1104,7 @@ fn B() { // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.ab0: type = class_type @C, @C(%T.67d, %empty_tuple.type) [symbolic] +// CHECK:STDOUT: %.c42: = impl_self_witness %C.ab0, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%T.67d) [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.ab0, (%I.impl_witness) [symbolic] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] @@ -1158,6 +1171,7 @@ fn B() { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.loc7_30.1, @I [symbolic = @C.as.I.impl.%.loc7_37 (constants.%.c42)] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.1df)] // CHECK:STDOUT: %t.param_patt.loc9_20.1: @A.%pattern_type (%pattern_type.b3a) = value_param_pattern [symbolic = %t.param_patt.loc9_20.2 (constants.%t.param_patt)] @@ -1194,6 +1208,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc7_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] // CHECK:STDOUT: %C.loc7_30.2: type = class_type @C, @C(%T.loc7_15.2, constants.%empty_tuple.type) [symbolic = %C.loc7_30.2 (constants.%C.ab0)] +// CHECK:STDOUT: %.loc7_37: = impl_self_witness %C.loc7_30.2, @I [symbolic = %.loc7_37 (constants.%.c42)] // CHECK:STDOUT: %I.impl_witness.loc7_37.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%T.loc7_15.2) [symbolic = %I.impl_witness.loc7_37.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1280,6 +1295,7 @@ fn B() { // CHECK:STDOUT: %T.patt.loc7_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc7_15.2 => constants.%T.67d // CHECK:STDOUT: %C.loc7_30.2 => constants.%C.ab0 +// CHECK:STDOUT: %.loc7_37 => constants.%.c42 // CHECK:STDOUT: %I.impl_witness.loc7_37.2 => constants.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon b/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon index 8d52a427d25a..0dd673bc6d81 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon @@ -46,6 +46,7 @@ fn F() { // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.629: = impl_self_witness %Goat, @Animal [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness @Goat.as.Animal.impl.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -95,6 +96,7 @@ fn F() { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @Goat.as.Animal.impl.%Goat.ref, @Animal [concrete = constants.%.629] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon b/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon index 67bf64537086..8df366d4537e 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon @@ -579,6 +579,7 @@ fn CallsWithTypeExplicit(generic U: type) { // CHECK:STDOUT: %A.patt: %pattern_type.333 = symbolic_binding_pattern A, 0 [symbolic] // CHECK:STDOUT: %A: %Animal.type = symbolic_binding A, 0 [symbolic] // CHECK:STDOUT: %A.as_type: type = facet_access_type %A [symbolic] +// CHECK:STDOUT: %.2b4: = impl_self_witness %A.as_type, @Eats [symbolic] // CHECK:STDOUT: %Eats.impl_witness.e08: = impl_witness @A.as_type.as.Eats.impl.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A) [symbolic] // CHECK:STDOUT: %Eats.facet: %Eats.type = facet_value %A.as_type, (%Eats.impl_witness.e08) [symbolic] // CHECK:STDOUT: %BitAndWith.type.a06: type = generic_interface_type @BitAndWith [concrete] @@ -618,6 +619,7 @@ fn CallsWithTypeExplicit(generic U: type) { // CHECK:STDOUT: %Eats.lookup_impl_witness: = lookup_impl_witness %W, @Eats [symbolic] // CHECK:STDOUT: %Animal.lookup_impl_witness: = lookup_impl_witness %W, @Animal [symbolic] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %W.as_type, (%Animal.lookup_impl_witness) [symbolic] +// CHECK:STDOUT: %.2a6: = impl_self_witness %W.as_type, @Eats [symbolic] // CHECK:STDOUT: %Eats.impl_witness.7a5: = impl_witness @A.as_type.as.Eats.impl.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%Animal.facet) [symbolic] // CHECK:STDOUT: %.86f: require_specific_def_type = require_specific_def @A.as_type.as.Eats.impl(%Animal.facet) [symbolic] // CHECK:STDOUT: %Tame.lookup_impl_witness: = lookup_impl_witness %W, @Tame [symbolic] @@ -664,6 +666,7 @@ fn CallsWithTypeExplicit(generic U: type) { // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc7_15.1: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc7_15.2 (constants.%A)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @A.as_type.as.Eats.impl.%.loc7_25, @Eats [symbolic = @A.as_type.as.Eats.impl.%.loc7_35 (constants.%.2b4)] // CHECK:STDOUT: %FeedTame2.decl: %FeedTame2.type = fn_decl @FeedTame2 [concrete = constants.%FeedTame2] { // CHECK:STDOUT: %V.patt.loc9_15.1: %pattern_type.fbb = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc9_15.2 (constants.%V.patt)] // CHECK:STDOUT: %v.param_patt.loc9_38.1: @FeedTame2.%pattern_type (%pattern_type.7b2) = value_param_pattern [symbolic = %v.param_patt.loc9_38.2 (constants.%v.param_patt.bb4)] @@ -751,6 +754,7 @@ fn CallsWithTypeExplicit(generic U: type) { // CHECK:STDOUT: %A.patt.loc7_15.2: %pattern_type.333 = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc7_15.2 (constants.%A.patt)] // CHECK:STDOUT: %A.loc7_15.2: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc7_15.2 (constants.%A)] // CHECK:STDOUT: %A.as_type.loc7_25.2: type = facet_access_type %A.loc7_15.2 [symbolic = %A.as_type.loc7_25.2 (constants.%A.as_type)] +// CHECK:STDOUT: %.loc7_35: = impl_self_witness %A.as_type.loc7_25.2, @Eats [symbolic = %.loc7_35 (constants.%.2b4)] // CHECK:STDOUT: %Eats.impl_witness.loc7_35.2: = impl_witness %Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A.loc7_15.2) [symbolic = %Eats.impl_witness.loc7_35.2 (constants.%Eats.impl_witness.e08)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -830,6 +834,7 @@ fn CallsWithTypeExplicit(generic U: type) { // CHECK:STDOUT: %A.patt.loc7_15.2 => constants.%A.patt // CHECK:STDOUT: %A.loc7_15.2 => constants.%A // CHECK:STDOUT: %A.as_type.loc7_25.2 => constants.%A.as_type +// CHECK:STDOUT: %.loc7_35 => constants.%.2b4 // CHECK:STDOUT: %Eats.impl_witness.loc7_35.2 => constants.%Eats.impl_witness.e08 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -859,6 +864,7 @@ fn CallsWithTypeExplicit(generic U: type) { // CHECK:STDOUT: %A.patt.loc7_15.2 => constants.%A.patt // CHECK:STDOUT: %A.loc7_15.2 => constants.%Animal.facet // CHECK:STDOUT: %A.as_type.loc7_25.2 => constants.%W.as_type +// CHECK:STDOUT: %.loc7_35 => constants.%.2a6 // CHECK:STDOUT: %Eats.impl_witness.loc7_35.2 => constants.%Eats.impl_witness.7a5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon index fcd5ce0a5e8e..bade648652a7 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon @@ -34,6 +34,7 @@ fn HandleAnimal[T: Animal](a: T) { Feed(a); } // CHECK:STDOUT: %A.patt: %pattern_type.333 = symbolic_binding_pattern A, 0 [symbolic] // CHECK:STDOUT: %A: %Animal.type = symbolic_binding A, 0 [symbolic] // CHECK:STDOUT: %A.as_type: type = facet_access_type %A [symbolic] +// CHECK:STDOUT: %.2b411f.1: = impl_self_witness %A.as_type, @Eats [symbolic] // CHECK:STDOUT: %Eats.impl_witness.e0811c.1: = impl_witness @A.as_type.as.Eats.impl.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A) [symbolic] // CHECK:STDOUT: %Eats.facet.f93: %Eats.type = facet_value %A.as_type, (%Eats.impl_witness.e0811c.1) [symbolic] // CHECK:STDOUT: %pattern_type.880: type = pattern_type %Eats.type [concrete] @@ -57,6 +58,7 @@ fn HandleAnimal[T: Animal](a: T) { Feed(a); } // CHECK:STDOUT: %HandleAnimal: %HandleAnimal.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.db4: = require_complete_type %T.as_type.01d [symbolic] // CHECK:STDOUT: %Eats.lookup_impl_witness: = lookup_impl_witness %T.443, @Eats [symbolic] +// CHECK:STDOUT: %.2b411f.2: = impl_self_witness %T.as_type.01d, @Eats [symbolic] // CHECK:STDOUT: %Eats.impl_witness.e0811c.2: = impl_witness @A.as_type.as.Eats.impl.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%T.443) [symbolic] // CHECK:STDOUT: %.2fe: require_specific_def_type = require_specific_def @A.as_type.as.Eats.impl(%T.443) [symbolic] // CHECK:STDOUT: %Eats.facet.934: %Eats.type = facet_value %T.as_type.01d, (%Eats.lookup_impl_witness) [symbolic] @@ -96,6 +98,7 @@ fn HandleAnimal[T: Animal](a: T) { Feed(a); } // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc18_15.1: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc18_15.2 (constants.%A)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @A.as_type.as.Eats.impl.%.loc18_25, @Eats [symbolic = @A.as_type.as.Eats.impl.%.loc18_35 (constants.%.2b411f.1)] // CHECK:STDOUT: %Feed.decl: %Feed.type = fn_decl @Feed [concrete = constants.%Feed] { // CHECK:STDOUT: %T.patt.loc20_10.1: %pattern_type.880 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_10.2 (constants.%T.patt.9e8)] // CHECK:STDOUT: %e.param_patt.loc20_26.1: @Feed.%pattern_type (%pattern_type.aed) = value_param_pattern [symbolic = %e.param_patt.loc20_26.2 (constants.%e.param_patt.0be)] @@ -160,6 +163,7 @@ fn HandleAnimal[T: Animal](a: T) { Feed(a); } // CHECK:STDOUT: %A.patt.loc18_15.2: %pattern_type.333 = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc18_15.2 (constants.%A.patt)] // CHECK:STDOUT: %A.loc18_15.2: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc18_15.2 (constants.%A)] // CHECK:STDOUT: %A.as_type.loc18_25.2: type = facet_access_type %A.loc18_15.2 [symbolic = %A.as_type.loc18_25.2 (constants.%A.as_type)] +// CHECK:STDOUT: %.loc18_35: = impl_self_witness %A.as_type.loc18_25.2, @Eats [symbolic = %.loc18_35 (constants.%.2b411f.1)] // CHECK:STDOUT: %Eats.impl_witness.loc18_35.2: = impl_witness %Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A.loc18_15.2) [symbolic = %Eats.impl_witness.loc18_35.2 (constants.%Eats.impl_witness.e0811c.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -232,6 +236,7 @@ fn HandleAnimal[T: Animal](a: T) { Feed(a); } // CHECK:STDOUT: %A.patt.loc18_15.2 => constants.%A.patt // CHECK:STDOUT: %A.loc18_15.2 => constants.%A // CHECK:STDOUT: %A.as_type.loc18_25.2 => constants.%A.as_type +// CHECK:STDOUT: %.loc18_35 => constants.%.2b411f.1 // CHECK:STDOUT: %Eats.impl_witness.loc18_35.2 => constants.%Eats.impl_witness.e0811c.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -261,6 +266,7 @@ fn HandleAnimal[T: Animal](a: T) { Feed(a); } // CHECK:STDOUT: %A.patt.loc18_15.2 => constants.%A.patt // CHECK:STDOUT: %A.loc18_15.2 => constants.%T.443 // CHECK:STDOUT: %A.as_type.loc18_25.2 => constants.%T.as_type.01d +// CHECK:STDOUT: %.loc18_35 => constants.%.2b411f.2 // CHECK:STDOUT: %Eats.impl_witness.loc18_35.2 => constants.%Eats.impl_witness.e0811c.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon index b1a59cf0c4df..92a9eb5efe01 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon @@ -43,6 +43,7 @@ fn F() { // CHECK:STDOUT: %Grass: type = class_type @Grass [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.54a: = impl_self_witness %Grass, @Edible [concrete] // CHECK:STDOUT: %Edible.impl_witness: = impl_witness @Grass.as.Edible.impl.%Edible.impl_witness_table [concrete] // CHECK:STDOUT: %Edible.facet: %Edible.type = facet_value %Grass, (%Edible.impl_witness) [concrete] // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] @@ -66,11 +67,13 @@ fn F() { // CHECK:STDOUT: %T.as_type.01d: type = facet_access_type %T.443 [symbolic] // CHECK:STDOUT: %U.as_type: type = facet_access_type %U [symbolic] // CHECK:STDOUT: %Eats.type.ceea62.1: type = facet_type <@Eats, @Eats(%U.as_type)> [symbolic] +// CHECK:STDOUT: %.23c3b4.1: = impl_self_witness %T.as_type.01d, @Eats, @Eats(%U.as_type) [symbolic] // CHECK:STDOUT: %Eats.impl_witness.4ca0a7.1: = impl_witness @T.as_type.as.Eats.impl.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%T.443, %U) [symbolic] // CHECK:STDOUT: %Self.e18: %Eats.type.ceea62.1 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %require_complete.54fb7e.1: = require_complete_type %Eats.type.ceea62.1 [symbolic] // CHECK:STDOUT: %Eats.facet.509: %Eats.type.ceea62.1 = facet_value %T.as_type.01d, (%Eats.impl_witness.4ca0a7.1) [symbolic] // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] +// CHECK:STDOUT: %.629: = impl_self_witness %Goat, @Animal [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness @Goat.as.Animal.impl.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %Food.patt.bbd: %pattern_type.e90e = symbolic_binding_pattern Food, 0 [symbolic] @@ -110,6 +113,7 @@ fn F() { // CHECK:STDOUT: %require_complete.3cc: = require_complete_type %Food.as_type.24e [symbolic] // CHECK:STDOUT: %Eats.type.ceea62.2: type = facet_type <@Eats, @Eats(%Food.as_type.24e)> [symbolic] // CHECK:STDOUT: %Eats.lookup_impl_witness: = lookup_impl_witness %A, @Eats, @Eats(%Food.as_type.24e) [symbolic] +// CHECK:STDOUT: %.23c3b4.2: = impl_self_witness %A.as_type, @Eats, @Eats(%Food.as_type.24e) [symbolic] // CHECK:STDOUT: %Eats.impl_witness.4ca0a7.2: = impl_witness @T.as_type.as.Eats.impl.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%A, %Food.5f8) [symbolic] // CHECK:STDOUT: %require_complete.54fb7e.2: = require_complete_type %Eats.type.ceea62.2 [symbolic] // CHECK:STDOUT: %.86d: require_specific_def_type = require_specific_def @T.as_type.as.Eats.impl(%A, %Food.5f8) [symbolic] @@ -142,6 +146,7 @@ fn F() { // CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.bound.115: = bound_method %.4ea, %Destroy.Op.1a2547.3 [concrete] // CHECK:STDOUT: %Eats.type.682: type = facet_type <@Eats, @Eats(%Grass)> [concrete] +// CHECK:STDOUT: %.6da: = impl_self_witness %Goat, @Eats, @Eats(%Grass) [concrete] // CHECK:STDOUT: %Eats.impl_witness.fd5: = impl_witness @T.as_type.as.Eats.impl.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%Animal.facet, %Edible.facet) [concrete] // CHECK:STDOUT: %Self.3ec: %Eats.type.682 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %complete_type.70f: = complete_type_witness %Eats.type.682 [concrete] @@ -183,6 +188,7 @@ fn F() { // CHECK:STDOUT: %Grass.ref: type = name_ref Grass, file.%Grass.decl [concrete = constants.%Grass] // CHECK:STDOUT: %Edible.ref: type = name_ref Edible, file.%Edible.decl [concrete = constants.%Edible.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @Grass.as.Edible.impl.%Grass.ref, @Edible [concrete = constants.%.54a] // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} // CHECK:STDOUT: %Eats.decl: %Eats.type.8ef = interface_decl @Eats [concrete = constants.%Eats.generic] { // CHECK:STDOUT: %Food.patt.loc21_20.1: %pattern_type.98f = symbolic_binding_pattern Food, 0 [symbolic = %Food.patt.loc21_20.2 (constants.%Food.patt.d47)] @@ -216,11 +222,13 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc26_26.1: %Edible.type = symbolic_binding U, 1 [symbolic = %U.loc26_26.2 (constants.%U)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc26: = impl_self_witness @T.as_type.as.Eats.impl.%.loc26_36, @Eats, @Eats(constants.%U.as_type) [symbolic = @T.as_type.as.Eats.impl.%.loc26_49 (constants.%.23c3b4.1)] // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} // CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc29: = impl_self_witness @Goat.as.Animal.impl.%Goat.ref, @Animal [concrete = constants.%.629] // CHECK:STDOUT: %Feed.decl: %Feed.type = fn_decl @Feed [concrete = constants.%Feed] { // CHECK:STDOUT: %Food.patt.loc31_13.1: %pattern_type.e90e = symbolic_binding_pattern Food, 0 [symbolic = %Food.patt.loc31_13.2 (constants.%Food.patt.bbd)] // CHECK:STDOUT: %T.patt.loc31_24.1: @Feed.%pattern_type.loc31_24 (%pattern_type.560) = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc31_24.2 (constants.%T.patt.02f)] @@ -353,6 +361,7 @@ fn F() { // CHECK:STDOUT: %T.as_type.loc26_36.2: type = facet_access_type %T.loc26_15.2 [symbolic = %T.as_type.loc26_36.2 (constants.%T.as_type.01d)] // CHECK:STDOUT: %U.as_type.loc26_47.2: type = facet_access_type %U.loc26_26.2 [symbolic = %U.as_type.loc26_47.2 (constants.%U.as_type)] // CHECK:STDOUT: %Eats.type.loc26_47.2: type = facet_type <@Eats, @Eats(%U.as_type.loc26_47.2)> [symbolic = %Eats.type.loc26_47.2 (constants.%Eats.type.ceea62.1)] +// CHECK:STDOUT: %.loc26_49: = impl_self_witness %T.as_type.loc26_36.2, @Eats, @Eats(%U.as_type.loc26_47.2) [symbolic = %.loc26_49 (constants.%.23c3b4.1)] // CHECK:STDOUT: %Eats.impl_witness.loc26_49.2: = impl_witness %Eats.impl_witness_table, @T.as_type.as.Eats.impl(%T.loc26_15.2, %U.loc26_26.2) [symbolic = %Eats.impl_witness.loc26_49.2 (constants.%Eats.impl_witness.4ca0a7.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -537,6 +546,7 @@ fn F() { // CHECK:STDOUT: %T.as_type.loc26_36.2 => constants.%T.as_type.01d // CHECK:STDOUT: %U.as_type.loc26_47.2 => constants.%U.as_type // CHECK:STDOUT: %Eats.type.loc26_47.2 => constants.%Eats.type.ceea62.1 +// CHECK:STDOUT: %.loc26_49 => constants.%.23c3b4.1 // CHECK:STDOUT: %Eats.impl_witness.loc26_49.2 => constants.%Eats.impl_witness.4ca0a7.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -610,6 +620,7 @@ fn F() { // CHECK:STDOUT: %T.as_type.loc26_36.2 => constants.%A.as_type // CHECK:STDOUT: %U.as_type.loc26_47.2 => constants.%Food.as_type.24e // CHECK:STDOUT: %Eats.type.loc26_47.2 => constants.%Eats.type.ceea62.2 +// CHECK:STDOUT: %.loc26_49 => constants.%.23c3b4.2 // CHECK:STDOUT: %Eats.impl_witness.loc26_49.2 => constants.%Eats.impl_witness.4ca0a7.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -669,6 +680,7 @@ fn F() { // CHECK:STDOUT: %T.as_type.loc26_36.2 => constants.%Goat // CHECK:STDOUT: %U.as_type.loc26_47.2 => constants.%Grass // CHECK:STDOUT: %Eats.type.loc26_47.2 => constants.%Eats.type.682 +// CHECK:STDOUT: %.loc26_49 => constants.%.6da // CHECK:STDOUT: %Eats.impl_witness.loc26_49.2 => constants.%Eats.impl_witness.fd5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon index 07db4e8554dd..93a21a3d7f0e 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon @@ -50,6 +50,7 @@ fn F() { // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.629: = impl_self_witness %Goat, @Animal [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness @Goat.as.Animal.impl.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -130,6 +131,7 @@ fn F() { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @Goat.as.Animal.impl.%Goat.ref, @Animal [concrete = constants.%.629] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_interface.carbon b/toolchain/check/testdata/facet/convert_interface.carbon index 80c9c647aa66..9a15cbedfede 100644 --- a/toolchain/check/testdata/facet/convert_interface.carbon +++ b/toolchain/check/testdata/facet/convert_interface.carbon @@ -29,6 +29,7 @@ fn G() { F(Animal); } // CHECK:STDOUT: %Self.23e: %Eats.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] +// CHECK:STDOUT: %.2cd: = impl_self_witness %Animal.type, @Eats [concrete] // CHECK:STDOUT: %Eats.impl_witness: = impl_witness @Animal.type.as.Eats.impl.%Eats.impl_witness_table [concrete] // CHECK:STDOUT: %Eats.facet: %Eats.type = facet_value %Animal.type, (%Eats.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Eats.type [concrete] @@ -63,6 +64,7 @@ fn G() { F(Animal); } // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @Animal.type.as.Eats.impl.%Animal.ref, @Eats [concrete = constants.%.2cd] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %e.param_patt: %pattern_type = value_param_pattern [concrete = constants.%e.param_patt] // CHECK:STDOUT: %e.patt: %pattern_type = at_binding_pattern e, %e.param_patt [concrete = constants.%e.patt] diff --git a/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon b/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon index 4f3e378e14b8..940b3108368c 100644 --- a/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon +++ b/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon @@ -59,6 +59,7 @@ fn G() { // CHECK:STDOUT: %WrongGenericParam: type = class_type @WrongGenericParam [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.b40: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] +// CHECK:STDOUT: %.e53: = impl_self_witness %ImplsGeneric, @Generic, @Generic(%GenericParam) [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness @ImplsGeneric.as.Generic.impl.%Generic.impl_witness_table [concrete] // CHECK:STDOUT: %Self.685: %Generic.type.b40 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Generic.WithSelf.F.type.e39: type = fn_type @Generic.WithSelf.F, @Generic.WithSelf(%GenericParam, %Self.8ea) [symbolic] @@ -118,6 +119,7 @@ fn G() { // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.b40] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc23: = impl_self_witness @ImplsGeneric.as.Generic.impl.%ImplsGeneric.ref, @Generic, @Generic(constants.%GenericParam) [concrete = constants.%.e53] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt.loc27_31.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc27_31.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc27_55.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc27_55.2 (constants.%U.patt)] diff --git a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon index b4301020f8bb..ac482afff49b 100644 --- a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon +++ b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon @@ -62,6 +62,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), generic from: RuntimeConvertFrom // 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.286: type = facet_type <@ImplicitAs, @ImplicitAs(%RuntimeConvertTo)> [concrete] +// CHECK:STDOUT: %.291: = impl_self_witness %RuntimeConvertFrom, @ImplicitAs, @ImplicitAs(%RuntimeConvertTo) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness @RuntimeConvertFrom.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.598: type = pattern_type %RuntimeConvertFrom [concrete] // CHECK:STDOUT: %self.param_patt.c41: %pattern_type.598 = value_param_pattern [concrete] @@ -148,6 +149,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), generic from: RuntimeConvertFrom // CHECK:STDOUT: %RuntimeConvertTo.ref: type = name_ref RuntimeConvertTo, file.%RuntimeConvertTo.decl [concrete = constants.%RuntimeConvertTo] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%RuntimeConvertTo)> [concrete = constants.%ImplicitAs.type.286] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @RuntimeConvertFrom.as.ImplicitAs.impl.%RuntimeConvertFrom.ref, @ImplicitAs, @ImplicitAs(constants.%RuntimeConvertTo) [concrete = constants.%.291] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc27_7.1: %pattern_type.f1e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc27_7.2 (constants.%T.patt)] // CHECK:STDOUT: %A.patt.loc27_35.1: @F.%pattern_type.loc27_35 (%pattern_type.e66) = symbolic_binding_pattern A, 1 [symbolic = %A.patt.loc27_35.2 (constants.%A.patt.aee)] diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index 388a9d5cf1e6..02bdc86f4bb8 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -111,6 +111,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %impl.elem1.4a6: %Destroy.type = impl_witness_access %.327, element1 [symbolic_self] // CHECK:STDOUT: %impl.elem0.188: %facet_type.f48 = impl_witness_access %.327, element0 [symbolic_self] // CHECK:STDOUT: %Iterate_where.type.131: type = facet_type <@Iterate where %impl.elem1.4a6 = %Destroy.facet.7bb and %impl.elem0.188 = %facet_value> [symbolic] +// CHECK:STDOUT: %.84c: = impl_self_witness %IntRange.2c4, @Iterate [symbolic] // CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @IntRange.as.Iterate.impl.%Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic] // CHECK:STDOUT: %self.param_patt.5cc: %pattern_type.1ea = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.13b: %pattern_type.1ea = at_binding_pattern self, %self.param_patt.5cc [symbolic] @@ -329,6 +330,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %Int.loc9_54.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.df6)] // CHECK:STDOUT: %facet_value.loc9_85.1: %facet_type.f48 = facet_value %Int.loc9_54.1, (%Destroy.lookup_impl_witness, %Copy.lookup_impl_witness) [symbolic = %facet_value.loc9_85.1 (constants.%facet_value)] // CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where constants.%impl.elem1.4a6 = %Destroy.facet.loc9_54.1 and constants.%impl.elem0.188 = %facet_value.loc9_85.1> [symbolic = %Iterate_where.type (constants.%Iterate_where.type.131)] +// CHECK:STDOUT: %.loc9_87: = impl_self_witness %IntRange, @Iterate [symbolic = %.loc9_87 (constants.%.84c)] // CHECK:STDOUT: %Iterate.impl_witness.loc9_87.2: = impl_witness %Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic = %Iterate.impl_witness.loc9_87.2 (constants.%Iterate.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -496,6 +498,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %rewrite.loc9_73.2 = requirement_rewrite %impl.elem0.loc9_60.2, %.loc9_85.2 [concrete] // 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: %complete_type.loc24_1.1: = complete_type_witness constants.%struct_type.start.end.d4d [symbolic = %complete_type.loc24_1.2 (constants.%complete_type.aa1)] @@ -862,6 +865,7 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.df6 // CHECK:STDOUT: %facet_value.loc9_85.1 => constants.%facet_value // CHECK:STDOUT: %Iterate_where.type => constants.%Iterate_where.type.131 +// CHECK:STDOUT: %.loc9_87 => constants.%.84c // CHECK:STDOUT: %Iterate.impl_witness.loc9_87.2 => constants.%Iterate.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/function/builtin/call.carbon b/toolchain/check/testdata/function/builtin/call.carbon index 61a673137a8b..2c746a231f9f 100644 --- a/toolchain/check/testdata/function/builtin/call.carbon +++ b/toolchain/check/testdata/function/builtin/call.carbon @@ -32,7 +32,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Add.type: type = fn_type @Add [concrete] @@ -45,8 +45,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // 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: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // 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.a23: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] @@ -126,7 +126,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_27 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15_27: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_27 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_27 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc15_11: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param @@ -182,7 +182,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc19_35 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc19_35: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19: Core.Form = init_form %i32.loc19_35 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc19: Core.Form = init_form %i32.loc19_35 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc19_19: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param diff --git a/toolchain/check/testdata/function/builtin/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/call_from_operator.carbon index 40e8397f98a8..d8b67e96ba9e 100644 --- a/toolchain/check/testdata/function/builtin/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/call_from_operator.carbon @@ -121,6 +121,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %AddWith.type.7c6: type = facet_type <@AddWith, @AddWith(%i32.builtin)> [concrete] +// CHECK:STDOUT: %.417: = impl_self_witness %i32.builtin, @AddWith, @AddWith(%i32.builtin) [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness @i32.builtin.as.AddWith.impl.%AddWith.impl_witness_table [concrete] // CHECK:STDOUT: %Self.9ab: %AddWith.type.7c6 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %AddWith.WithSelf.Op.type.aad: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%i32.builtin, %Self.8d5) [symbolic] @@ -141,6 +142,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %AddWith.WithSelf.Op.type.2dc: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%i32.builtin, %AddWith.facet) [concrete] // CHECK:STDOUT: %AddWith.WithSelf.Op.921: %AddWith.WithSelf.Op.type.2dc = struct_value () [concrete] // CHECK:STDOUT: %As.type.dfb: type = facet_type <@As, @As(%i32.builtin)> [concrete] +// CHECK:STDOUT: %.559: = impl_self_witness Core.IntLiteral, @As, @As(%i32.builtin) [concrete] // CHECK:STDOUT: %As.impl_witness: = impl_witness @Core.IntLiteral.as.As.impl.%As.impl_witness_table [concrete] // CHECK:STDOUT: %Self.2c0: %As.type.dfb = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %As.WithSelf.Convert.type.d9c: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32.builtin, %Self.f80) [symbolic] @@ -155,6 +157,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %As.WithSelf.Convert.type.e08: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32.builtin, %As.facet) [concrete] // CHECK:STDOUT: %As.WithSelf.Convert.5a5: %As.WithSelf.Convert.type.e08 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9df: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [concrete] +// CHECK:STDOUT: %.e10: = impl_self_witness Core.IntLiteral, @ImplicitAs, @ImplicitAs(%i32.builtin) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.300: = impl_witness @Core.IntLiteral.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %Self.19a: %ImplicitAs.type.9df = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.247: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32.builtin, %Self.bb1) [symbolic] @@ -167,6 +170,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.20b: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32.builtin, %ImplicitAs.facet.18f) [concrete] // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.b9f: %ImplicitAs.WithSelf.Convert.type.20b = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %.328: = impl_self_witness %i32.builtin, @ImplicitAs, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.9d7: = impl_witness @i32.builtin.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %Self.c40: %ImplicitAs.type.7cb = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.46f: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %Self.bb1) [symbolic] @@ -253,24 +257,28 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %.loc20_21: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin] // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%i32.builtin)> [concrete = constants.%AddWith.type.7c6] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @i32.builtin.as.AddWith.impl.%.loc20_6, @AddWith, @AddWith(constants.%i32.builtin) [concrete = constants.%.417] // CHECK:STDOUT: impl_decl @Core.IntLiteral.as.As.impl [concrete] {} { // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, file.%IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: %As.ref: %As.type.116 = name_ref As, file.%As.decl [concrete = constants.%As.generic] // CHECK:STDOUT: %.loc24: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin] // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%i32.builtin)> [concrete = constants.%As.type.dfb] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc24: = impl_self_witness @Core.IntLiteral.as.As.impl.%IntLiteral.ref, @As, @As(constants.%i32.builtin) [concrete = constants.%.559] // CHECK:STDOUT: impl_decl @Core.IntLiteral.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, file.%IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.0ff = name_ref ImplicitAs, file.%ImplicitAs.decl [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %.loc28: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32.builtin)> [concrete = constants.%ImplicitAs.type.9df] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc28: = impl_self_witness @Core.IntLiteral.as.ImplicitAs.impl.%IntLiteral.ref, @ImplicitAs, @ImplicitAs(constants.%i32.builtin) [concrete = constants.%.e10] // CHECK:STDOUT: impl_decl @i32.builtin.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %.loc32: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.0ff = name_ref ImplicitAs, file.%ImplicitAs.decl [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, file.%IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete = constants.%ImplicitAs.type.7cb] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc32: = impl_self_witness @i32.builtin.as.ImplicitAs.impl.%.loc32, @ImplicitAs, @ImplicitAs(Core.IntLiteral) [concrete = constants.%.328] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @AddWith(%T.loc8_20.2: type) { diff --git a/toolchain/check/testdata/function/builtin/method.carbon b/toolchain/check/testdata/function/builtin/method.carbon index 7e45dbdbe942..b5b064856b12 100644 --- a/toolchain/check/testdata/function/builtin/method.carbon +++ b/toolchain/check/testdata/function/builtin/method.carbon @@ -45,13 +45,14 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.2a7: = impl_self_witness %i32, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %self.param_patt.049: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %self.patt.f6c: %pattern_type.6b6 = at_binding_pattern self, %self.param_patt.049 [concrete] // CHECK:STDOUT: %other.param_patt.12c: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %other.patt.656: %pattern_type.6b6 = at_binding_pattern other, %other.param_patt.12c [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %i32.as.I.impl.F.type: type = fn_type @i32.as.I.impl.F [concrete] @@ -159,6 +160,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @i32.as.I.impl.%i32, @I [concrete = constants.%.2a7] // CHECK:STDOUT: %arr.var: ref %array_type = var_storage %arr.var_patt [concrete] // CHECK:STDOUT: %.loc23_40: type = splice_block %array_type [concrete = constants.%array_type] { // CHECK:STDOUT: %i32.loc23_16: type = type_literal constants.%i32 [concrete = constants.%i32] @@ -256,7 +258,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc20_34 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc20_34: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32.loc20_34 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32.loc20_34 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc20_14: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %self: %i32 = wrapper_binding self, %self.param @@ -340,7 +342,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %self.patt.loc16_8.2 => constants.%self.patt.f6c // CHECK:STDOUT: %other.param_patt.loc16_19.2 => constants.%other.param_patt.12c // CHECK:STDOUT: %other.patt.loc16_19.2 => constants.%other.patt.656 -// CHECK:STDOUT: %.loc16_30.1 => constants.%.795 +// CHECK:STDOUT: %.loc16_30.1 => constants.%.795f // CHECK:STDOUT: %return.param_patt.loc16_30.2 => constants.%return.param_patt.a9a // CHECK:STDOUT: %return.patt.loc16_27.2 => constants.%return.patt.e1b // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/form.carbon b/toolchain/check/testdata/function/call/form.carbon index f7bc1316f76f..e37e1b9ac3d9 100644 --- a/toolchain/check/testdata/function/call/form.carbon +++ b/toolchain/check/testdata/function/call/form.carbon @@ -335,7 +335,7 @@ fn G() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete] // CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.param_patt [concrete] @@ -374,9 +374,9 @@ fn G() { // CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.var_patt [concrete = constants.%x.patt] // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: ref %i32 = ref_param call_param0 -// CHECK:STDOUT: %.loc4_15.1: Core.Form = splice_block %.loc4_15.2 [concrete = constants.%.795] { +// CHECK:STDOUT: %.loc4_15.1: Core.Form = splice_block %.loc4_15.2 [concrete = constants.%.795f] { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_15.2: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc4_15.2: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc4_15.3: type = type_component_of %.loc4_15.2 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %i32 = wrapper_binding x, %x.param @@ -699,7 +699,7 @@ fn G() { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a4c7.1: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -719,7 +719,7 @@ fn G() { // CHECK:STDOUT: %return.param_patt.a9a4c7.2: %pattern_type.6b6 = out_param_pattern [concrete = %return.param_patt.a9a4c7.1] // CHECK:STDOUT: } // CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a4c7.1, %i32 [concrete] -// CHECK:STDOUT: %F.specific_fn.8ea: = specific_function %F, @F(%.795) [concrete] +// CHECK:STDOUT: %F.specific_fn.8ea: = specific_function %F, @F(%.795f) [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.ac8: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.5e0: %Int.as.Copy.impl.Op.type.ac8 = struct_value () [symbolic] @@ -870,9 +870,9 @@ fn G() { // CHECK:STDOUT: %x.var: ref %i32 = var_storage %x.var_patt // CHECK:STDOUT: %F.ref.loc13: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %i32.loc13_34: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc13_30: Core.Form = init_form %i32.loc13_34 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc13_30: Core.Form = init_form %i32.loc13_34 [concrete = constants.%.795f] // CHECK:STDOUT: %v.ref.loc13: ref %i32 = name_ref v, %v -// CHECK:STDOUT: %F.specific_fn.loc13: = specific_function %F.ref.loc13, @F(constants.%.795) [concrete = constants.%F.specific_fn.8ea] +// CHECK:STDOUT: %F.specific_fn.loc13: = specific_function %F.ref.loc13, @F(constants.%.795f) [concrete = constants.%F.specific_fn.8ea] // CHECK:STDOUT: %.loc13_40: %i32 = acquire_value %v.ref.loc13 // CHECK:STDOUT: %impl.elem0.loc13: %.7a6 = impl_witness_access constants.%Copy.impl_witness.0e0, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6] // CHECK:STDOUT: %bound_method.loc13_40.1: = bound_method %.loc13_40, %impl.elem0.loc13 @@ -946,9 +946,9 @@ fn G() { // CHECK:STDOUT: %.loc4_37.5 => constants.%.efc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%.795) { +// CHECK:STDOUT: specific @F(constants.%.795f) { // CHECK:STDOUT: %Fm.patt.loc4_16.2 => constants.%Fm.patt -// CHECK:STDOUT: %Fm.loc4_16.1 => constants.%.795 +// CHECK:STDOUT: %Fm.loc4_16.1 => constants.%.795f // CHECK:STDOUT: %.loc4_33.1 => constants.%i32 // CHECK:STDOUT: %.loc4_30.3 => constants.%inst.splice_block // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index f7ff61abf668..11a22d3f82b0 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -32,7 +32,7 @@ fn Main() { // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete] @@ -107,7 +107,7 @@ fn Main() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_20 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15_20: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_20 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_20 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc15_12: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index ae817b1d9b39..ed39954b5670 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -43,7 +43,7 @@ fn Class(F: type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -111,7 +111,7 @@ fn Class(F: type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } // CHECK:STDOUT: %F.loc13_11: type = symbolic_binding F, 0 [symbolic = @Class.%F.loc5_14.1 (constants.%F)] // CHECK:STDOUT: %i32.loc13: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc13_32: Core.Form = init_form %i32.loc13 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc13_32: Core.Form = init_form %i32.loc13 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param.loc13: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc13: ref %i32 = return_slot %return.param.loc13 // CHECK:STDOUT: } @@ -149,7 +149,7 @@ fn Class(F: type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc8_15: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc8_15: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -158,7 +158,7 @@ fn Class(F: type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc13 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc9: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32.loc9 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32.loc9 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param.loc9: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc9: ref %i32 = return_slot %return.param.loc9 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index ad67c0421a51..1d94e37401e0 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -676,7 +676,7 @@ import library "extern_api"; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] @@ -761,7 +761,7 @@ import library "extern_api"; // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} { // CHECK:STDOUT: %i32.loc23_24: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc23: Core.Form = init_form %i32.loc23_24 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc23: Core.Form = init_form %i32.loc23_24 [concrete = constants.%.795f] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc23_16: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %b: %i32 = wrapper_binding b, %b.param @@ -896,7 +896,7 @@ import library "extern_api"; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] @@ -979,7 +979,7 @@ import library "extern_api"; // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} { // CHECK:STDOUT: %i32.loc7_24: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc7: Core.Form = init_form %i32.loc7_24 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc7: Core.Form = init_form %i32.loc7_24 [concrete = constants.%.795f] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc7_16: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %b: %i32 = wrapper_binding b, %b.param diff --git a/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon b/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon index e81cd567b0cf..4f0829de57e6 100644 --- a/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon +++ b/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon @@ -60,6 +60,7 @@ fn G() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.b40: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] +// CHECK:STDOUT: %.e53: = impl_self_witness %ImplsGeneric, @Generic, @Generic(%GenericParam) [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness @ImplsGeneric.as.Generic.impl.%Generic.impl_witness_table [concrete] // CHECK:STDOUT: %Self.685: %Generic.type.b40 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Generic.WithSelf.F.type.e39: type = fn_type @Generic.WithSelf.F, @Generic.WithSelf(%GenericParam, %Self.8ea1ea.1) [symbolic] @@ -77,6 +78,7 @@ fn G() { // CHECK:STDOUT: %Other.WithSelf.G.050: %Other.WithSelf.G.type.eee = struct_value () [symbolic] // CHECK:STDOUT: %Other.assoc_type: type = assoc_entity_type @Other [concrete] // CHECK:STDOUT: %assoc0.e70: %Other.assoc_type = assoc_entity element0, @Other.WithSelf.%Other.WithSelf.G.decl [concrete] +// CHECK:STDOUT: %.13c: = impl_self_witness %ImplsGeneric, @Other [concrete] // CHECK:STDOUT: %Other.impl_witness: = impl_witness @ImplsGeneric.as.Other.impl.%Other.impl_witness_table [concrete] // CHECK:STDOUT: %ImplsGeneric.as.Other.impl.G.type: type = fn_type @ImplsGeneric.as.Other.impl.G [concrete] // CHECK:STDOUT: %ImplsGeneric.as.Other.impl.G: %ImplsGeneric.as.Other.impl.G.type = struct_value () [concrete] @@ -148,11 +150,13 @@ fn G() { // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.b40] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @ImplsGeneric.as.Generic.impl.%ImplsGeneric.ref, @Generic, @Generic(constants.%GenericParam) [concrete = constants.%.e53] // CHECK:STDOUT: %Other.decl: type = interface_decl @Other [concrete = constants.%Other.type] {} {} // CHECK:STDOUT: impl_decl @ImplsGeneric.as.Other.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Other.ref: type = name_ref Other, file.%Other.decl [concrete = constants.%Other.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc29: = impl_self_witness @ImplsGeneric.as.Other.impl.%ImplsGeneric.ref, @Other [concrete = constants.%.13c] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt.loc33_31.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc33_31.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc33_48.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc33_48.2 (constants.%U.patt.8a6)] diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 687989d8f9bb..c8c00d538bdf 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -1853,6 +1853,7 @@ fn F() { // CHECK:STDOUT: %EE: type = class_type @EE [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.236: = impl_self_witness %EE, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness.0e0: = impl_witness @EE.as.Z.impl.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %Z.facet.a2d: %Z.type = facet_value %EE, (%Z.impl_witness.0e0) [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -1863,6 +1864,7 @@ fn F() { // CHECK:STDOUT: %DD.type: type = generic_class_type @DD [concrete] // CHECK:STDOUT: %DD.generic: %DD.type = struct_value () [concrete] // CHECK:STDOUT: %DD.699: type = class_type @DD, @DD(%E) [symbolic] +// CHECK:STDOUT: %.91f: = impl_self_witness %DD.699, @Z [symbolic] // CHECK:STDOUT: %Z.impl_witness.7fb: = impl_witness @DD.as.Z.impl.%Z.impl_witness_table, @DD.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %Z.facet.419: %Z.type = facet_value %DD.699, (%Z.impl_witness.7fb) [symbolic] // CHECK:STDOUT: %pattern_type.5d7: type = pattern_type %Z.type [concrete] @@ -1875,15 +1877,18 @@ fn F() { // CHECK:STDOUT: %.8d3: require_specific_def_type = require_specific_def @DD.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %Z.facet.0b6: %Z.type = facet_value %DD.699, (%Z.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %CC.2a8: type = class_type @CC, @CC(%Z.facet.0b6) [symbolic] +// CHECK:STDOUT: %.e93: = impl_self_witness %CC.2a8, @Z [symbolic] // CHECK:STDOUT: %Z.impl_witness.458: = impl_witness @CC.as.Z.impl.%Z.impl_witness_table, @CC.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %Z.facet.2d1: %Z.type = facet_value %CC.2a8, (%Z.impl_witness.458) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %DD.cfc: type = class_type @DD, @DD(%EE) [concrete] +// CHECK:STDOUT: %.890: = impl_self_witness %DD.cfc, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness.7dd: = impl_witness @DD.as.Z.impl.%Z.impl_witness_table, @DD.as.Z.impl(%EE) [concrete] // CHECK:STDOUT: %.061: require_specific_def_type = require_specific_def @DD.as.Z.impl(%EE) [concrete] // CHECK:STDOUT: %Z.facet.da0: %Z.type = facet_value %DD.cfc, (%Z.impl_witness.7dd) [concrete] // CHECK:STDOUT: %CC.a5a: type = class_type @CC, @CC(%Z.facet.da0) [concrete] +// CHECK:STDOUT: %.371: = impl_self_witness %CC.a5a, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness.df9: = impl_witness @CC.as.Z.impl.%Z.impl_witness_table, @CC.as.Z.impl(%EE) [concrete] // CHECK:STDOUT: %Z.facet.57d: %Z.type = facet_value %CC.a5a, (%Z.impl_witness.df9) [concrete] // CHECK:STDOUT: } @@ -1911,6 +1916,7 @@ fn F() { // CHECK:STDOUT: %EE.ref: type = name_ref EE, file.%EE.decl [concrete = constants.%EE] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @EE.as.Z.impl.%EE.ref, @Z [concrete = constants.%.236] // CHECK:STDOUT: %DD.decl: %DD.type = class_decl @DD [concrete = constants.%DD.generic] { // CHECK:STDOUT: %E.patt.loc8_11.1: %pattern_type.98f = symbolic_binding_pattern E, 0 [symbolic = %E.patt.loc8_11.2 (constants.%E.patt)] // CHECK:STDOUT: } { @@ -1933,6 +1939,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc9_15.1: type = symbolic_binding E, 0 [symbolic = %E.loc9_15.2 (constants.%E)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @DD.as.Z.impl.%DD.loc9_27.1, @Z [symbolic = @DD.as.Z.impl.%.loc9_34 (constants.%.91f)] // CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] { // CHECK:STDOUT: %D.patt.loc11_11.1: %pattern_type.5d7 = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc11_11.2 (constants.%D.patt)] // CHECK:STDOUT: } { @@ -1959,6 +1966,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc12_15.1: type = symbolic_binding E, 0 [symbolic = %E.loc12_15.2 (constants.%E)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @CC.as.Z.impl.%CC.loc12_31.1, @Z [symbolic = @CC.as.Z.impl.%.loc12_38 (constants.%.e93)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1986,6 +1994,7 @@ fn F() { // CHECK:STDOUT: %E.patt.loc9_15.2: %pattern_type.98f = symbolic_binding_pattern E, 0 [symbolic = %E.patt.loc9_15.2 (constants.%E.patt)] // CHECK:STDOUT: %E.loc9_15.2: type = symbolic_binding E, 0 [symbolic = %E.loc9_15.2 (constants.%E)] // CHECK:STDOUT: %DD.loc9_27.2: type = class_type @DD, @DD(%E.loc9_15.2) [symbolic = %DD.loc9_27.2 (constants.%DD.699)] +// CHECK:STDOUT: %.loc9_34: = impl_self_witness %DD.loc9_27.2, @Z [symbolic = %.loc9_34 (constants.%.91f)] // CHECK:STDOUT: %Z.impl_witness.loc9_34.2: = impl_witness %Z.impl_witness_table, @DD.as.Z.impl(%E.loc9_15.2) [symbolic = %Z.impl_witness.loc9_34.2 (constants.%Z.impl_witness.7fb)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -2008,6 +2017,7 @@ fn F() { // CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %DD.loc12_30.2, @Z [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness)] // CHECK:STDOUT: %Z.facet.loc12_31.2: %Z.type = facet_value %DD.loc12_30.2, (%Z.lookup_impl_witness) [symbolic = %Z.facet.loc12_31.2 (constants.%Z.facet.0b6)] // CHECK:STDOUT: %CC.loc12_31.2: type = class_type @CC, @CC(%Z.facet.loc12_31.2) [symbolic = %CC.loc12_31.2 (constants.%CC.2a8)] +// CHECK:STDOUT: %.loc12_38: = impl_self_witness %CC.loc12_31.2, @Z [symbolic = %.loc12_38 (constants.%.e93)] // CHECK:STDOUT: %Z.impl_witness.loc12_38.2: = impl_witness %Z.impl_witness_table, @CC.as.Z.impl(%E.loc12_15.2) [symbolic = %Z.impl_witness.loc12_38.2 (constants.%Z.impl_witness.458)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -2092,6 +2102,7 @@ fn F() { // CHECK:STDOUT: %E.patt.loc9_15.2 => constants.%E.patt // CHECK:STDOUT: %E.loc9_15.2 => constants.%E // CHECK:STDOUT: %DD.loc9_27.2 => constants.%DD.699 +// CHECK:STDOUT: %.loc9_34 => constants.%.91f // CHECK:STDOUT: %Z.impl_witness.loc9_34.2 => constants.%Z.impl_witness.7fb // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -2119,6 +2130,7 @@ fn F() { // CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.lookup_impl_witness // CHECK:STDOUT: %Z.facet.loc12_31.2 => constants.%Z.facet.0b6 // CHECK:STDOUT: %CC.loc12_31.2 => constants.%CC.2a8 +// CHECK:STDOUT: %.loc12_38 => constants.%.e93 // CHECK:STDOUT: %Z.impl_witness.loc12_38.2 => constants.%Z.impl_witness.458 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2135,6 +2147,7 @@ fn F() { // CHECK:STDOUT: %E.patt.loc9_15.2 => constants.%E.patt // CHECK:STDOUT: %E.loc9_15.2 => constants.%EE // CHECK:STDOUT: %DD.loc9_27.2 => constants.%DD.cfc +// CHECK:STDOUT: %.loc9_34 => constants.%.890 // CHECK:STDOUT: %Z.impl_witness.loc9_34.2 => constants.%Z.impl_witness.7dd // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -2153,6 +2166,7 @@ fn F() { // CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.impl_witness.7dd // CHECK:STDOUT: %Z.facet.loc12_31.2 => constants.%Z.facet.da0 // CHECK:STDOUT: %CC.loc12_31.2 => constants.%CC.a5a +// CHECK:STDOUT: %.loc12_38 => constants.%.371 // CHECK:STDOUT: %Z.impl_witness.loc12_38.2 => constants.%Z.impl_witness.df9 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon b/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon index 776532f36201..61df70d66011 100644 --- a/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon +++ b/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon @@ -47,8 +47,10 @@ fn F() { // CHECK:STDOUT: %DD: type = class_type @DD [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.565: = impl_self_witness %DD, @Y [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness @DD.as.Y.impl.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %Y.facet.2a4: %Y.type = facet_value %DD, (%Y.impl_witness) [concrete] +// CHECK:STDOUT: %.918: = impl_self_witness %DD, @W [concrete] // CHECK:STDOUT: %W.impl_witness: = impl_witness @DD.as.W.impl.%W.impl_witness_table [concrete] // CHECK:STDOUT: %W.facet: %W.type = facet_value %DD, (%W.impl_witness) [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -79,12 +81,14 @@ fn F() { // CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %E, @Y [symbolic] // CHECK:STDOUT: %Y.facet.18f: %Y.type = facet_value %E.as_type, (%Y.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %CC.db5: type = class_type @CC, @CC(%Y.facet.18f) [symbolic] +// CHECK:STDOUT: %.bd6: = impl_self_witness %CC.db5, @Z [symbolic] // CHECK:STDOUT: %Z.impl_witness.6a9: = impl_witness @CC.as.Z.impl.%Z.impl_witness_table, @CC.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %Z.facet.674: %Z.type = facet_value %CC.db5, (%Z.impl_witness.6a9) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %CC.d62: type = class_type @CC, @CC(%Y.facet.2a4) [concrete] // CHECK:STDOUT: %facet_value: %facet_type = facet_value %DD, (%Y.impl_witness, %W.impl_witness) [concrete] +// CHECK:STDOUT: %.343: = impl_self_witness %CC.d62, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness.b3a: = impl_witness @CC.as.Z.impl.%Z.impl_witness_table, @CC.as.Z.impl(%facet_value) [concrete] // CHECK:STDOUT: %Z.facet.737: %Z.type = facet_value %CC.d62, (%Z.impl_witness.b3a) [concrete] // CHECK:STDOUT: } @@ -118,10 +122,12 @@ fn F() { // CHECK:STDOUT: %DD.ref: type = name_ref DD, file.%DD.decl [concrete = constants.%DD] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @DD.as.Y.impl.%DD.ref, @Y [concrete = constants.%.565] // CHECK:STDOUT: impl_decl @DD.as.W.impl [concrete] {} { // CHECK:STDOUT: %DD.ref: type = name_ref DD, file.%DD.decl [concrete = constants.%DD] // CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @DD.as.W.impl.%DD.ref, @W [concrete = constants.%.918] // CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] { // CHECK:STDOUT: %D.patt.loc12_11.1: %pattern_type.cfb = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc12_11.2 (constants.%D.patt)] // CHECK:STDOUT: } { @@ -154,6 +160,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc19_15.1: %facet_type = symbolic_binding E, 0 [symbolic = %E.loc19_15.2 (constants.%E)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @CC.as.Z.impl.%CC.loc19_28.1, @Z [symbolic = @CC.as.Z.impl.%.loc19_35 (constants.%.bd6)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -215,6 +222,7 @@ fn F() { // CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %E.loc19_15.2, @Y [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness)] // CHECK:STDOUT: %Y.facet.loc19_28.2: %Y.type = facet_value %E.as_type.loc19_28.2, (%Y.lookup_impl_witness) [symbolic = %Y.facet.loc19_28.2 (constants.%Y.facet.18f)] // CHECK:STDOUT: %CC.loc19_28.2: type = class_type @CC, @CC(%Y.facet.loc19_28.2) [symbolic = %CC.loc19_28.2 (constants.%CC.db5)] +// CHECK:STDOUT: %.loc19_35: = impl_self_witness %CC.loc19_28.2, @Z [symbolic = %.loc19_35 (constants.%.bd6)] // CHECK:STDOUT: %Z.impl_witness.loc19_35.2: = impl_witness %Z.impl_witness_table, @CC.as.Z.impl(%E.loc19_15.2) [symbolic = %Z.impl_witness.loc19_35.2 (constants.%Z.impl_witness.6a9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -302,6 +310,7 @@ fn F() { // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness // CHECK:STDOUT: %Y.facet.loc19_28.2 => constants.%Y.facet.18f // CHECK:STDOUT: %CC.loc19_28.2 => constants.%CC.db5 +// CHECK:STDOUT: %.loc19_35 => constants.%.bd6 // CHECK:STDOUT: %Z.impl_witness.loc19_35.2 => constants.%Z.impl_witness.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -321,6 +330,7 @@ fn F() { // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.impl_witness // CHECK:STDOUT: %Y.facet.loc19_28.2 => constants.%Y.facet.2a4 // CHECK:STDOUT: %CC.loc19_28.2 => constants.%CC.d62 +// CHECK:STDOUT: %.loc19_35 => constants.%.343 // CHECK:STDOUT: %Z.impl_witness.loc19_35.2 => constants.%Z.impl_witness.b3a // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/generic/dependent_param.carbon b/toolchain/check/testdata/generic/dependent_param.carbon index 01e5fca45bea..147c2e8f42c8 100644 --- a/toolchain/check/testdata/generic/dependent_param.carbon +++ b/toolchain/check/testdata/generic/dependent_param.carbon @@ -88,7 +88,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.098: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -288,7 +288,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: specific @Inner.Get(constants.%Copy.facet.987, constants.%int_42.ac4) { // CHECK:STDOUT: %T => constants.%Copy.facet.987 // CHECK:STDOUT: %T.as_type.loc7_17.1 => constants.%i32 -// CHECK:STDOUT: %.loc7_17.2 => constants.%.795 +// CHECK:STDOUT: %.loc7_17.2 => constants.%.795f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 // CHECK:STDOUT: %return.param_patt.loc7_17.2 => constants.%return.param_patt.a9a // CHECK:STDOUT: %return.patt.loc7_14.2 => constants.%return.patt.e1b diff --git a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon index d10750b24d2b..267bde537c93 100644 --- a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon +++ b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon @@ -350,6 +350,7 @@ fn H(generic T: type) { // CHECK:STDOUT: %BB.as_type: type = facet_access_type %BB.6ca [symbolic] // CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %AA [symbolic] // CHECK:STDOUT: %B.type.4a0be4.1: type = facet_type <@B, @B(%ptr.e8f8f9.1)> [symbolic] +// CHECK:STDOUT: %.a32: = impl_self_witness %BB.as_type, @B, @B(%ptr.e8f8f9.1) [symbolic] // CHECK:STDOUT: %B.impl_witness.8cc: = impl_witness @BB.as_type.as.B.impl.%B.impl_witness_table, @BB.as_type.as.B.impl(%AA, %BB.6ca) [symbolic] // CHECK:STDOUT: %require_complete.a5dc9d.1: = require_complete_type %B.type.4a0be4.1 [symbolic] // CHECK:STDOUT: %DD.patt: %pattern_type.98f = symbolic_binding_pattern DD, 0 [symbolic] @@ -417,6 +418,7 @@ fn H(generic T: type) { // CHECK:STDOUT: } // CHECK:STDOUT: %BB.loc9_26.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.ce6fa0.1) = symbolic_binding BB, 1 [symbolic = %BB.loc9_26.2 (constants.%BB.6ca)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @BB.as_type.as.B.impl.%.loc9_49, @B, @B(constants.%ptr.e8f8f9.1) [symbolic = @BB.as_type.as.B.impl.%.loc9_62 (constants.%.a32)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @BB.as_type.as.B.impl(%AA.loc9_16.1: type, %BB.loc9_26.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.ce6fa0.1)) { @@ -440,6 +442,7 @@ fn H(generic T: type) { // CHECK:STDOUT: %BB.as_type.loc9_49.2: type = facet_access_type %BB.loc9_26.2 [symbolic = %BB.as_type.loc9_49.2 (constants.%BB.as_type)] // CHECK:STDOUT: %ptr.loc9_59.2: type = ptr_type %AA.loc9_16.2 [symbolic = %ptr.loc9_59.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %B.type.loc9_60.2: type = facet_type <@B, @B(%ptr.loc9_59.2)> [symbolic = %B.type.loc9_60.2 (constants.%B.type.4a0be4.1)] +// CHECK:STDOUT: %.loc9_62: = impl_self_witness %BB.as_type.loc9_49.2, @B, @B(%ptr.loc9_59.2) [symbolic = %.loc9_62 (constants.%.a32)] // CHECK:STDOUT: %B.impl_witness.loc9_62.2: = impl_witness %B.impl_witness_table, @BB.as_type.as.B.impl(%AA.loc9_16.2, %BB.loc9_26.2) [symbolic = %B.impl_witness.loc9_62.2 (constants.%B.impl_witness.8cc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -518,6 +521,7 @@ fn H(generic T: type) { // CHECK:STDOUT: %BB.as_type.loc9_49.2 => constants.%BB.as_type // CHECK:STDOUT: %ptr.loc9_59.2 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %B.type.loc9_60.2 => constants.%B.type.4a0be4.1 +// CHECK:STDOUT: %.loc9_62 => constants.%.a32 // CHECK:STDOUT: %B.impl_witness.loc9_62.2 => constants.%B.impl_witness.8cc // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/template/convert.carbon b/toolchain/check/testdata/generic/template/convert.carbon index ede57a447b7f..78f021a4f8c2 100644 --- a/toolchain/check/testdata/generic/template/convert.carbon +++ b/toolchain/check/testdata/generic/template/convert.carbon @@ -78,7 +78,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -110,6 +110,7 @@ fn Test(d: D) -> i32 { // 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.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] +// CHECK:STDOUT: %.bc7: = impl_self_witness %C, @ImplicitAs, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.496: = impl_witness @C.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -180,7 +181,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc4 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_33: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc4_33: Core.Form = init_form %i32.loc4 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc4_18.1: type = splice_block %.loc4_18.2 [concrete = type] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_18.2: type = type_literal type [concrete = type] @@ -199,7 +200,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc9_21 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc9_21: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32.loc9_21 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32.loc9_21 [concrete = constants.%.795f] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc9_13: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %n: %i32 = wrapper_binding n, %n.param @@ -214,7 +215,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %c.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: %C = wrapper_binding c, %c.param @@ -231,7 +232,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16_25: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16_25: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %self: %C = wrapper_binding self, %self.param @@ -256,6 +257,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32)> [concrete = constants.%ImplicitAs.type.914] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @C.as.ImplicitAs.impl.%Self.ref, @ImplicitAs, @ImplicitAs(constants.%i32) [concrete = constants.%.bc7] // 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: @@ -378,7 +380,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -450,7 +452,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc4 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_33: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc4_33: Core.Form = init_form %i32.loc4 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc4_18.1: type = splice_block %.loc4_18.2 [concrete = type] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_18.2: type = type_literal type [concrete = type] @@ -470,7 +472,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %d.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %d: %D = wrapper_binding d, %d.param diff --git a/toolchain/check/testdata/generic/template/member_access.carbon b/toolchain/check/testdata/generic/template/member_access.carbon index 82d941b4be29..0e478cd60e85 100644 --- a/toolchain/check/testdata/generic/template/member_access.carbon +++ b/toolchain/check/testdata/generic/template/member_access.carbon @@ -532,7 +532,7 @@ fn Test(e: E) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -615,7 +615,7 @@ fn Test(e: E) { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc4 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_33: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc4_33: Core.Form = init_form %i32.loc4 [concrete = constants.%.795f] // CHECK:STDOUT: %.loc4_18.1: type = splice_block %.loc4_18.2 [concrete = type] { // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_18.2: type = type_literal type [concrete = type] diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index faa5da495a45..50301192e706 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -34,7 +34,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete] // CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -118,7 +118,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_34 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15_34: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_34: Core.Form = init_form %i32.loc15_34 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15_34: Core.Form = init_form %i32.loc15_34 [concrete = constants.%.795f] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %b: bool = wrapper_binding b, %b.param diff --git a/toolchain/check/testdata/if_expr/constant_condition.carbon b/toolchain/check/testdata/if_expr/constant_condition.carbon index 746f4e0f42f7..9c1ee3777bd1 100644 --- a/toolchain/check/testdata/if_expr/constant_condition.carbon +++ b/toolchain/check/testdata/if_expr/constant_condition.carbon @@ -44,7 +44,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -157,7 +157,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15_11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -166,7 +166,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16_11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16_11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -175,7 +175,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc18: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -184,7 +184,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc22: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -193,7 +193,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc26 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc26: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc26: Core.Form = init_form %i32.loc26 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc26: Core.Form = init_form %i32.loc26 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -204,7 +204,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc32_34: Core.Form = init_form %i32.loc32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc32_34: Core.Form = init_form %i32.loc32 [concrete = constants.%.795f] // CHECK:STDOUT: %t.param: type = value_param call_param0 // CHECK:STDOUT: %.loc32_25: type = type_literal type [concrete = type] // CHECK:STDOUT: %t: type = wrapper_binding t, %t.param diff --git a/toolchain/check/testdata/if_expr/control_flow.carbon b/toolchain/check/testdata/if_expr/control_flow.carbon index a06b92725789..700ac6022760 100644 --- a/toolchain/check/testdata/if_expr/control_flow.carbon +++ b/toolchain/check/testdata/if_expr/control_flow.carbon @@ -27,7 +27,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -105,7 +105,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15_11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -114,7 +114,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16_11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc16_11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -125,7 +125,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18_18: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc18_18: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc18_9: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %b: bool = wrapper_binding b, %b.param diff --git a/toolchain/check/testdata/if_expr/nested.carbon b/toolchain/check/testdata/if_expr/nested.carbon index d7038c282672..ce45e3d18838 100644 --- a/toolchain/check/testdata/if_expr/nested.carbon +++ b/toolchain/check/testdata/if_expr/nested.carbon @@ -31,7 +31,7 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -114,7 +114,7 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_36: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15_36: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %a: bool = wrapper_binding a, %a.param diff --git a/toolchain/check/testdata/impl/assoc_const_self.carbon b/toolchain/check/testdata/impl/assoc_const_self.carbon index 6a16f65e4c35..2990c5e471ba 100644 --- a/toolchain/check/testdata/impl/assoc_const_self.carbon +++ b/toolchain/check/testdata/impl/assoc_const_self.carbon @@ -120,6 +120,7 @@ fn CallF() { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.ca3: %.Self.as_type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.b84: type = facet_type <@I where %impl.elem0.ca3 = %empty_struct> [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness.55a: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %empty_struct.type.facet: %type = facet_value %empty_struct_type, () [concrete] @@ -130,6 +131,7 @@ fn CallF() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %I_where.type.8e4: type = facet_type <@I where %impl.elem0.ca3 = %int_0.5c6> [concrete] +// CHECK:STDOUT: %.2a7: = impl_self_witness %i32, @I [concrete] // CHECK:STDOUT: %I.impl_witness.ce4: = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Int.type.facet: %type = facet_value %i32, () [concrete] // CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] @@ -193,6 +195,7 @@ fn CallF() { // CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_struct_type.as.I.impl.%.loc8_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -212,6 +215,7 @@ fn CallF() { // CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @i32.as.I.impl.%i32, @I [concrete = constants.%.2a7] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -314,6 +318,7 @@ fn CallF() { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.ca3: %.Self.as_type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.ca3 = %int_0> [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %empty_struct.type.facet: %type = facet_value %empty_struct_type, () [concrete] @@ -358,6 +363,7 @@ fn CallF() { // CHECK:STDOUT: %rewrite.loc15_23.2 = requirement_rewrite %impl.elem0.loc15_20.2, %int_0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @empty_struct_type.as.I.impl.%.loc15_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -428,6 +434,7 @@ fn CallF() { // 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.dee: type = facet_type <@ImplicitAs, @ImplicitAs(%C)> [concrete] +// CHECK:STDOUT: %.5c5: = impl_self_witness %empty_tuple.type, @ImplicitAs, @ImplicitAs(%C) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness @empty_tuple.type.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %self.param_patt.154: %pattern_type.cb1 = value_param_pattern [concrete] @@ -451,6 +458,7 @@ fn CallF() { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.ca3: %.Self.as_type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.ca3 = %empty_tuple> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %C.type.facet: %type = facet_value %C, () [concrete] @@ -485,6 +493,7 @@ fn CallF() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%C)> [concrete = constants.%ImplicitAs.type.dee] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_tuple.type.as.ImplicitAs.impl.%.loc10_7.2, @ImplicitAs, @ImplicitAs(constants.%C) [concrete = constants.%.5c5] // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -506,6 +515,7 @@ fn CallF() { // CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @C.as.I.impl.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/basic.carbon b/toolchain/check/testdata/impl/basic.carbon index fdc6f6941dd4..8125dd675d72 100644 --- a/toolchain/check/testdata/impl/basic.carbon +++ b/toolchain/check/testdata/impl/basic.carbon @@ -115,6 +115,7 @@ final impl C(invalid) as I {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.dd3: = impl_self_witness %C, @Simple [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @C.as.Simple.impl.%Simple.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.Simple.impl.F.type: type = fn_type @C.as.Simple.impl.F [concrete] // CHECK:STDOUT: %C.as.Simple.impl.F: %C.as.Simple.impl.F.type = struct_value () [concrete] @@ -125,6 +126,7 @@ final impl C(invalid) as I {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.Simple.impl.%C.ref, @Simple [concrete = constants.%.dd3] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @C.as.Simple.impl: %C.ref as %Simple.ref { diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index 5d3312ae2e90..042de1d82f46 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -256,6 +256,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0: %NonInstance1.assoc_type = assoc_entity element0, @NonInstance1.WithSelf.%NonInstance1.WithSelf.F1.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.dad: = impl_self_witness %struct_type.a, @NonInstance1 [concrete] // CHECK:STDOUT: %NonInstance1.impl_witness: = impl_witness @struct_type.a.as.NonInstance1.impl.%NonInstance1.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1.type: type = fn_type @struct_type.a.as.NonInstance1.impl.F1 [concrete] // CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1: %struct_type.a.as.NonInstance1.impl.F1.type = struct_value () [concrete] @@ -279,6 +280,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %NonInstance1.ref: type = name_ref NonInstance1, file.%NonInstance1.decl [concrete = constants.%NonInstance1.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @struct_type.a.as.NonInstance1.impl.%struct_type.a, @NonInstance1 [concrete = constants.%.dad] // CHECK:STDOUT: %NonInstanceCall1.decl: %NonInstanceCall1.type = fn_decl @NonInstanceCall1 [concrete = constants.%NonInstanceCall1] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -362,6 +364,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0.fab: %NonInstance2.assoc_type = assoc_entity element0, @NonInstance2.WithSelf.%NonInstance2.WithSelf.F2.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.f6e: = impl_self_witness %struct_type.b, @NonInstance2 [concrete] // CHECK:STDOUT: %NonInstance2.impl_witness: = impl_witness @struct_type.b.as.NonInstance2.impl.%NonInstance2.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.b.as.NonInstance2.impl.F2.type: type = fn_type @struct_type.b.as.NonInstance2.impl.F2 [concrete] // CHECK:STDOUT: %struct_type.b.as.NonInstance2.impl.F2: %struct_type.b.as.NonInstance2.impl.F2.type = struct_value () [concrete] @@ -430,6 +433,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete = constants.%struct_type.b] // CHECK:STDOUT: %NonInstance2.ref: type = name_ref NonInstance2, file.%NonInstance2.decl [concrete = constants.%NonInstance2.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @struct_type.b.as.NonInstance2.impl.%struct_type.b, @NonInstance2 [concrete = constants.%.f6e] // CHECK:STDOUT: %NonInstanceCall2.decl: %NonInstanceCall2.type = fn_decl @NonInstanceCall2 [concrete = constants.%NonInstanceCall2] { // CHECK:STDOUT: %n.param_patt: %pattern_type.d5c = value_param_pattern [concrete = constants.%n.param_patt] // CHECK:STDOUT: %n.patt: %pattern_type.d5c = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] @@ -594,6 +598,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0.a87: %NonInstance3.assoc_type = assoc_entity element0, @NonInstance3.WithSelf.%NonInstance3.WithSelf.F3.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.52c: = impl_self_witness %struct_type.c, @NonInstance3 [concrete] // CHECK:STDOUT: %NonInstance3.impl_witness: = impl_witness @struct_type.c.as.NonInstance3.impl.%NonInstance3.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.c.as.NonInstance3.impl.F3.type: type = fn_type @struct_type.c.as.NonInstance3.impl.F3 [concrete] // CHECK:STDOUT: %struct_type.c.as.NonInstance3.impl.F3: %struct_type.c.as.NonInstance3.impl.F3.type = struct_value () [concrete] @@ -663,6 +668,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete = constants.%struct_type.c] // CHECK:STDOUT: %NonInstance3.ref: type = name_ref NonInstance3, file.%NonInstance3.decl [concrete = constants.%NonInstance3.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @struct_type.c.as.NonInstance3.impl.%struct_type.c, @NonInstance3 [concrete = constants.%.52c] // CHECK:STDOUT: %NonInstanceCallIndirect.decl: %NonInstanceCallIndirect.type = fn_decl @NonInstanceCallIndirect [concrete = constants.%NonInstanceCallIndirect] { // CHECK:STDOUT: %p.param_patt: %pattern_type.5f5 = value_param_pattern [concrete = constants.%p.param_patt] // CHECK:STDOUT: %p.patt: %pattern_type.5f5 = at_binding_pattern p, %p.param_patt [concrete = constants.%p.patt] @@ -833,6 +839,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0: %Instance1.assoc_type = assoc_entity element0, @Instance1.WithSelf.%Instance1.WithSelf.G1.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.100: = impl_self_witness %struct_type.d, @Instance1 [concrete] // CHECK:STDOUT: %Instance1.impl_witness: = impl_witness @struct_type.d.as.Instance1.impl.%Instance1.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.515: type = pattern_type %struct_type.d [concrete] // CHECK:STDOUT: %self.param_patt.3aa: %pattern_type.515 = value_param_pattern [concrete] @@ -869,6 +876,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete = constants.%struct_type.d] // CHECK:STDOUT: %Instance1.ref: type = name_ref Instance1, file.%Instance1.decl [concrete = constants.%Instance1.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @struct_type.d.as.Instance1.impl.%struct_type.d, @Instance1 [concrete = constants.%.100] // CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [concrete = constants.%InstanceCall] { // CHECK:STDOUT: %n.param_patt: %pattern_type.515 = value_param_pattern [concrete = constants.%n.param_patt] // CHECK:STDOUT: %n.patt: %pattern_type.515 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] @@ -1030,6 +1038,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0: %Instance2.assoc_type = assoc_entity element0, @Instance2.WithSelf.%Instance2.WithSelf.G2.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.d50: = impl_self_witness %struct_type.e, @Instance2 [concrete] // CHECK:STDOUT: %Instance2.impl_witness: = impl_witness @struct_type.e.as.Instance2.impl.%Instance2.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.efd: type = pattern_type %struct_type.e [concrete] // CHECK:STDOUT: %self.param_patt.5cd: %pattern_type.efd = value_param_pattern [concrete] @@ -1055,6 +1064,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete = constants.%struct_type.e] // CHECK:STDOUT: %Instance2.ref: type = name_ref Instance2, file.%Instance2.decl [concrete = constants.%Instance2.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @struct_type.e.as.Instance2.impl.%struct_type.e, @Instance2 [concrete = constants.%.d50] // CHECK:STDOUT: %InstanceCallFail.decl: %InstanceCallFail.type = fn_decl @InstanceCallFail [concrete = constants.%InstanceCallFail] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/declaration.carbon b/toolchain/check/testdata/impl/declaration.carbon index 814b2024116e..5f428457aeae 100644 --- a/toolchain/check/testdata/impl/declaration.carbon +++ b/toolchain/check/testdata/impl/declaration.carbon @@ -27,6 +27,7 @@ impl i32 as I {} // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.2a7: = impl_self_witness %i32, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -51,10 +52,12 @@ impl i32 as I {} // CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc17: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @i32.as.I.impl.%i32.loc17, @I [concrete = constants.%.2a7] // CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %i32.loc19: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @i32.as.I.impl.%i32.loc19, @I [concrete = constants.%.2a7] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/empty.carbon b/toolchain/check/testdata/impl/empty.carbon index 4775ab433109..8843c153bf17 100644 --- a/toolchain/check/testdata/impl/empty.carbon +++ b/toolchain/check/testdata/impl/empty.carbon @@ -27,6 +27,7 @@ impl i32 as Empty { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.d34: = impl_self_witness %i32, @Empty [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness @i32.as.Empty.impl.%Empty.impl_witness_table [concrete] // CHECK:STDOUT: %Empty.facet: %Empty.type = facet_value %i32, (%Empty.impl_witness) [concrete] // CHECK:STDOUT: } @@ -51,6 +52,7 @@ impl i32 as Empty { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @i32.as.Empty.impl.%i32, @Empty [concrete = constants.%.d34] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty { diff --git a/toolchain/check/testdata/impl/error_recovery.carbon b/toolchain/check/testdata/impl/error_recovery.carbon index b06c0c1e8b8f..3dd8b1f70168 100644 --- a/toolchain/check/testdata/impl/error_recovery.carbon +++ b/toolchain/check/testdata/impl/error_recovery.carbon @@ -139,6 +139,7 @@ impl C as I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -147,6 +148,7 @@ impl C as I { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.I.impl.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref { diff --git a/toolchain/check/testdata/impl/extend_impl.carbon b/toolchain/check/testdata/impl/extend_impl.carbon index 9c8f27605d41..cf749c704749 100644 --- a/toolchain/check/testdata/impl/extend_impl.carbon +++ b/toolchain/check/testdata/impl/extend_impl.carbon @@ -112,6 +112,7 @@ extend impl nonexistent* as I {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.ba1: = impl_self_witness %C, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] @@ -139,6 +140,7 @@ extend impl nonexistent* as I {} // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C.as.HasF.impl.%Self.ref, @HasF [concrete = constants.%.ba1] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index f0e48ed0a6ee..6967060dc3a5 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -86,6 +86,7 @@ class X(U: type) { // CHECK:STDOUT: %complete_type.0c6: = complete_type_witness %struct_type.x.a15 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasF.type.9e1: type = facet_type <@HasF, @HasF(%Param)> [concrete] +// CHECK:STDOUT: %.cb5: = impl_self_witness %C, @HasF, @HasF(%Param) [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %Self.ef3: %HasF.type.9e1 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %HasF.WithSelf.F.type.b42: type = fn_type @HasF.WithSelf.F, @HasF.WithSelf(%Param, %Self.822) [symbolic] @@ -274,6 +275,7 @@ class X(U: type) { // CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [concrete = constants.%Param] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%Param)> [concrete = constants.%HasF.type.9e1] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.HasF.impl.%Self.ref, @HasF, @HasF(constants.%Param) [concrete = constants.%.cb5] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -472,6 +474,7 @@ class X(U: type) { // CHECK:STDOUT: %X.generic: %X.type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic] // CHECK:STDOUT: %I.type.3fe556.2: type = facet_type <@I, @I(%U)> [symbolic] +// CHECK:STDOUT: %.3db: = impl_self_witness %X, @I, @I(%U) [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @X.as.I.impl.%I.impl_witness_table, @X.as.I.impl(%U) [symbolic] // CHECK:STDOUT: %Self.1916c4.2: %I.type.3fe556.2 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.WithSelf.F.type.09f79b.2: type = fn_type @I.WithSelf.F, @I.WithSelf(%U, %Self.1916c4.1) [symbolic] @@ -579,6 +582,7 @@ class X(U: type) { // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic = %X (constants.%X)] // CHECK:STDOUT: %I.type.loc9_21.1: type = facet_type <@I, @I(%U)> [symbolic = %I.type.loc9_21.1 (constants.%I.type.3fe556.2)] +// CHECK:STDOUT: %.loc9: = impl_self_witness %X, @I, @I(%U) [symbolic = %.loc9 (constants.%.3db)] // CHECK:STDOUT: %I.impl_witness.loc9_23.2: = impl_witness %I.impl_witness_table, @X.as.I.impl(%U) [symbolic = %I.impl_witness.loc9_23.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -629,7 +633,8 @@ class X(U: type) { // CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc8_10.2 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %I.type.loc9_21.2: type = facet_type <@I, @I(constants.%U)> [symbolic = %I.type.loc9_21.1 (constants.%I.type.3fe556.2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc9: type = specific_constant @X.as.I.impl.%I.type.loc9_21.2, @X.as.I.impl(constants.%U) [symbolic = %I.type (constants.%I.type.3fe556.2)] +// CHECK:STDOUT: %.loc9_23: = impl_self_witness @X.as.I.impl.%Self.ref, @I, @I(constants.%U) [symbolic = @X.as.I.impl.%.loc9 (constants.%.3db)] +// CHECK:STDOUT: %.loc9_21: type = specific_constant @X.as.I.impl.%I.type.loc9_21.2, @X.as.I.impl(constants.%U) [symbolic = %I.type (constants.%I.type.3fe556.2)] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -637,7 +642,7 @@ class X(U: type) { // CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: .I = // CHECK:STDOUT: .U = -// CHECK:STDOUT: extend %.loc9 +// CHECK:STDOUT: extend %.loc9_21 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -718,6 +723,7 @@ class X(U: type) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %X => constants.%X // CHECK:STDOUT: %I.type.loc9_21.1 => constants.%I.type.3fe556.2 +// CHECK:STDOUT: %.loc9 => constants.%.3db // CHECK:STDOUT: %I.impl_witness.loc9_23.2 => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/fail_alias.carbon b/toolchain/check/testdata/impl/fail_alias.carbon index f76b6488d1fb..1b1b114c0f76 100644 --- a/toolchain/check/testdata/impl/fail_alias.carbon +++ b/toolchain/check/testdata/impl/fail_alias.carbon @@ -37,6 +37,7 @@ impl AC as AI {} // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.e103db.1.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -58,10 +59,12 @@ impl AC as AI {} // CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [concrete = constants.%C] // CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc21: = impl_self_witness @C.as.I.impl.e103db.1.%AC.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: impl_decl @C.as.I.impl.e103db.2 [concrete] {} { // CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [concrete = constants.%C] // CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc30: = impl_self_witness @C.as.I.impl.e103db.2.%AC.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/fail_call_invalid.carbon b/toolchain/check/testdata/impl/fail_call_invalid.carbon index dbaf6fcafd8a..e9bfe9edb62f 100644 --- a/toolchain/check/testdata/impl/fail_call_invalid.carbon +++ b/toolchain/check/testdata/impl/fail_call_invalid.carbon @@ -47,6 +47,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.e1f: = impl_self_witness %i32, @Simple [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @i32.as.Simple.impl.%Simple.impl_witness_table [concrete] // CHECK:STDOUT: %i32.as.Simple.impl.G.type.321a2c.1: type = fn_type @i32.as.Simple.impl.G.loc24_25.1 [concrete] // CHECK:STDOUT: %i32.as.Simple.impl.G.d407b2.1: %i32.as.Simple.impl.G.type.321a2c.1 = struct_value () [concrete] @@ -87,6 +88,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @i32.as.Simple.impl.%i32, @Simple [concrete = constants.%.e1f] // CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [concrete = constants.%InstanceCall] { // CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt] // CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] diff --git a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon index e2bf0cd098a2..5f6d89cd5af5 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -46,6 +46,7 @@ class C { // CHECK:STDOUT: %GenericInterface.assoc_type: type = assoc_entity_type @GenericInterface, @GenericInterface(%T) [symbolic] // CHECK:STDOUT: %assoc0: %GenericInterface.assoc_type = assoc_entity element0, @GenericInterface.WithSelf.%GenericInterface.WithSelf.F.decl [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.9b3: = impl_self_witness %C, @GenericInterface, @GenericInterface(%T) [symbolic] // CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness @C.as.GenericInterface.impl.%GenericInterface.impl_witness_table, @C.as.GenericInterface.impl(%T) [symbolic] // CHECK:STDOUT: %C.as.GenericInterface.impl.F.type: type = fn_type @C.as.GenericInterface.impl.F, @C.as.GenericInterface.impl(%T) [symbolic] // CHECK:STDOUT: %C.as.GenericInterface.impl.F: %C.as.GenericInterface.impl.F.type = struct_value () [symbolic] @@ -109,6 +110,7 @@ class C { // CHECK:STDOUT: %T.patt.loc24_24.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_24.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc24_24.1: type = symbolic_binding T, 0 [symbolic = %T.loc24_24.1 (constants.%T)] // CHECK:STDOUT: %GenericInterface.type.loc24_53.1: type = facet_type <@GenericInterface, @GenericInterface(%T.loc24_24.1)> [symbolic = %GenericInterface.type.loc24_53.1 (constants.%GenericInterface.type.4e1)] +// CHECK:STDOUT: %.loc24_55: = impl_self_witness constants.%C, @GenericInterface, @GenericInterface(%T.loc24_24.1) [symbolic = %.loc24_55 (constants.%.9b3)] // CHECK:STDOUT: %GenericInterface.impl_witness.loc24_55.2: = impl_witness %GenericInterface.impl_witness_table, @C.as.GenericInterface.impl(%T.loc24_24.1) [symbolic = %GenericInterface.impl_witness.loc24_55.2 (constants.%GenericInterface.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -149,6 +151,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc24_24.2: type = symbolic_binding T, 0 [symbolic = %T.loc24_24.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc24: = impl_self_witness @C.as.GenericInterface.impl.%Self.ref, @GenericInterface, @GenericInterface(constants.%T) [symbolic = @C.as.GenericInterface.impl.%.loc24_55 (constants.%.9b3)] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -209,6 +212,7 @@ class C { // CHECK:STDOUT: %T.patt.loc24_24.2 => constants.%T.patt // CHECK:STDOUT: %T.loc24_24.1 => constants.%T // CHECK:STDOUT: %GenericInterface.type.loc24_53.1 => constants.%GenericInterface.type.4e1 +// CHECK:STDOUT: %.loc24_55 => constants.%.9b3 // CHECK:STDOUT: %GenericInterface.impl_witness.loc24_55.2 => constants.%GenericInterface.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon index f6cb2bd1ab68..cb85aa74dd0e 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -71,6 +71,7 @@ fn F() { // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.2ef: = impl_self_witness %empty_tuple.type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -93,6 +94,7 @@ fn F() { // CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @empty_tuple.type.as.I.impl.%.loc9_14.2, @I [concrete = constants.%.2ef] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -126,6 +128,7 @@ fn F() { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.948: = impl_self_witness %empty_struct_type, @J [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @empty_struct_type.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -174,6 +177,7 @@ fn F() { // CHECK:STDOUT: %.loc10_16.2: type = converted %.loc10_16.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_struct_type.as.J.impl.%.loc10_16.2, @J [concrete = constants.%.948] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -192,6 +196,7 @@ fn F() { // CHECK:STDOUT: %.as.Z.impl.Zero.type: type = fn_type @.as.Z.impl.Zero, @.as.Z.impl(%Self.cb6) [symbolic] // CHECK:STDOUT: %.as.Z.impl.Zero: %.as.Z.impl.Zero.type = struct_value () [symbolic] // CHECK:STDOUT: %Point: type = class_type @Point [concrete] +// CHECK:STDOUT: %.354: = impl_self_witness %Point, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness @Point.as.Z.impl.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %Point.as.Z.impl.Zero.type: type = fn_type @Point.as.Z.impl.Zero [concrete] // CHECK:STDOUT: %Point.as.Z.impl.Zero: %Point.as.Z.impl.Zero.type = struct_value () [concrete] @@ -248,6 +253,7 @@ fn F() { // CHECK:STDOUT: impl_decl @.as.Z.impl [concrete] {} { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness , @Z [concrete = ] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -291,6 +297,7 @@ fn F() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Point [concrete = constants.%Point] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc16: = impl_self_witness @Point.as.Z.impl.%Self.ref, @Z [concrete = constants.%.354] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon index 832ffd65b258..b739d4d28c19 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon @@ -61,7 +61,9 @@ class E { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] +// CHECK:STDOUT: %.393: = impl_self_witness %D, @I [concrete] // CHECK:STDOUT: %E: type = class_type @E [concrete] +// CHECK:STDOUT: %.e0d: = impl_self_witness %E, @I [concrete] // CHECK:STDOUT: %I.impl_witness.6e5: = impl_witness @E.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %E, (%I.impl_witness.6e5) [concrete] // CHECK:STDOUT: } @@ -123,6 +125,7 @@ class E { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness , @I [concrete = ] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -137,6 +140,7 @@ class E { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc33: = impl_self_witness @D.as.I.impl.%D.ref, @I [concrete = constants.%.393] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -152,6 +156,7 @@ class E { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc48: = impl_self_witness @E.as.I.impl.%Self.ref, @I [concrete = constants.%.e0d] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon index 21c8f7482fe7..3679dfe70437 100644 --- a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon @@ -31,6 +31,7 @@ interface I { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic] +// CHECK:STDOUT: %.d54: = impl_self_witness %C, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -63,6 +64,7 @@ interface I { // CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %.loc24: = impl_self_witness %C, @I [symbolic = %.loc24 (constants.%.d54)] // CHECK:STDOUT: %I.impl_witness.loc24_21.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%Self) [symbolic = %I.impl_witness.loc24_21.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %I.ref; @@ -76,6 +78,7 @@ interface I { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc24: = impl_self_witness @C.as.I.impl.%Self.ref, @I [symbolic = @C.as.I.impl.%.loc24 (constants.%.d54)] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -93,6 +96,7 @@ interface I { // CHECK:STDOUT: specific @C.as.I.impl(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %C => constants.%C +// CHECK:STDOUT: %.loc24 => constants.%.d54 // CHECK:STDOUT: %I.impl_witness.loc24_21.2 => constants.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon index 3b2f4e973f14..a2f9d9ed9826 100644 --- a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon @@ -35,6 +35,7 @@ fn F(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] @@ -71,6 +72,7 @@ fn F(c: C) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc25: = impl_self_witness @C.as.I.impl.%Self.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon index 898e9c272834..930679d70f20 100644 --- a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon +++ b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon @@ -132,6 +132,7 @@ class X { // CHECK:STDOUT: impl_decl @.as.I.impl [concrete] {} { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness , @I [concrete = ] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -225,6 +226,7 @@ class X { // CHECK:STDOUT: impl_decl @.as.J.impl [concrete] {} { // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness , @J [concrete = ] // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G] // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.ref() // CHECK:STDOUT: return @@ -255,6 +257,7 @@ class X { // CHECK:STDOUT: %.as.Z.impl.Method: %.as.Z.impl.Method.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.0cf [symbolic] // CHECK:STDOUT: %Point: type = class_type @Point [concrete] +// CHECK:STDOUT: %.354: = impl_self_witness %Point, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness @Point.as.Z.impl.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %Point.as.Z.impl.Zero.type: type = fn_type @Point.as.Z.impl.Zero [concrete] // CHECK:STDOUT: %Point.as.Z.impl.Zero: %Point.as.Z.impl.Zero.type = struct_value () [concrete] @@ -329,6 +332,7 @@ class X { // CHECK:STDOUT: impl_decl @.as.Z.impl [concrete] {} { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness , @Z [concrete = ] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -397,6 +401,7 @@ class X { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Point [concrete = constants.%Point] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @Point.as.Z.impl.%Self.ref, @Z [concrete = constants.%.354] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -558,6 +563,7 @@ class X { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] +// CHECK:STDOUT: %.57f: = impl_self_witness %X, @A [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @X.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %X.as.A.impl.B.type: type = fn_type @X.as.A.impl.B [concrete] // CHECK:STDOUT: %X.as.A.impl.B: %X.as.A.impl.B.type = struct_value () [concrete] @@ -623,6 +629,7 @@ class X { // CHECK:STDOUT: impl_decl @.as.C.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness , @C [concrete = ] // CHECK:STDOUT: %X.as.A.impl.B.decl: %X.as.A.impl.B.type = fn_decl @X.as.A.impl.B [concrete = constants.%X.as.A.impl.B] {} {} // CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (%X.as.A.impl.B.decl), @X.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] @@ -646,6 +653,7 @@ class X { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [concrete = constants.%X] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @X.as.A.impl.%Self.ref, @A [concrete = constants.%.57f] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon index d586af7c6395..8c082a66947a 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon @@ -32,6 +32,7 @@ impl () as I {} // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%T [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.2ef: = impl_self_witness %empty_tuple.type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -46,6 +47,7 @@ impl () as I {} // CHECK:STDOUT: %.loc24_7.2: type = converted %.loc24_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc24: = impl_self_witness @empty_tuple.type.as.I.impl.%.loc24_7.2, @I [concrete = constants.%.2ef] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon index 9b75f0191808..a7e7ffda8267 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -240,6 +240,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.6c9: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] // CHECK:STDOUT: %NoF: type = class_type @NoF [concrete] +// CHECK:STDOUT: %.6c7: = impl_self_witness %NoF, @I [concrete] // CHECK:STDOUT: %I.impl_witness.85e: = impl_witness @NoF.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet.752: %I.type = facet_value %NoF, (%I.impl_witness.85e) [concrete] // CHECK:STDOUT: %I.WithSelf.F.type.3d3: type = fn_type @I.WithSelf.F, @I.WithSelf(%I.facet.752) [concrete] @@ -247,6 +248,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %FNotFunction: type = class_type @FNotFunction [concrete] +// CHECK:STDOUT: %.d4c: = impl_self_witness %FNotFunction, @I [concrete] // CHECK:STDOUT: %I.impl_witness.b51: = impl_witness @FNotFunction.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %F: type = class_type @F [concrete] // CHECK:STDOUT: %I.facet.010: %I.type = facet_value %FNotFunction, (%I.impl_witness.b51) [concrete] @@ -255,11 +257,13 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %PossiblyF.type: type = fn_type @PossiblyF [concrete] // CHECK:STDOUT: %PossiblyF: %PossiblyF.type = struct_value () [concrete] // CHECK:STDOUT: %FAlias: type = class_type @FAlias [concrete] +// CHECK:STDOUT: %.a11: = impl_self_witness %FAlias, @I [concrete] // CHECK:STDOUT: %I.impl_witness.e2e: = impl_witness @FAlias.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet.f6f: %I.type = facet_value %FAlias, (%I.impl_witness.e2e) [concrete] // CHECK:STDOUT: %I.WithSelf.F.type.751: type = fn_type @I.WithSelf.F, @I.WithSelf(%I.facet.f6f) [concrete] // CHECK:STDOUT: %I.WithSelf.F.6d6: %I.WithSelf.F.type.751 = struct_value () [concrete] // CHECK:STDOUT: %FExtraParam: type = class_type @FExtraParam [concrete] +// CHECK:STDOUT: %.44b: = impl_self_witness %FExtraParam, @I [concrete] // CHECK:STDOUT: %I.impl_witness.99e: = impl_witness @FExtraParam.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %b.param_patt.792: %pattern_type.831 = value_param_pattern [concrete] @@ -272,6 +276,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %FExtraParam.as.I.impl.F.type.ec7b0b.2: type = fn_type @FExtraParam.as.I.impl.F.loc69_18.2 [concrete] // CHECK:STDOUT: %FExtraParam.as.I.impl.F.ef9801.2: %FExtraParam.as.I.impl.F.type.ec7b0b.2 = struct_value () [concrete] // CHECK:STDOUT: %FExtraImplicitParam: type = class_type @FExtraImplicitParam [concrete] +// CHECK:STDOUT: %.77c: = impl_self_witness %FExtraImplicitParam, @I [concrete] // CHECK:STDOUT: %I.impl_witness.2da: = impl_witness @FExtraImplicitParam.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.54d: type = pattern_type %FExtraImplicitParam [concrete] // CHECK:STDOUT: %self.param_patt.f41: %pattern_type.54d = value_param_pattern [concrete] @@ -284,6 +289,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.type.54cac2.2: type = fn_type @FExtraImplicitParam.as.I.impl.F.loc85_15.2 [concrete] // CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.a42f35.2: %FExtraImplicitParam.as.I.impl.F.type.54cac2.2 = struct_value () [concrete] // CHECK:STDOUT: %FExtraReturnType: type = class_type @FExtraReturnType [concrete] +// CHECK:STDOUT: %.ebd: = impl_self_witness %FExtraReturnType, @I [concrete] // CHECK:STDOUT: %I.impl_witness.b63: = impl_witness @FExtraReturnType.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %.f34: Core.Form = init_form bool [concrete] // CHECK:STDOUT: %return.param_patt.5a1: %pattern_type.831 = out_param_pattern [concrete] @@ -302,6 +308,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] // CHECK:STDOUT: %assoc0.000: %J.assoc_type = assoc_entity element0, @J.WithSelf.%J.WithSelf.F.decl [concrete] // CHECK:STDOUT: %FMissingParam: type = class_type @FMissingParam [concrete] +// CHECK:STDOUT: %.599: = impl_self_witness %FMissingParam, @J [concrete] // CHECK:STDOUT: %J.impl_witness.a34: = impl_witness @FMissingParam.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %FMissingParam.as.J.impl.F.type.aad6ec.1: type = fn_type @FMissingParam.as.J.impl.F.loc117_29.1 [concrete] // CHECK:STDOUT: %FMissingParam.as.J.impl.F.dd09dc.1: %FMissingParam.as.J.impl.F.type.aad6ec.1 = struct_value () [concrete] @@ -311,6 +318,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %FMissingParam.as.J.impl.F.type.aad6ec.2: type = fn_type @FMissingParam.as.J.impl.F.loc117_29.2 [concrete] // CHECK:STDOUT: %FMissingParam.as.J.impl.F.dd09dc.2: %FMissingParam.as.J.impl.F.type.aad6ec.2 = struct_value () [concrete] // CHECK:STDOUT: %FMissingImplicitParam: type = class_type @FMissingImplicitParam [concrete] +// CHECK:STDOUT: %.f79: = impl_self_witness %FMissingImplicitParam, @J [concrete] // CHECK:STDOUT: %J.impl_witness.7e6: = impl_witness @FMissingImplicitParam.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.type.f666a8.1: type = fn_type @FMissingImplicitParam.as.J.impl.F.loc130_26.1 [concrete] // CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.620ed1.1: %FMissingImplicitParam.as.J.impl.F.type.f666a8.1 = struct_value () [concrete] @@ -320,6 +328,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.type.f666a8.2: type = fn_type @FMissingImplicitParam.as.J.impl.F.loc130_26.2 [concrete] // CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.620ed1.2: %FMissingImplicitParam.as.J.impl.F.type.f666a8.2 = struct_value () [concrete] // CHECK:STDOUT: %FMissingReturnType: type = class_type @FMissingReturnType [concrete] +// CHECK:STDOUT: %.199: = impl_self_witness %FMissingReturnType, @J [concrete] // CHECK:STDOUT: %J.impl_witness.05c: = impl_witness @FMissingReturnType.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.type.9cd56a.1: type = fn_type @FMissingReturnType.as.J.impl.F.loc148_30.1 [concrete] // CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.6975be.1: %FMissingReturnType.as.J.impl.F.type.9cd56a.1 = struct_value () [concrete] @@ -338,6 +347,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.945: %ImplicitAs.WithSelf.Convert.type.97e = struct_value () [symbolic] // CHECK:STDOUT: %assoc0.0ac: %ImplicitAs.assoc_type.fcc = assoc_entity element0, imports.%Core.import_ref.f9d [symbolic] // CHECK:STDOUT: %FDifferentParamType: type = class_type @FDifferentParamType [concrete] +// CHECK:STDOUT: %.593: = impl_self_witness %FDifferentParamType, @J [concrete] // CHECK:STDOUT: %J.impl_witness.553: = impl_witness @FDifferentParamType.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.5d3: type = pattern_type %FDifferentParamType [concrete] // CHECK:STDOUT: %b.param_patt.0a8: %pattern_type.5d3 = value_param_pattern [concrete] @@ -353,6 +363,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %ImplicitAs.assoc_type.503: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%FDifferentParamType) [concrete] // CHECK:STDOUT: %assoc0.603: %ImplicitAs.assoc_type.503 = assoc_entity element0, imports.%Core.import_ref.cb2 [concrete] // CHECK:STDOUT: %FDifferentImplicitParamType: type = class_type @FDifferentImplicitParamType [concrete] +// CHECK:STDOUT: %.46c: = impl_self_witness %FDifferentImplicitParamType, @J [concrete] // CHECK:STDOUT: %J.impl_witness.cc3: = impl_witness @FDifferentImplicitParamType.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.1bc: type = pattern_type %FDifferentImplicitParamType [concrete] // CHECK:STDOUT: %self.param_patt.ea6: %pattern_type.1bc = value_param_pattern [concrete] @@ -368,6 +379,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %ImplicitAs.assoc_type.36e: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%FDifferentImplicitParamType) [concrete] // CHECK:STDOUT: %assoc0.769: %ImplicitAs.assoc_type.36e = assoc_entity element0, imports.%Core.import_ref.cb2 [concrete] // CHECK:STDOUT: %FDifferentReturnType: type = class_type @FDifferentReturnType [concrete] +// CHECK:STDOUT: %.ce7: = impl_self_witness %FDifferentReturnType, @J [concrete] // CHECK:STDOUT: %J.impl_witness.6ab: = impl_witness @FDifferentReturnType.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %.1f5: Core.Form = init_form %FDifferentReturnType [concrete] // CHECK:STDOUT: %pattern_type.b9f: type = pattern_type %FDifferentReturnType [concrete] @@ -406,6 +418,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type @SelfNested [concrete] // CHECK:STDOUT: %assoc0.219: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.WithSelf.%SelfNested.WithSelf.F.decl [concrete] // CHECK:STDOUT: %SelfNestedBadParam: type = class_type @SelfNestedBadParam [concrete] +// CHECK:STDOUT: %.83b: = impl_self_witness %SelfNestedBadParam, @SelfNested [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.d7c: = impl_witness @SelfNestedBadParam.as.SelfNested.impl.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.52e: type = ptr_type %SelfNestedBadParam [concrete] // CHECK:STDOUT: %struct_type.x.y.fb8: type = struct_type {.x: %i32, .y: %i32} [concrete] @@ -436,6 +449,7 @@ class SelfNestedBadReturnType { // 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: %SelfNestedBadReturnType: type = class_type @SelfNestedBadReturnType [concrete] +// CHECK:STDOUT: %.020: = impl_self_witness %SelfNestedBadReturnType, @SelfNested [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.abd: = impl_witness @SelfNestedBadReturnType.as.SelfNested.impl.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.f55: type = ptr_type %SelfNestedBadReturnType [concrete] // CHECK:STDOUT: %struct_type.x.y.f6a: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [concrete] @@ -1060,6 +1074,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NoF [concrete = constants.%NoF] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc25: = impl_self_witness @NoF.as.I.impl.%Self.ref, @I [concrete = constants.%.6c7] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1073,6 +1088,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FNotFunction [concrete = constants.%FNotFunction] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc29: = impl_self_witness @FNotFunction.as.I.impl.%Self.ref, @I [concrete = constants.%.d4c] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1088,6 +1104,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FAlias [concrete = constants.%FAlias] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc45: = impl_self_witness @FAlias.as.I.impl.%Self.ref, @I [concrete = constants.%.a11] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1102,6 +1119,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraParam [concrete = constants.%FExtraParam] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc58: = impl_self_witness @FExtraParam.as.I.impl.%Self.ref, @I [concrete = constants.%.44b] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1115,6 +1133,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [concrete = constants.%FExtraImplicitParam] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc74: = impl_self_witness @FExtraImplicitParam.as.I.impl.%Self.ref, @I [concrete = constants.%.77c] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1128,6 +1147,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraReturnType [concrete = constants.%FExtraReturnType] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc91: = impl_self_witness @FExtraReturnType.as.I.impl.%Self.ref, @I [concrete = constants.%.ebd] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1141,6 +1161,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingParam [concrete = constants.%FMissingParam] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc106: = impl_self_witness @FMissingParam.as.J.impl.%Self.ref, @J [concrete = constants.%.599] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1154,6 +1175,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingImplicitParam [concrete = constants.%FMissingImplicitParam] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc122: = impl_self_witness @FMissingImplicitParam.as.J.impl.%Self.ref, @J [concrete = constants.%.f79] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1167,6 +1189,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingReturnType [concrete = constants.%FMissingReturnType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc135: = impl_self_witness @FMissingReturnType.as.J.impl.%Self.ref, @J [concrete = constants.%.199] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1180,6 +1203,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [concrete = constants.%FDifferentParamType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc153: = impl_self_witness @FDifferentParamType.as.J.impl.%Self.ref, @J [concrete = constants.%.593] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1193,6 +1217,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc168: = impl_self_witness @FDifferentImplicitParamType.as.J.impl.%Self.ref, @J [concrete = constants.%.46c] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1206,6 +1231,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [concrete = constants.%FDifferentReturnType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc181: = impl_self_witness @FDifferentReturnType.as.J.impl.%Self.ref, @J [concrete = constants.%.ce7] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1219,6 +1245,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadParam [concrete = constants.%SelfNestedBadParam] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc203: = impl_self_witness @SelfNestedBadParam.as.SelfNested.impl.%Self.ref, @SelfNested [concrete = constants.%.83b] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -1233,6 +1260,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadReturnType [concrete = constants.%SelfNestedBadReturnType] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc216: = impl_self_witness @SelfNestedBadReturnType.as.SelfNested.impl.%Self.ref, @SelfNested [concrete = constants.%.020] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_type.carbon b/toolchain/check/testdata/impl/fail_impl_bad_type.carbon index e3e561e35484..f2452b3154c1 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_type.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_type.carbon @@ -54,6 +54,7 @@ impl true as I {} // CHECK:STDOUT: %.loc24: type = converted %true, [concrete = ] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc24: = impl_self_witness , @I [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/fail_redefinition.carbon b/toolchain/check/testdata/impl/fail_redefinition.carbon index 6f34d01d5cbc..1bdf2dab6bdb 100644 --- a/toolchain/check/testdata/impl/fail_redefinition.carbon +++ b/toolchain/check/testdata/impl/fail_redefinition.carbon @@ -34,6 +34,7 @@ impl i32 as I {} // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.2a7: = impl_self_witness %i32, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @i32.as.I.impl.6a2a49.1.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -58,10 +59,12 @@ impl i32 as I {} // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @i32.as.I.impl.6a2a49.1.%i32, @I [concrete = constants.%.2a7] // CHECK:STDOUT: impl_decl @i32.as.I.impl.6a2a49.2 [concrete] {} { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc26: = impl_self_witness @i32.as.I.impl.6a2a49.2.%i32, @I [concrete = constants.%.2a7] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon index 155e3914d363..561f29d9cfef 100644 --- a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon +++ b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon @@ -68,6 +68,7 @@ impl i32 as I { // CHECK:STDOUT: %I.WithSelf.F.ec6: %I.WithSelf.F.type.dcc = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.6c9: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.cb2: = impl_self_witness bool, @I [concrete] // CHECK:STDOUT: %I.impl_witness.020: = impl_witness @bool.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet.11c: %I.type = facet_value bool, (%I.impl_witness.020) [concrete] // CHECK:STDOUT: %C.071: type = class_type @C, @C(%I.type, %I.facet.11c) [concrete] @@ -82,6 +83,7 @@ impl i32 as I { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.2a7: = impl_self_witness %i32, @I [concrete] // CHECK:STDOUT: %I.impl_witness.903: = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %X.patt.014: %pattern_type.98f = symbolic_binding_pattern X, 1 [symbolic] // CHECK:STDOUT: %C.8dc: type = class_type @C, @C(type, %i32) [concrete] @@ -156,10 +158,12 @@ impl i32 as I { // CHECK:STDOUT: %.loc24: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc24: = impl_self_witness @bool.as.I.impl.%.loc24, @I [concrete = constants.%.cb2] // CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc31: = impl_self_witness @i32.as.I.impl.%i32, @I [concrete = constants.%.2a7] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/forward_decls.carbon b/toolchain/check/testdata/impl/forward_decls.carbon index ba834009947b..600db94e952c 100644 --- a/toolchain/check/testdata/impl/forward_decls.carbon +++ b/toolchain/check/testdata/impl/forward_decls.carbon @@ -236,6 +236,7 @@ impl C as Y {} // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_struct_type, (%I.impl_witness) [concrete] @@ -260,12 +261,14 @@ impl C as Y {} // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc4: = impl_self_witness @empty_struct_type.as.I.impl.%.loc4_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @empty_struct_type.as.I.impl.%.loc7_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -302,6 +305,7 @@ impl C as Y {} // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %I.WithSelf.G.type.d1f: type = fn_type @I.WithSelf.G, @I.WithSelf(%Self) [symbolic] @@ -334,12 +338,14 @@ impl C as Y {} // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc4: = impl_self_witness @empty_struct_type.as.I.impl.%.loc4_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc9_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_7.2: type = converted %.loc9_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc9: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @empty_struct_type.as.I.impl.%.loc9_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -412,6 +418,7 @@ impl C as Y {} // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %I.type, %type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.37e: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_struct_type, (%I.impl_witness) [concrete] @@ -446,6 +453,7 @@ impl C as Y {} // CHECK:STDOUT: %bound_method.loc4: = bound_method %I.ref.loc4_12, %impl.elem0.loc4 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc4: init type = call %bound_method.loc4(%I.ref.loc4_12, %I.ref.loc4_16) [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc4_17: = impl_self_witness @empty_struct_type.as.I.impl.%.loc4_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %.loc7_14.1: type = value_of_initializer @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc7 [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_14.2: type = converted @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc7, %.loc7_14.1 [concrete = constants.%I.type] @@ -458,6 +466,7 @@ impl C as Y {} // CHECK:STDOUT: %bound_method.loc7: = bound_method %I.ref.loc7_12, %impl.elem0.loc7 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] // CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc7: init type = call %bound_method.loc7(%I.ref.loc7_12, %I.ref.loc7_16) [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7_18: = impl_self_witness @empty_struct_type.as.I.impl.%.loc7_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -507,6 +516,7 @@ impl C as Y {} // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_struct_type, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -546,6 +556,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @empty_struct_type.as.I.impl.%.loc6_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] @@ -567,6 +578,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_struct_type.as.I.impl.%.loc8_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -628,6 +640,7 @@ impl C as Y {} // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] @@ -671,6 +684,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref.loc7, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_19: %empty_tuple.type = converted @__global_init.%.loc9, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_9.1: type = splice_block %impl.elem0 [concrete = constants.%empty_tuple.type] { @@ -705,6 +719,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.I.impl.%C.ref.loc11, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -780,6 +795,7 @@ impl C as Y {} // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] @@ -823,6 +839,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref.loc7, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_22: %empty_tuple.type = converted @__global_init.%.loc9, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_16.1: type = splice_block %impl.elem0 [concrete = constants.%empty_tuple.type] { @@ -859,6 +876,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.I.impl.%C.ref.loc11, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -924,6 +942,7 @@ impl C as Y {} // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -951,6 +970,7 @@ impl C as Y {} // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref.loc7, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %.loc13_16.1: type = splice_block %impl.elem0 [concrete = ] { // CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type] @@ -969,6 +989,7 @@ impl C as Y {} // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc22: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @C.as.I.impl.%C.ref.loc22, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -1158,6 +1179,7 @@ impl C as Y {} // CHECK:STDOUT: %.b67: = impl_self_witness %.Self, @I, @I(%C) [symbolic_self] // CHECK:STDOUT: %impl.elem0.f8c: type = impl_witness_access %.b67, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.52d: type = facet_type <@I, @I(%C) where %impl.elem0.f8c = %C> [concrete] +// CHECK:STDOUT: %.fd4: = impl_self_witness %D, @I, @I(%C) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @D.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type.c9e = facet_value %D, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -1210,6 +1232,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc8_25.2 = requirement_rewrite %impl.elem0.loc8_22.2, %C.ref.loc8_27 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @D.as.I.impl.%D.ref.loc8, @I, @I(constants.%C) [concrete = constants.%.fd4] // CHECK:STDOUT: %C.decl.loc10: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: impl_decl @D.as.I.impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D.decl [concrete = constants.%D] @@ -1233,6 +1256,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc11_25.2 = requirement_rewrite %impl.elem0.loc11_22.2, %C.ref.loc11_27 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @D.as.I.impl.%D.ref.loc11, @I, @I(constants.%C) [concrete = constants.%.fd4] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(%U.loc3_14.2: type) { @@ -1331,6 +1355,7 @@ impl C as Y {} // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.393: = impl_self_witness %D, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @D.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] @@ -1372,6 +1397,7 @@ impl C as Y {} // CHECK:STDOUT: %D.ref.loc5: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc5: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @D.as.I.impl.%D.ref.loc5, @I [concrete = constants.%.393] // CHECK:STDOUT: %C.decl.loc6: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %T.patt.loc12: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1400,6 +1426,7 @@ impl C as Y {} // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @D.as.I.impl.%D.ref.loc11, @I [concrete = constants.%.393] // CHECK:STDOUT: %C.decl.loc12: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %T.patt.loc12: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1599,6 +1626,7 @@ impl C as Y {} // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -1639,6 +1667,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc9_22.2 = requirement_rewrite %impl.elem0.loc9_19.2, %.loc9_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C.as.I.impl.%C.ref.loc9, @I [concrete = constants.%.b7f] // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -1659,6 +1688,7 @@ impl C as Y {} // CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @C.as.I.impl.%C.ref.loc18, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -1733,6 +1763,7 @@ impl C as Y {} // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.65a: = impl_self_witness %C, @X [concrete] // CHECK:STDOUT: %X.impl_witness: = impl_witness @C.as.X.impl.%X.impl_witness_table [concrete] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %Self.b43: %X.type = symbolic_binding Self, 0 [symbolic] @@ -1750,6 +1781,7 @@ impl C as Y {} // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%X.facet) [concrete] // CHECK:STDOUT: %Self.765: %Y.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %U.as_type [symbolic] +// CHECK:STDOUT: %.e2e: = impl_self_witness %C, @Y [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness @C.as.Y.impl.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %C, (%Y.impl_witness) [concrete] // CHECK:STDOUT: } @@ -1805,6 +1837,7 @@ impl C as Y {} // CHECK:STDOUT: %C.ref.loc12: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %X.ref.loc12: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @C.as.X.impl.%C.ref.loc12, @X [concrete = constants.%.65a] // CHECK:STDOUT: %Y.decl.loc14: type = interface_decl @Y [concrete = constants.%Y.type] {} {} // CHECK:STDOUT: %X.decl.loc16: type = interface_decl @X [concrete = constants.%X.type] {} {} // CHECK:STDOUT: %C.decl.loc23: type = class_decl @C [concrete = constants.%C] {} {} @@ -1848,14 +1881,17 @@ impl C as Y {} // CHECK:STDOUT: %C.ref.loc36: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %Y.ref.loc36: type = name_ref Y, file.%Y.decl.loc14 [concrete = constants.%Y.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc36: = impl_self_witness @C.as.Y.impl.%C.ref.loc36, @Y [concrete = constants.%.e2e] // CHECK:STDOUT: impl_decl @C.as.X.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc37: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %X.ref.loc37: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc37: = impl_self_witness @C.as.X.impl.%C.ref.loc37, @X [concrete = constants.%.65a] // CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc38: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %Y.ref.loc38: type = name_ref Y, file.%Y.decl.loc14 [concrete = constants.%Y.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc38: = impl_self_witness @C.as.Y.impl.%C.ref.loc38, @Y [concrete = constants.%.e2e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @X { diff --git a/toolchain/check/testdata/impl/generic_redeclaration.carbon b/toolchain/check/testdata/impl/generic_redeclaration.carbon index afb2a8c38570..4c8229340036 100644 --- a/toolchain/check/testdata/impl/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/generic_redeclaration.carbon @@ -137,21 +137,25 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.1df: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.dda: %I.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type.b38: type = facet_access_type %T.dda [symbolic] +// CHECK:STDOUT: %.915: = impl_self_witness %T.as_type.b38, @Interface [symbolic] // CHECK:STDOUT: %Interface.impl_witness.5b0: = impl_witness @T.as_type.as.Interface.impl.72f.%Interface.impl_witness_table, @T.as_type.as.Interface.impl.72f(%T.dda) [symbolic] // CHECK:STDOUT: %pattern_type.2c5: type = pattern_type %J.type [concrete] // CHECK:STDOUT: %T.patt.ac1: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.e40: %J.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type.d90: type = facet_access_type %T.e40 [symbolic] +// CHECK:STDOUT: %.eab: = impl_self_witness %T.as_type.d90, @Interface [symbolic] // CHECK:STDOUT: %Interface.impl_witness.614: = impl_witness @T.as_type.as.Interface.impl.24e.%Interface.impl_witness_table, @T.as_type.as.Interface.impl.24e(%T.e40) [symbolic] // CHECK:STDOUT: %pattern_type.b64: type = pattern_type %K.type [concrete] // CHECK:STDOUT: %T.patt.0ef: %pattern_type.b64 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.062: %K.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type.1ea: type = facet_access_type %T.062 [symbolic] +// CHECK:STDOUT: %.2ae: = impl_self_witness %T.as_type.1ea, @Interface [symbolic] // CHECK:STDOUT: %Interface.impl_witness.bda: = impl_witness @T.as_type.as.Interface.impl.b21.%Interface.impl_witness_table, @T.as_type.as.Interface.impl.b21(%T.062) [symbolic] // CHECK:STDOUT: %pattern_type.25e: type = pattern_type %L.type [concrete] // CHECK:STDOUT: %T.patt.b11: %pattern_type.25e = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.709: %L.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type.56f: type = facet_access_type %T.709 [symbolic] +// CHECK:STDOUT: %.30d: = impl_self_witness %T.as_type.56f, @Interface [symbolic] // CHECK:STDOUT: %Interface.impl_witness.9d3: = impl_witness @T.as_type.as.Interface.impl.2b4.%Interface.impl_witness_table, @T.as_type.as.Interface.impl.2b4(%T.709) [symbolic] // CHECK:STDOUT: %Interface.facet.8e9: %Interface.type = facet_value %T.as_type.b38, (%Interface.impl_witness.5b0) [symbolic] // CHECK:STDOUT: %Interface.facet.d46: %Interface.type = facet_value %T.as_type.d90, (%Interface.impl_witness.614) [symbolic] @@ -194,6 +198,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.dda)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @T.as_type.as.Interface.impl.72f.%.loc12_20, @Interface [symbolic = @T.as_type.as.Interface.impl.72f.%.loc12_34 (constants.%.915)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.24e [concrete] { // CHECK:STDOUT: %T.patt.loc13_15.1: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_15.2 (constants.%T.patt.ac1)] // CHECK:STDOUT: } { @@ -207,6 +212,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_15.1: %J.type = symbolic_binding T, 0 [symbolic = %T.loc13_15.2 (constants.%T.e40)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @T.as_type.as.Interface.impl.24e.%.loc13_20, @Interface [symbolic = @T.as_type.as.Interface.impl.24e.%.loc13_34 (constants.%.eab)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.b21 [concrete] { // CHECK:STDOUT: %T.patt.loc14_15.1: %pattern_type.b64 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt.0ef)] // CHECK:STDOUT: } { @@ -220,6 +226,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.1: %K.type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T.062)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @T.as_type.as.Interface.impl.b21.%.loc14_20, @Interface [symbolic = @T.as_type.as.Interface.impl.b21.%.loc14_34 (constants.%.2ae)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.2b4 [concrete] { // CHECK:STDOUT: %T.patt.loc15_15.1: %pattern_type.25e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt.b11)] // CHECK:STDOUT: } { @@ -233,6 +240,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.1: %L.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T.709)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @T.as_type.as.Interface.impl.2b4.%.loc15_20, @Interface [symbolic = @T.as_type.as.Interface.impl.2b4.%.loc15_34 (constants.%.30d)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.72f [concrete] { // CHECK:STDOUT: %T.patt.loc12_15.1: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt.1df)] // CHECK:STDOUT: } { @@ -246,6 +254,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19: %I.type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.dda)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @T.as_type.as.Interface.impl.72f.%.loc19_20, @Interface [symbolic = @T.as_type.as.Interface.impl.72f.%.loc12_34 (constants.%.915)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.24e [concrete] { // CHECK:STDOUT: %T.patt.loc13_15.1: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_15.2 (constants.%T.patt.ac1)] // CHECK:STDOUT: } { @@ -259,6 +268,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc27: %J.type = symbolic_binding T, 0 [symbolic = %T.loc13_15.2 (constants.%T.e40)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc27: = impl_self_witness @T.as_type.as.Interface.impl.24e.%.loc27_20, @Interface [symbolic = @T.as_type.as.Interface.impl.24e.%.loc13_34 (constants.%.eab)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.b21 [concrete] { // CHECK:STDOUT: %T.patt.loc14_15.1: %pattern_type.b64 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt.0ef)] // CHECK:STDOUT: } { @@ -272,6 +282,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc35: %K.type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T.062)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc35: = impl_self_witness @T.as_type.as.Interface.impl.b21.%.loc35_20, @Interface [symbolic = @T.as_type.as.Interface.impl.b21.%.loc14_34 (constants.%.2ae)] // CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.2b4 [concrete] { // CHECK:STDOUT: %T.patt.loc15_15.1: %pattern_type.25e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt.b11)] // CHECK:STDOUT: } { @@ -285,6 +296,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc43: %L.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T.709)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc43: = impl_self_witness @T.as_type.as.Interface.impl.2b4.%.loc43_20, @Interface [symbolic = @T.as_type.as.Interface.impl.2b4.%.loc15_34 (constants.%.30d)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { @@ -346,6 +358,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc12_15.2: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt.1df)] // CHECK:STDOUT: %T.loc12_15.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.dda)] // CHECK:STDOUT: %T.as_type.loc12_20.2: type = facet_access_type %T.loc12_15.2 [symbolic = %T.as_type.loc12_20.2 (constants.%T.as_type.b38)] +// CHECK:STDOUT: %.loc12_34: = impl_self_witness %T.as_type.loc12_20.2, @Interface [symbolic = %.loc12_34 (constants.%.915)] // CHECK:STDOUT: %Interface.impl_witness.loc12_34.2: = impl_witness %Interface.impl_witness_table, @T.as_type.as.Interface.impl.72f(%T.loc12_15.2) [symbolic = %Interface.impl_witness.loc12_34.2 (constants.%Interface.impl_witness.5b0)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -364,6 +377,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc13_15.2: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_15.2 (constants.%T.patt.ac1)] // CHECK:STDOUT: %T.loc13_15.2: %J.type = symbolic_binding T, 0 [symbolic = %T.loc13_15.2 (constants.%T.e40)] // CHECK:STDOUT: %T.as_type.loc13_20.2: type = facet_access_type %T.loc13_15.2 [symbolic = %T.as_type.loc13_20.2 (constants.%T.as_type.d90)] +// CHECK:STDOUT: %.loc13_34: = impl_self_witness %T.as_type.loc13_20.2, @Interface [symbolic = %.loc13_34 (constants.%.eab)] // CHECK:STDOUT: %Interface.impl_witness.loc13_34.2: = impl_witness %Interface.impl_witness_table, @T.as_type.as.Interface.impl.24e(%T.loc13_15.2) [symbolic = %Interface.impl_witness.loc13_34.2 (constants.%Interface.impl_witness.614)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -382,6 +396,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc14_15.2: %pattern_type.b64 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt.0ef)] // CHECK:STDOUT: %T.loc14_15.2: %K.type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T.062)] // CHECK:STDOUT: %T.as_type.loc14_20.2: type = facet_access_type %T.loc14_15.2 [symbolic = %T.as_type.loc14_20.2 (constants.%T.as_type.1ea)] +// CHECK:STDOUT: %.loc14_34: = impl_self_witness %T.as_type.loc14_20.2, @Interface [symbolic = %.loc14_34 (constants.%.2ae)] // CHECK:STDOUT: %Interface.impl_witness.loc14_34.2: = impl_witness %Interface.impl_witness_table, @T.as_type.as.Interface.impl.b21(%T.loc14_15.2) [symbolic = %Interface.impl_witness.loc14_34.2 (constants.%Interface.impl_witness.bda)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -400,6 +415,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc15_15.2: %pattern_type.25e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt.b11)] // CHECK:STDOUT: %T.loc15_15.2: %L.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T.709)] // CHECK:STDOUT: %T.as_type.loc15_20.2: type = facet_access_type %T.loc15_15.2 [symbolic = %T.as_type.loc15_20.2 (constants.%T.as_type.56f)] +// CHECK:STDOUT: %.loc15_34: = impl_self_witness %T.as_type.loc15_20.2, @Interface [symbolic = %.loc15_34 (constants.%.30d)] // CHECK:STDOUT: %Interface.impl_witness.loc15_34.2: = impl_witness %Interface.impl_witness_table, @T.as_type.as.Interface.impl.2b4(%T.loc15_15.2) [symbolic = %Interface.impl_witness.loc15_34.2 (constants.%Interface.impl_witness.9d3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -438,6 +454,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc12_15.2 => constants.%T.patt.1df // CHECK:STDOUT: %T.loc12_15.2 => constants.%T.dda // CHECK:STDOUT: %T.as_type.loc12_20.2 => constants.%T.as_type.b38 +// CHECK:STDOUT: %.loc12_34 => constants.%.915 // CHECK:STDOUT: %Interface.impl_witness.loc12_34.2 => constants.%Interface.impl_witness.5b0 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -445,6 +462,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc13_15.2 => constants.%T.patt.ac1 // CHECK:STDOUT: %T.loc13_15.2 => constants.%T.e40 // CHECK:STDOUT: %T.as_type.loc13_20.2 => constants.%T.as_type.d90 +// CHECK:STDOUT: %.loc13_34 => constants.%.eab // CHECK:STDOUT: %Interface.impl_witness.loc13_34.2 => constants.%Interface.impl_witness.614 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -452,6 +470,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc14_15.2 => constants.%T.patt.0ef // CHECK:STDOUT: %T.loc14_15.2 => constants.%T.062 // CHECK:STDOUT: %T.as_type.loc14_20.2 => constants.%T.as_type.1ea +// CHECK:STDOUT: %.loc14_34 => constants.%.2ae // CHECK:STDOUT: %Interface.impl_witness.loc14_34.2 => constants.%Interface.impl_witness.bda // CHECK:STDOUT: } // CHECK:STDOUT: @@ -459,6 +478,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc15_15.2 => constants.%T.patt.b11 // CHECK:STDOUT: %T.loc15_15.2 => constants.%T.709 // CHECK:STDOUT: %T.as_type.loc15_20.2 => constants.%T.as_type.56f +// CHECK:STDOUT: %.loc15_34 => constants.%.30d // CHECK:STDOUT: %Interface.impl_witness.loc15_34.2 => constants.%Interface.impl_witness.9d3 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -491,6 +511,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] +// CHECK:STDOUT: %.989: = impl_self_witness %T.as_type, @J [symbolic] // CHECK:STDOUT: %J.impl_witness: = impl_witness @T.as_type.as.J.impl.377648.1.%J.impl_witness_table, @T.as_type.as.J.impl.377648.1(%T) [symbolic] // CHECK:STDOUT: %J.facet: %J.type = facet_value %T.as_type, (%J.impl_witness) [symbolic] // CHECK:STDOUT: } @@ -524,6 +545,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @T.as_type.as.J.impl.377648.1.%.loc7_20, @J [symbolic = @T.as_type.as.J.impl.377648.1.%.loc7_27 (constants.%.989)] // CHECK:STDOUT: impl_decl @T.as_type.as.J.impl.377648.2 [concrete] { // CHECK:STDOUT: %T.patt.loc15_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -537,6 +559,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @T.as_type.as.J.impl.377648.2.%.loc15_20, @J [symbolic = @T.as_type.as.J.impl.377648.2.%.loc15_27 (constants.%.989)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -565,6 +588,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc7_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc7_15.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc7_20.2: type = facet_access_type %T.loc7_15.2 [symbolic = %T.as_type.loc7_20.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc7_27: = impl_self_witness %T.as_type.loc7_20.2, @J [symbolic = %.loc7_27 (constants.%.989)] // CHECK:STDOUT: %J.impl_witness.loc7_27.2: = impl_witness %J.impl_witness_table, @T.as_type.as.J.impl.377648.1(%T.loc7_15.2) [symbolic = %J.impl_witness.loc7_27.2 (constants.%J.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -583,6 +607,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc15_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc15_15.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc15_20.2: type = facet_access_type %T.loc15_15.2 [symbolic = %T.as_type.loc15_20.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc15_27: = impl_self_witness %T.as_type.loc15_20.2, @J [symbolic = %.loc15_27 (constants.%.989)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -605,6 +630,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc7_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc7_15.2 => constants.%T // CHECK:STDOUT: %T.as_type.loc7_20.2 => constants.%T.as_type +// CHECK:STDOUT: %.loc7_27 => constants.%.989 // CHECK:STDOUT: %J.impl_witness.loc7_27.2 => constants.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -616,6 +642,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %T.patt.loc15_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc15_15.2 => constants.%T // CHECK:STDOUT: %T.as_type.loc15_20.2 => constants.%T.as_type +// CHECK:STDOUT: %.loc15_27 => constants.%.989 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_same_type_different_spelling.carbon @@ -624,6 +651,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness.1c7395.1: = impl_witness @C.as.I.impl.e103db.1.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet.c56855.1: %I.type = facet_value %C, (%I.impl_witness.1c7395.1) [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (type, type) [concrete] @@ -653,6 +681,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C.as.I.impl.e103db.1.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: impl_decl @C.as.I.impl.e103db.2 [concrete] {} { // CHECK:STDOUT: %C.ref.loc17_7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc17_10: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -663,6 +692,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: %tuple.elem0: type = tuple_access %.loc17_11.2, element0 [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @C.as.I.impl.e103db.2.%tuple.elem0, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -718,6 +748,7 @@ impl forall [T: type] T as I { // 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: %T: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.917: = impl_self_witness %T, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @T.as.I.impl.812d8b.1.%I.impl_witness_table, @T.as.I.impl.812d8b.1(%T) [symbolic] // CHECK:STDOUT: %T.as.I.impl.A.type: type = fn_type @T.as.I.impl.A, @T.as.I.impl.812d8b.1(%T) [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -762,6 +793,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc4: = impl_self_witness @T.as.I.impl.812d8b.1.%T.ref, @I [symbolic = @T.as.I.impl.812d8b.1.%.loc4_30 (constants.%.917)] // CHECK:STDOUT: impl_decl @T.as.I.impl.812d8b.2 [concrete] { // CHECK:STDOUT: %T.patt.loc15_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -773,6 +805,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @T.as.I.impl.812d8b.2.%T.ref, @I [symbolic = @T.as.I.impl.812d8b.2.%.loc15_30 (constants.%.917)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -789,6 +822,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: generic impl @T.as.I.impl.812d8b.1(%T.loc4_15.2: type) { // CHECK:STDOUT: %T.patt.loc4_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc4_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] +// CHECK:STDOUT: %.loc4_30: = impl_self_witness %T.loc4_15.1, @I [symbolic = %.loc4_30 (constants.%.917)] // CHECK:STDOUT: %I.impl_witness.loc4_30.2: = impl_witness %I.impl_witness_table, @T.as.I.impl.812d8b.1(%T.loc4_15.1) [symbolic = %I.impl_witness.loc4_30.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -810,6 +844,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: generic impl @T.as.I.impl.812d8b.2(%T.loc15_15.2: type) { // CHECK:STDOUT: %T.patt.loc15_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc15_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc15_15.1 (constants.%T)] +// CHECK:STDOUT: %.loc15_30: = impl_self_witness %T.loc15_15.1, @I [symbolic = %.loc15_30 (constants.%.917)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T.as.I.impl.B.type: type = fn_type @T.as.I.impl.B, @T.as.I.impl.812d8b.2(%T.loc15_15.1) [symbolic = %T.as.I.impl.B.type (constants.%T.as.I.impl.B.type)] @@ -905,6 +940,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: specific @T.as.I.impl.812d8b.1(constants.%T) { // CHECK:STDOUT: %T.patt.loc4_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc4_15.1 => constants.%T +// CHECK:STDOUT: %.loc4_30 => constants.%.917 // CHECK:STDOUT: %I.impl_witness.loc4_30.2 => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -921,6 +957,7 @@ impl forall [T: type] T as I { // CHECK:STDOUT: specific @T.as.I.impl.812d8b.2(constants.%T) { // CHECK:STDOUT: %T.patt.loc15_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc15_15.1 => constants.%T +// CHECK:STDOUT: %.loc15_30 => constants.%.917 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T.as.I.impl.B.type => constants.%T.as.I.impl.B.type diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index bd8b679ccd7c..3a28218b6fa2 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -36,6 +36,7 @@ class C { // CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type @Simple [concrete] // CHECK:STDOUT: %assoc0.210: %Simple.assoc_type = assoc_entity element0, @Simple.WithSelf.%Simple.WithSelf.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.dd3: = impl_self_witness %C, @Simple [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @C.as.Simple.impl.%Simple.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.Simple.impl.F.type: type = fn_type @C.as.Simple.impl.F [concrete] // CHECK:STDOUT: %C.as.Simple.impl.F: %C.as.Simple.impl.F.type = struct_value () [concrete] @@ -108,6 +109,7 @@ class C { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @C.as.Simple.impl.%Self.ref, @Simple [concrete = constants.%.dd3] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon index 8f6320e88b16..904fb524bc8e 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon @@ -106,6 +106,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.b6e: %struct_type.a.b.486 = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.58a: type = facet_type <@I where %impl.elem0.b6e = %struct.247> [concrete] +// CHECK:STDOUT: %.2ef: = impl_self_witness %empty_tuple.type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -231,6 +232,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %rewrite.loc6_57.2 = requirement_rewrite %impl.elem0.subst.loc6_54.2, %.loc6_95.3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @empty_tuple.type.as.I.impl.%.loc6_7.2, @I [concrete = constants.%.2ef] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/impl_forall.carbon b/toolchain/check/testdata/impl/impl_forall.carbon index 5cd35cddf124..1ffd9a3f345b 100644 --- a/toolchain/check/testdata/impl/impl_forall.carbon +++ b/toolchain/check/testdata/impl/impl_forall.carbon @@ -34,6 +34,7 @@ impl forall [T: type] T as Simple { // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.2a3: = impl_self_witness %T, @Simple [symbolic] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @T.as.Simple.impl.%Simple.impl_witness_table, @T.as.Simple.impl(%T) [symbolic] // CHECK:STDOUT: %T.as.Simple.impl.F.type: type = fn_type @T.as.Simple.impl.F, @T.as.Simple.impl(%T) [symbolic] // CHECK:STDOUT: %T.as.Simple.impl.F: %T.as.Simple.impl.F.type = struct_value () [symbolic] @@ -58,6 +59,7 @@ impl forall [T: type] T as Simple { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc19_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @T.as.Simple.impl.%T.ref, @Simple [symbolic = @T.as.Simple.impl.%.loc19_35 (constants.%.2a3)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { @@ -79,6 +81,7 @@ impl forall [T: type] T as Simple { // CHECK:STDOUT: generic impl @T.as.Simple.impl(%T.loc19_15.2: type) { // CHECK:STDOUT: %T.patt.loc19_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc19_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc19_15.1 (constants.%T)] +// CHECK:STDOUT: %.loc19_35: = impl_self_witness %T.loc19_15.1, @Simple [symbolic = %.loc19_35 (constants.%.2a3)] // CHECK:STDOUT: %Simple.impl_witness.loc19_35.2: = impl_witness %Simple.impl_witness_table, @T.as.Simple.impl(%T.loc19_15.1) [symbolic = %Simple.impl_witness.loc19_35.2 (constants.%Simple.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -122,6 +125,7 @@ impl forall [T: type] T as Simple { // CHECK:STDOUT: specific @T.as.Simple.impl(constants.%T) { // CHECK:STDOUT: %T.patt.loc19_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc19_15.1 => constants.%T +// CHECK:STDOUT: %.loc19_35 => constants.%.2a3 // CHECK:STDOUT: %Simple.impl_witness.loc19_35.2 => constants.%Simple.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/import_compound.carbon b/toolchain/check/testdata/impl/import_compound.carbon index 43b78a957c47..4b7b0d920c77 100644 --- a/toolchain/check/testdata/impl/import_compound.carbon +++ b/toolchain/check/testdata/impl/import_compound.carbon @@ -111,6 +111,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %assoc0.e8a: %NonInstance.assoc_type = assoc_entity element0, @NonInstance.WithSelf.%NonInstance.WithSelf.F.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.a1e: = impl_self_witness %struct_type.i, @NonInstance [concrete] // CHECK:STDOUT: %NonInstance.impl_witness: = impl_witness @struct_type.i.as.NonInstance.impl.%NonInstance.impl_witness_table [concrete] // CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F.type: type = fn_type @struct_type.i.as.NonInstance.impl.F [concrete] // CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F: %struct_type.i.as.NonInstance.impl.F.type = struct_value () [concrete] @@ -127,6 +128,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Instance.WithSelf.G.395: %Instance.WithSelf.G.type.f64 = struct_value () [symbolic] // CHECK:STDOUT: %Instance.assoc_type: type = assoc_entity_type @Instance [concrete] // CHECK:STDOUT: %assoc0.94f: %Instance.assoc_type = assoc_entity element0, @Instance.WithSelf.%Instance.WithSelf.G.decl [concrete] +// CHECK:STDOUT: %.327: = impl_self_witness %struct_type.i, @Instance [concrete] // CHECK:STDOUT: %Instance.impl_witness: = impl_witness @struct_type.i.as.Instance.impl.%Instance.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.9b2: type = pattern_type %struct_type.i [concrete] // CHECK:STDOUT: %self.param_patt.862: %pattern_type.9b2 = value_param_pattern [concrete] @@ -159,6 +161,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %NonInstance.ref: type = name_ref NonInstance, file.%NonInstance.decl [concrete = constants.%NonInstance.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @struct_type.i.as.NonInstance.impl.%struct_type.i, @NonInstance [concrete = constants.%.a1e] // CHECK:STDOUT: %Instance.decl: type = interface_decl @Instance [concrete = constants.%Instance.type] {} {} // CHECK:STDOUT: impl_decl @struct_type.i.as.Instance.impl [concrete] {} { // CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -166,6 +169,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %Instance.ref: type = name_ref Instance, file.%Instance.decl [concrete = constants.%Instance.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @struct_type.i.as.Instance.impl.%struct_type.i, @Instance [concrete = constants.%.327] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NonInstance { diff --git a/toolchain/check/testdata/impl/import_extend_impl.carbon b/toolchain/check/testdata/impl/import_extend_impl.carbon index c014c2443462..d0b24472849e 100644 --- a/toolchain/check/testdata/impl/import_extend_impl.carbon +++ b/toolchain/check/testdata/impl/import_extend_impl.carbon @@ -47,6 +47,7 @@ fn G(c: C) { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] // CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] @@ -98,6 +99,7 @@ fn G(c: C) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C.as.I.impl.%Self.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_generic.carbon b/toolchain/check/testdata/impl/import_generic.carbon index db56286340fb..7e0a456da66a 100644 --- a/toolchain/check/testdata/impl/import_generic.carbon +++ b/toolchain/check/testdata/impl/import_generic.carbon @@ -339,6 +339,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %I.type.81d: type = facet_type <@I, @I(%empty_struct_type)> [concrete] +// CHECK:STDOUT: %.b5d: = impl_self_witness %C, @I, @I(%empty_struct_type) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.47c: %I.type.81d = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.facet: %I.type.81d = facet_value %C, (%I.impl_witness) [concrete] @@ -348,6 +349,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %Self.9f1: %J.type.5c8 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.9f1 [symbolic] // CHECK:STDOUT: %J.type.80f: type = facet_type <@J, @J(%empty_struct_type)> [concrete] +// CHECK:STDOUT: %.cc7: = impl_self_witness %C, @J, @J(%empty_struct_type) [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %Self.043: %J.type.80f = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %complete_type.7da: = complete_type_witness %I.type.81d [concrete] @@ -386,6 +388,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %.loc5_15: type = converted %.loc5_14, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [concrete = constants.%I.type.81d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @C.as.I.impl.%C.ref, @I, @I(constants.%empty_struct_type) [concrete = constants.%.b5d] // CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: %J.type.23c = name_ref J, imports.%Main.J [concrete = constants.%J.generic] @@ -393,6 +396,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %.loc7_15: type = converted %.loc7_14, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %J.type: type = facet_type <@J, @J(constants.%empty_struct_type)> [concrete = constants.%J.type.80f] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.J.impl.%C.ref, @J, @J(constants.%empty_struct_type) [concrete = constants.%.cc7] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.b3bc94.2: type) [from "basic_import_generic_interface.carbon"] { @@ -711,6 +715,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %I.type.81d: type = facet_type <@I, @I(%empty_struct_type)> [concrete] // CHECK:STDOUT: %Self.47c: %I.type.81d = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %complete_type.7da: = complete_type_witness %I.type.81d [concrete] +// CHECK:STDOUT: %.b5d: = impl_self_witness %C, @I, @I(%empty_struct_type) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.e1f642.2: %J.type.d682d6.2 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.facet: %I.type.81d = facet_value %C, (%I.impl_witness) [concrete] @@ -746,6 +751,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %.loc5_15: type = converted %.loc5_14, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %J.type: type = facet_type <@J, @J(constants.%empty_struct_type)> [concrete = constants.%J.type.d682d6.2] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @C.as.I.impl.%C.ref, @I, @I(constants.%empty_struct_type) [concrete = constants.%.b5d] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.b3bc94.3: type) [from "basic_import_generic_constraint.carbon"] { @@ -901,11 +907,13 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %I.generic: %I.type.335 = struct_value () [concrete] // CHECK:STDOUT: %I.type.3fe: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.191: %I.type.3fe = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %.ece: = impl_self_witness %C, @I, @I(%T) [symbolic] // CHECK:STDOUT: %I.impl_witness.fb7: = impl_witness @C.as.I.impl.da9.%I.impl_witness_table, @C.as.I.impl.da9(%T) [symbolic] // CHECK:STDOUT: %require_complete.45e: = require_complete_type %I.type.3fe [symbolic] // CHECK:STDOUT: %I.facet.0de: %I.type.3fe = facet_value %C, (%I.impl_witness.fb7) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] // CHECK:STDOUT: %I.type.a76: type = facet_type <@I, @I(%ptr)> [symbolic] +// CHECK:STDOUT: %.5ab: = impl_self_witness %C, @I, @I(%ptr) [symbolic] // CHECK:STDOUT: %I.impl_witness.0d7: = impl_witness @C.as.I.impl.982.%I.impl_witness_table, @C.as.I.impl.982(%T) [symbolic] // CHECK:STDOUT: %Self.0ef: %I.type.a76 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %require_complete.078: = require_complete_type %I.type.a76 [symbolic] @@ -946,6 +954,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.I.impl.da9.%C.ref.loc8, @I, @I(constants.%T) [symbolic = @C.as.I.impl.da9.%.loc8_32 (constants.%.ece)] // CHECK:STDOUT: impl_decl @C.as.I.impl.da9 [concrete] { // CHECK:STDOUT: %T.patt.loc8_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -959,6 +968,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C.as.I.impl.da9.%C.ref.loc9, @I, @I(constants.%T) [symbolic = @C.as.I.impl.da9.%.loc8_32 (constants.%.ece)] // CHECK:STDOUT: impl_decl @C.as.I.impl.982 [concrete] { // CHECK:STDOUT: %T.patt.loc12_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -973,6 +983,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @C.as.I.impl.982.%C.ref, @I, @I(constants.%ptr) [symbolic = @C.as.I.impl.982.%.loc12_34 (constants.%.5ab)] // CHECK:STDOUT: %N.decl: %N.type.b76 = constraint_decl @N [concrete = constants.%empty_struct] { // CHECK:STDOUT: %T.patt.loc14_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1054,6 +1065,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc8_31.2: type = facet_type <@I, @I(%T.loc8_15.2)> [symbolic = %I.type.loc8_31.2 (constants.%I.type.3fe)] +// CHECK:STDOUT: %.loc8_32: = impl_self_witness constants.%C, @I, @I(%T.loc8_15.2) [symbolic = %.loc8_32 (constants.%.ece)] // CHECK:STDOUT: %I.impl_witness.loc8_32.2: = impl_witness %I.impl_witness_table, @C.as.I.impl.da9(%T.loc8_15.2) [symbolic = %I.impl_witness.loc8_32.2 (constants.%I.impl_witness.fb7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1074,6 +1086,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc12_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc12_31.2: type = ptr_type %T.loc12_15.2 [symbolic = %ptr.loc12_31.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc12_32.2: type = facet_type <@I, @I(%ptr.loc12_31.2)> [symbolic = %I.type.loc12_32.2 (constants.%I.type.a76)] +// CHECK:STDOUT: %.loc12_34: = impl_self_witness constants.%C, @I, @I(%ptr.loc12_31.2) [symbolic = %.loc12_34 (constants.%.5ab)] // CHECK:STDOUT: %I.impl_witness.loc12_34.2: = impl_witness %I.impl_witness_table, @C.as.I.impl.982(%T.loc12_15.2) [symbolic = %I.impl_witness.loc12_34.2 (constants.%I.impl_witness.0d7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1114,6 +1127,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.2 => constants.%T // CHECK:STDOUT: %I.type.loc8_31.2 => constants.%I.type.3fe +// CHECK:STDOUT: %.loc8_32 => constants.%.ece // CHECK:STDOUT: %I.impl_witness.loc8_32.2 => constants.%I.impl_witness.fb7 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1135,6 +1149,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc12_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc12_31.2 => constants.%ptr // CHECK:STDOUT: %I.type.loc12_32.2 => constants.%I.type.a76 +// CHECK:STDOUT: %.loc12_34 => constants.%.5ab // CHECK:STDOUT: %I.impl_witness.loc12_34.2 => constants.%I.impl_witness.0d7 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1174,9 +1189,11 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.ece: = impl_self_witness %C, @I, @I(%T) [symbolic] // CHECK:STDOUT: %I.impl_witness.17f: = impl_witness imports.%I.impl_witness_table.c49, @C.as.I.impl.119(%T) [symbolic] // CHECK:STDOUT: %require_complete.45e: = require_complete_type %I.type.3fe [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.5ab: = impl_self_witness %C, @I, @I(%ptr) [symbolic] // CHECK:STDOUT: %I.type.a76: type = facet_type <@I, @I(%ptr)> [symbolic] // CHECK:STDOUT: %Self.74c: %I.type.a76 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.impl_witness.b8e: = impl_witness imports.%I.impl_witness_table.78a, @C.as.I.impl.238(%T) [symbolic] @@ -1242,6 +1259,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.I.impl.da9cee.1.%C.ref, @I, @I(constants.%T) [symbolic = @C.as.I.impl.da9cee.1.%.loc8_32 (constants.%.ece)] // CHECK:STDOUT: impl_decl @C.as.I.impl.da9cee.2 [concrete] { // CHECK:STDOUT: %T.patt.loc14_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1255,6 +1273,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @C.as.I.impl.da9cee.2.%C.ref, @I, @I(constants.%T) [symbolic = @C.as.I.impl.da9cee.2.%.loc14_33 (constants.%.ece)] // CHECK:STDOUT: impl_decl @C.as.I.impl.982b7a.1 [concrete] { // CHECK:STDOUT: %T.patt.loc20_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1269,6 +1288,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc20_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @C.as.I.impl.982b7a.1.%C.ref, @I, @I(constants.%ptr) [symbolic = @C.as.I.impl.982b7a.1.%.loc20_33 (constants.%.5ab)] // CHECK:STDOUT: impl_decl @C.as.I.impl.982b7a.2 [concrete] { // CHECK:STDOUT: %T.patt.loc26_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1283,6 +1303,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc26_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc26: = impl_self_witness @C.as.I.impl.982b7a.2.%C.ref, @I, @I(constants.%ptr) [symbolic = @C.as.I.impl.982b7a.2.%.loc26_34 (constants.%.5ab)] // CHECK:STDOUT: impl_decl @C.as.I.impl.042f52.1 [concrete] { // CHECK:STDOUT: %T.patt.loc32_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc32_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1296,6 +1317,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc32_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc32_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc32: = impl_self_witness @C.as.I.impl.042f52.1.%C.ref, @I, @I(constants.%T) [symbolic = @C.as.I.impl.042f52.1.%.loc32_32 (constants.%.ece)] // CHECK:STDOUT: impl_decl @C.as.I.impl.042f52.2 [concrete] { // CHECK:STDOUT: %T.patt.loc37_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc37_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1310,6 +1332,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc37_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc37_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc37: = impl_self_witness @C.as.I.impl.042f52.2.%C.ref, @I, @I(constants.%ptr) [symbolic = @C.as.I.impl.042f52.2.%.loc37_33 (constants.%.5ab)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.b3bc94.2: type) [from "import_generic.carbon"] { @@ -1361,6 +1384,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.3fe)] +// CHECK:STDOUT: %.1: = impl_self_witness constants.%C, @I, @I(%T) [symbolic = %.1 (constants.%.ece)] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table.c49, @C.as.I.impl.119(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.17f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1378,6 +1402,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic = %ptr (constants.%ptr)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%ptr)> [symbolic = %I.type (constants.%I.type.a76)] +// CHECK:STDOUT: %.1: = impl_self_witness constants.%C, @I, @I(%ptr) [symbolic = %.1 (constants.%.5ab)] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table.78a, @C.as.I.impl.238(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.b8e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1394,6 +1419,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc8_31.2: type = facet_type <@I, @I(%T.loc8_15.2)> [symbolic = %I.type.loc8_31.2 (constants.%I.type.3fe)] +// CHECK:STDOUT: %.loc8_32: = impl_self_witness constants.%C, @I, @I(%T.loc8_15.2) [symbolic = %.loc8_32 (constants.%.ece)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %I.type.loc8_31.1; // CHECK:STDOUT: } @@ -1402,6 +1428,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc14_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc14_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc14_31.2: type = facet_type <@I, @I(%T.loc14_15.2)> [symbolic = %I.type.loc14_31.2 (constants.%I.type.3fe)] +// CHECK:STDOUT: %.loc14_33: = impl_self_witness constants.%C, @I, @I(%T.loc14_15.2) [symbolic = %.loc14_33 (constants.%.ece)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1417,6 +1444,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc20_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc20_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc20_31.2: type = ptr_type %T.loc20_15.2 [symbolic = %ptr.loc20_31.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc20_32.2: type = facet_type <@I, @I(%ptr.loc20_31.2)> [symbolic = %I.type.loc20_32.2 (constants.%I.type.a76)] +// CHECK:STDOUT: %.loc20_33: = impl_self_witness constants.%C, @I, @I(%ptr.loc20_31.2) [symbolic = %.loc20_33 (constants.%.5ab)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %I.type.loc20_32.1; // CHECK:STDOUT: } @@ -1426,6 +1454,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc26_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc26_31.2: type = ptr_type %T.loc26_15.2 [symbolic = %ptr.loc26_31.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc26_32.2: type = facet_type <@I, @I(%ptr.loc26_31.2)> [symbolic = %I.type.loc26_32.2 (constants.%I.type.a76)] +// CHECK:STDOUT: %.loc26_34: = impl_self_witness constants.%C, @I, @I(%ptr.loc26_31.2) [symbolic = %.loc26_34 (constants.%.5ab)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1440,6 +1469,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc32_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc32_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc32_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc32_15.2 (constants.%T)] // CHECK:STDOUT: %N.type.loc32_31.2: type = facet_type <@N, @N(%T.loc32_15.2)> [symbolic = %N.type.loc32_31.2 (constants.%N.type.d682d6.1)] +// CHECK:STDOUT: %.loc32_32: = impl_self_witness constants.%C, @I, @I(%T.loc32_15.2) [symbolic = %.loc32_32 (constants.%.ece)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %N.type.loc32_31.1; // CHECK:STDOUT: } @@ -1449,6 +1479,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc37_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc37_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc37_31.2: type = ptr_type %T.loc37_15.2 [symbolic = %ptr.loc37_31.2 (constants.%ptr)] // CHECK:STDOUT: %N.type.loc37_32.2: type = facet_type <@N, @N(%ptr.loc37_31.2)> [symbolic = %N.type.loc37_32.2 (constants.%N.type.d682d6.2)] +// CHECK:STDOUT: %.loc37_33: = impl_self_witness constants.%C, @I, @I(%ptr.loc37_31.2) [symbolic = %.loc37_33 (constants.%.5ab)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %N.type.loc37_32.1; // CHECK:STDOUT: } @@ -1477,6 +1508,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.3fe +// CHECK:STDOUT: %.1 => constants.%.ece // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.17f // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1494,6 +1526,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %ptr => constants.%ptr // CHECK:STDOUT: %I.type => constants.%I.type.a76 +// CHECK:STDOUT: %.1 => constants.%.5ab // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.b8e // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1501,12 +1534,14 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.2 => constants.%T // CHECK:STDOUT: %I.type.loc8_31.2 => constants.%I.type.3fe +// CHECK:STDOUT: %.loc8_32 => constants.%.ece // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C.as.I.impl.da9cee.2(constants.%T) { // CHECK:STDOUT: %T.patt.loc14_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc14_15.2 => constants.%T // CHECK:STDOUT: %I.type.loc14_31.2 => constants.%I.type.3fe +// CHECK:STDOUT: %.loc14_33 => constants.%.ece // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C.as.I.impl.982b7a.1(constants.%T) { @@ -1514,6 +1549,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc20_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc20_31.2 => constants.%ptr // CHECK:STDOUT: %I.type.loc20_32.2 => constants.%I.type.a76 +// CHECK:STDOUT: %.loc20_33 => constants.%.5ab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C.as.I.impl.982b7a.2(constants.%T) { @@ -1521,6 +1557,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc26_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc26_31.2 => constants.%ptr // CHECK:STDOUT: %I.type.loc26_32.2 => constants.%I.type.a76 +// CHECK:STDOUT: %.loc26_34 => constants.%.5ab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @N(constants.%T) { @@ -1557,6 +1594,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc32_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc32_15.2 => constants.%T // CHECK:STDOUT: %N.type.loc32_31.2 => constants.%N.type.d682d6.1 +// CHECK:STDOUT: %.loc32_32 => constants.%.ece // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @N(constants.%ptr) { @@ -1584,6 +1622,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc37_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc37_31.2 => constants.%ptr // CHECK:STDOUT: %N.type.loc37_32.2 => constants.%N.type.d682d6.2 +// CHECK:STDOUT: %.loc37_33 => constants.%.5ab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_generic_with_different_specific.carbon @@ -1601,6 +1640,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %I.generic: %I.type.335 = struct_value () [concrete] // CHECK:STDOUT: %I.type.3fe: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.191: %I.type.3fe = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %.ece: = impl_self_witness %C, @I, @I(%T) [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %I.type.3fe [symbolic] // CHECK:STDOUT: %I.facet: %I.type.3fe = facet_value %C, (%I.impl_witness) [symbolic] @@ -1640,6 +1680,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref, @I, @I(constants.%T) [symbolic = @C.as.I.impl.%.loc7_33 (constants.%.ece)] // CHECK:STDOUT: %N.decl: %N.type.b76 = constraint_decl @N [concrete = constants.%empty_struct] { // CHECK:STDOUT: %T.patt.loc9_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1721,6 +1762,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc7_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc7_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc7_31.2: type = facet_type <@I, @I(%T.loc7_15.2)> [symbolic = %I.type.loc7_31.2 (constants.%I.type.3fe)] +// CHECK:STDOUT: %.loc7_33: = impl_self_witness constants.%C, @I, @I(%T.loc7_15.2) [symbolic = %.loc7_33 (constants.%.ece)] // CHECK:STDOUT: %I.impl_witness.loc7_33.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%T.loc7_15.2) [symbolic = %I.impl_witness.loc7_33.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1761,6 +1803,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc7_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc7_15.2 => constants.%T // CHECK:STDOUT: %I.type.loc7_31.2 => constants.%I.type.3fe +// CHECK:STDOUT: %.loc7_33 => constants.%.ece // CHECK:STDOUT: %I.impl_witness.loc7_33.2 => constants.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1796,12 +1839,14 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.ece: = impl_self_witness %C, @I, @I(%T) [symbolic] // CHECK:STDOUT: %I.impl_witness.17f: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl.119(%T) [symbolic] // CHECK:STDOUT: %require_complete.45e: = require_complete_type %I.type.3fe [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %I.type.a76: type = facet_type <@I, @I(%ptr.e8f)> [symbolic] +// CHECK:STDOUT: %.5ab: = impl_self_witness %C, @I, @I(%ptr.e8f) [symbolic] // CHECK:STDOUT: %I.impl_witness.0d7: = impl_witness @C.as.I.impl.982.%I.impl_witness_table, @C.as.I.impl.982(%T) [symbolic] // CHECK:STDOUT: %Self.74c: %I.type.a76 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %require_complete.078: = require_complete_type %I.type.a76 [symbolic] @@ -1816,6 +1861,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %C.type.facet: %type = facet_value %C, () [concrete] // CHECK:STDOUT: %I.type.0a0: type = facet_type <@I, @I(%ptr.125)> [symbolic] // CHECK:STDOUT: %require_complete.6fb: = require_complete_type %I.type.0a0 [symbolic] +// CHECK:STDOUT: %.d9e: = impl_self_witness %C, @I, @I(%ptr.125) [symbolic] // CHECK:STDOUT: %I.impl_witness.b48: = impl_witness @C.as.I.impl.042.%I.impl_witness_table, @C.as.I.impl.042(%T) [symbolic] // CHECK:STDOUT: %Self.e1f642.2: %N.type.d682d6.2 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %require_complete.533: = require_complete_type %N.type.d682d6.2 [symbolic] @@ -1867,6 +1913,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc5_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @C.as.I.impl.982.%C.ref, @I, @I(constants.%ptr.e8f) [symbolic = @C.as.I.impl.982.%.loc5_34 (constants.%.5ab)] // CHECK:STDOUT: impl_decl @C.as.I.impl.042 [concrete] { // CHECK:STDOUT: %T.patt.loc6_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1882,6 +1929,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @C.as.I.impl.042.%C.ref, @I, @I(constants.%ptr.125) [symbolic = @C.as.I.impl.042.%.loc6_35 (constants.%.d9e)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.b3bc94.2: type) [from "import_generic_with_different_specific.carbon"] { @@ -1933,6 +1981,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.3fe)] +// CHECK:STDOUT: %.1: = impl_self_witness constants.%C, @I, @I(%T) [symbolic = %.1 (constants.%.ece)] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl.119(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.17f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1950,6 +1999,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc5_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc5_31.2: type = ptr_type %T.loc5_15.2 [symbolic = %ptr.loc5_31.2 (constants.%ptr.e8f)] // CHECK:STDOUT: %I.type.loc5_32.2: type = facet_type <@I, @I(%ptr.loc5_31.2)> [symbolic = %I.type.loc5_32.2 (constants.%I.type.a76)] +// CHECK:STDOUT: %.loc5_34: = impl_self_witness constants.%C, @I, @I(%ptr.loc5_31.2) [symbolic = %.loc5_34 (constants.%.5ab)] // CHECK:STDOUT: %I.impl_witness.loc5_34.2: = impl_witness %I.impl_witness_table, @C.as.I.impl.982(%T.loc5_15.2) [symbolic = %I.impl_witness.loc5_34.2 (constants.%I.impl_witness.0d7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1971,6 +2021,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc6_31.2: type = ptr_type %T.loc6_15.2 [symbolic = %ptr.loc6_31.2 (constants.%ptr.e8f)] // CHECK:STDOUT: %ptr.loc6_32.2: type = ptr_type %ptr.loc6_31.2 [symbolic = %ptr.loc6_32.2 (constants.%ptr.125)] // CHECK:STDOUT: %N.type.loc6_33.2: type = facet_type <@N, @N(%ptr.loc6_32.2)> [symbolic = %N.type.loc6_33.2 (constants.%N.type.d682d6.2)] +// CHECK:STDOUT: %.loc6_35: = impl_self_witness constants.%C, @I, @I(%ptr.loc6_32.2) [symbolic = %.loc6_35 (constants.%.d9e)] // CHECK:STDOUT: %I.impl_witness.loc6_35.2: = impl_witness %I.impl_witness_table, @C.as.I.impl.042(%T.loc6_15.2) [symbolic = %I.impl_witness.loc6_35.2 (constants.%I.impl_witness.b48)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -2010,6 +2061,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.3fe +// CHECK:STDOUT: %.1 => constants.%.ece // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.17f // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2027,6 +2079,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc5_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc5_31.2 => constants.%ptr.e8f // CHECK:STDOUT: %I.type.loc5_32.2 => constants.%I.type.a76 +// CHECK:STDOUT: %.loc5_34 => constants.%.5ab // CHECK:STDOUT: %I.impl_witness.loc5_34.2 => constants.%I.impl_witness.0d7 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2088,6 +2141,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc6_31.2 => constants.%ptr.e8f // CHECK:STDOUT: %ptr.loc6_32.2 => constants.%ptr.125 // CHECK:STDOUT: %N.type.loc6_33.2 => constants.%N.type.d682d6.2 +// CHECK:STDOUT: %.loc6_35 => constants.%.d9e // CHECK:STDOUT: %I.impl_witness.loc6_35.2 => constants.%I.impl_witness.b48 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2122,9 +2176,11 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %N.type.d68: type = facet_type <@N, @N(%T)> [symbolic] // CHECK:STDOUT: %Self.22b: %N.type.d68 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.22b [symbolic] +// CHECK:STDOUT: %.1a5: = impl_self_witness %D, @J, @J(%T) [symbolic] // CHECK:STDOUT: %J.impl_witness.7d7: = impl_witness @D.as.J.impl.5a5.%J.impl_witness_table, @D.as.J.impl.5a5(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] // CHECK:STDOUT: %J.type.c71: type = facet_type <@J, @J(%ptr)> [symbolic] +// CHECK:STDOUT: %.7a3: = impl_self_witness %D, @J, @J(%ptr) [symbolic] // CHECK:STDOUT: %J.impl_witness.4af: = impl_witness @D.as.J.impl.101.%J.impl_witness_table, @D.as.J.impl.101(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2166,6 +2222,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @D.as.J.impl.5a5.%D.ref, @J, @J(constants.%T) [symbolic = @D.as.J.impl.5a5.%.loc15_32 (constants.%.1a5)] // CHECK:STDOUT: impl_decl @D.as.J.impl.101 [concrete] { // CHECK:STDOUT: %T.patt.loc21_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -2180,6 +2237,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc21_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc21_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc21: = impl_self_witness @D.as.J.impl.101.%D.ref, @J, @J(constants.%ptr) [symbolic = @D.as.J.impl.101.%.loc21_33 (constants.%.7a3)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @J(%T.loc5_14.2: type) { @@ -2252,6 +2310,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc15_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc15_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc15_31.2: type = facet_type <@J, @J(%T.loc15_15.2)> [symbolic = %J.type.loc15_31.2 (constants.%J.type.5c8)] +// CHECK:STDOUT: %.loc15_32: = impl_self_witness constants.%D, @J, @J(%T.loc15_15.2) [symbolic = %.loc15_32 (constants.%.1a5)] // CHECK:STDOUT: %J.impl_witness.loc15_32.2: = impl_witness %J.impl_witness_table, @D.as.J.impl.5a5(%T.loc15_15.2) [symbolic = %J.impl_witness.loc15_32.2 (constants.%J.impl_witness.7d7)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc15_31.1; @@ -2262,6 +2321,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc21_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc21_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc21_31.2: type = ptr_type %T.loc21_15.2 [symbolic = %ptr.loc21_31.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc21_32.2: type = facet_type <@J, @J(%ptr.loc21_31.2)> [symbolic = %J.type.loc21_32.2 (constants.%J.type.c71)] +// CHECK:STDOUT: %.loc21_33: = impl_self_witness constants.%D, @J, @J(%ptr.loc21_31.2) [symbolic = %.loc21_33 (constants.%.7a3)] // CHECK:STDOUT: %J.impl_witness.loc21_33.2: = impl_witness %J.impl_witness_table, @D.as.J.impl.101(%T.loc21_15.2) [symbolic = %J.impl_witness.loc21_33.2 (constants.%J.impl_witness.4af)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc21_32.1; @@ -2307,6 +2367,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc15_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc15_15.2 => constants.%T // CHECK:STDOUT: %J.type.loc15_31.2 => constants.%J.type.5c8 +// CHECK:STDOUT: %.loc15_32 => constants.%.1a5 // CHECK:STDOUT: %J.impl_witness.loc15_32.2 => constants.%J.impl_witness.7d7 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2320,6 +2381,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc21_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc21_31.2 => constants.%ptr // CHECK:STDOUT: %J.type.loc21_32.2 => constants.%J.type.c71 +// CHECK:STDOUT: %.loc21_33 => constants.%.7a3 // CHECK:STDOUT: %J.impl_witness.loc21_33.2 => constants.%J.impl_witness.4af // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2336,8 +2398,10 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.1a5: = impl_self_witness %D, @J, @J(%T) [symbolic] // CHECK:STDOUT: %J.impl_witness.699: = impl_witness imports.%J.impl_witness_table.a64, @D.as.J.impl.bdb(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.7a3: = impl_self_witness %D, @J, @J(%ptr) [symbolic] // CHECK:STDOUT: %J.type.c71: type = facet_type <@J, @J(%ptr)> [symbolic] // CHECK:STDOUT: %J.impl_witness.73b: = impl_witness imports.%J.impl_witness_table.93d, @D.as.J.impl.fa6(%T) [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -2399,6 +2463,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @D.as.J.impl.5a5643.1.%D.ref, @J, @J(constants.%T) [symbolic = @D.as.J.impl.5a5643.1.%.loc8_32 (constants.%.1a5)] // CHECK:STDOUT: impl_decl @D.as.J.impl.5a5643.2 [concrete] { // CHECK:STDOUT: %T.patt.loc14_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -2412,6 +2477,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @D.as.J.impl.5a5643.2.%D.ref, @J, @J(constants.%T) [symbolic = @D.as.J.impl.5a5643.2.%.loc14_33 (constants.%.1a5)] // CHECK:STDOUT: impl_decl @D.as.J.impl.1010f3.1 [concrete] { // CHECK:STDOUT: %T.patt.loc20_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -2426,6 +2492,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc20_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @D.as.J.impl.1010f3.1.%D.ref, @J, @J(constants.%ptr) [symbolic = @D.as.J.impl.1010f3.1.%.loc20_33 (constants.%.7a3)] // CHECK:STDOUT: impl_decl @D.as.J.impl.1010f3.2 [concrete] { // CHECK:STDOUT: %T.patt.loc26_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -2440,6 +2507,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc26_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc26: = impl_self_witness @D.as.J.impl.1010f3.2.%D.ref, @J, @J(constants.%ptr) [symbolic = @D.as.J.impl.1010f3.2.%.loc26_34 (constants.%.7a3)] // CHECK:STDOUT: impl_decl @D.as.J.impl.d69d6f.1 [concrete] { // CHECK:STDOUT: %T.patt.loc32_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc32_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -2453,6 +2521,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc32_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc32_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc32: = impl_self_witness @D.as.J.impl.d69d6f.1.%D.ref, @J, @J(constants.%T) [symbolic = @D.as.J.impl.d69d6f.1.%.loc32_33 (constants.%.1a5)] // CHECK:STDOUT: impl_decl @D.as.J.impl.d69d6f.2 [concrete] { // CHECK:STDOUT: %T.patt.loc38_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -2467,6 +2536,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc38_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc38_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc38: = impl_self_witness @D.as.J.impl.d69d6f.2.%D.ref, @J, @J(constants.%ptr) [symbolic = @D.as.J.impl.d69d6f.2.%.loc38_34 (constants.%.7a3)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @J(imports.%Main.import_ref.b3bc94.2: type) [from "fail_import_generic_decl.carbon"] { @@ -2518,6 +2588,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T)> [symbolic = %J.type (constants.%J.type.5c8)] +// CHECK:STDOUT: %.1: = impl_self_witness constants.%D, @J, @J(%T) [symbolic = %.1 (constants.%.1a5)] // CHECK:STDOUT: %J.impl_witness: = impl_witness imports.%J.impl_witness_table.a64, @D.as.J.impl.bdb(%T) [symbolic = %J.impl_witness (constants.%J.impl_witness.699)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.2e2cf0.1 as imports.%Main.import_ref.1936e1.1; @@ -2528,6 +2599,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic = %ptr (constants.%ptr)] // CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%ptr)> [symbolic = %J.type (constants.%J.type.c71)] +// CHECK:STDOUT: %.1: = impl_self_witness constants.%D, @J, @J(%ptr) [symbolic = %.1 (constants.%.7a3)] // CHECK:STDOUT: %J.impl_witness: = impl_witness imports.%J.impl_witness_table.93d, @D.as.J.impl.fa6(%T) [symbolic = %J.impl_witness (constants.%J.impl_witness.73b)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.2e2cf0.2 as imports.%Main.import_ref.5a0; @@ -2537,6 +2609,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc8_31.2: type = facet_type <@J, @J(%T.loc8_15.2)> [symbolic = %J.type.loc8_31.2 (constants.%J.type.5c8)] +// CHECK:STDOUT: %.loc8_32: = impl_self_witness constants.%D, @J, @J(%T.loc8_15.2) [symbolic = %.loc8_32 (constants.%.1a5)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc8_31.1; // CHECK:STDOUT: } @@ -2545,6 +2618,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc14_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc14_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc14_31.2: type = facet_type <@J, @J(%T.loc14_15.2)> [symbolic = %J.type.loc14_31.2 (constants.%J.type.5c8)] +// CHECK:STDOUT: %.loc14_33: = impl_self_witness constants.%D, @J, @J(%T.loc14_15.2) [symbolic = %.loc14_33 (constants.%.1a5)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -2560,6 +2634,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc20_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc20_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc20_31.2: type = ptr_type %T.loc20_15.2 [symbolic = %ptr.loc20_31.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc20_32.2: type = facet_type <@J, @J(%ptr.loc20_31.2)> [symbolic = %J.type.loc20_32.2 (constants.%J.type.c71)] +// CHECK:STDOUT: %.loc20_33: = impl_self_witness constants.%D, @J, @J(%ptr.loc20_31.2) [symbolic = %.loc20_33 (constants.%.7a3)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc20_32.1; // CHECK:STDOUT: } @@ -2569,6 +2644,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc26_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc26_31.2: type = ptr_type %T.loc26_15.2 [symbolic = %ptr.loc26_31.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc26_32.2: type = facet_type <@J, @J(%ptr.loc26_31.2)> [symbolic = %J.type.loc26_32.2 (constants.%J.type.c71)] +// CHECK:STDOUT: %.loc26_34: = impl_self_witness constants.%D, @J, @J(%ptr.loc26_31.2) [symbolic = %.loc26_34 (constants.%.7a3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -2583,6 +2659,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc32_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc32_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc32_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc32_15.2 (constants.%T)] // CHECK:STDOUT: %N.type.loc32_31.2: type = facet_type <@N, @N(%T.loc32_15.2)> [symbolic = %N.type.loc32_31.2 (constants.%N.type.d682d6.1)] +// CHECK:STDOUT: %.loc32_33: = impl_self_witness constants.%D, @J, @J(%T.loc32_15.2) [symbolic = %.loc32_33 (constants.%.1a5)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -2598,6 +2675,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc38_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc38_15.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc38_31.2: type = ptr_type %T.loc38_15.2 [symbolic = %ptr.loc38_31.2 (constants.%ptr)] // CHECK:STDOUT: %N.type.loc38_32.2: type = facet_type <@N, @N(%ptr.loc38_31.2)> [symbolic = %N.type.loc38_32.2 (constants.%N.type.d682d6.2)] +// CHECK:STDOUT: %.loc38_34: = impl_self_witness constants.%D, @J, @J(%ptr.loc38_31.2) [symbolic = %.loc38_34 (constants.%.7a3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -2632,6 +2710,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %J.type => constants.%J.type.5c8 +// CHECK:STDOUT: %.1 => constants.%.1a5 // CHECK:STDOUT: %J.impl_witness => constants.%J.impl_witness.699 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2645,6 +2724,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %ptr => constants.%ptr // CHECK:STDOUT: %J.type => constants.%J.type.c71 +// CHECK:STDOUT: %.1 => constants.%.7a3 // CHECK:STDOUT: %J.impl_witness => constants.%J.impl_witness.73b // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2652,12 +2732,14 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.2 => constants.%T // CHECK:STDOUT: %J.type.loc8_31.2 => constants.%J.type.5c8 +// CHECK:STDOUT: %.loc8_32 => constants.%.1a5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D.as.J.impl.5a5643.2(constants.%T) { // CHECK:STDOUT: %T.patt.loc14_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc14_15.2 => constants.%T // CHECK:STDOUT: %J.type.loc14_31.2 => constants.%J.type.5c8 +// CHECK:STDOUT: %.loc14_33 => constants.%.1a5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D.as.J.impl.1010f3.1(constants.%T) { @@ -2665,6 +2747,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc20_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc20_31.2 => constants.%ptr // CHECK:STDOUT: %J.type.loc20_32.2 => constants.%J.type.c71 +// CHECK:STDOUT: %.loc20_33 => constants.%.7a3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D.as.J.impl.1010f3.2(constants.%T) { @@ -2672,6 +2755,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc26_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc26_31.2 => constants.%ptr // CHECK:STDOUT: %J.type.loc26_32.2 => constants.%J.type.c71 +// CHECK:STDOUT: %.loc26_34 => constants.%.7a3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @N(constants.%T) { @@ -2708,6 +2792,7 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc32_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc32_15.2 => constants.%T // CHECK:STDOUT: %N.type.loc32_31.2 => constants.%N.type.d682d6.1 +// CHECK:STDOUT: %.loc32_33 => constants.%.1a5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @N(constants.%ptr) { @@ -2735,5 +2820,6 @@ impl forall [T: type] D as N(T*) {} // CHECK:STDOUT: %T.loc38_15.2 => constants.%T // CHECK:STDOUT: %ptr.loc38_31.2 => constants.%ptr // CHECK:STDOUT: %N.type.loc38_32.2 => constants.%N.type.d682d6.2 +// CHECK:STDOUT: %.loc38_34 => constants.%.7a3 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon index b0a1cbfd2f02..a24b11107265 100644 --- a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon +++ b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon @@ -318,6 +318,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.169: = impl_self_witness %C1, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C1.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C1, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -362,6 +363,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @C1.as.I.impl.%C1.ref, @I [concrete = constants.%.169] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "interface.carbon"] { @@ -422,6 +424,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.bd3: = impl_self_witness %C2, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C2.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C2, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -466,6 +469,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @C2.as.I.impl.%C2.ref.loc5, @I [concrete = constants.%.bd3] // CHECK:STDOUT: impl_decl @C2.as.I.impl [concrete] {} { // CHECK:STDOUT: %C2.ref.loc6: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] @@ -486,6 +490,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @C2.as.I.impl.%C2.ref.loc6, @I [concrete = constants.%.bd3] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "interface.carbon"] { @@ -535,6 +540,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] +// CHECK:STDOUT: %.afd: = impl_self_witness %C3, @I [concrete] // CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] @@ -574,6 +580,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %C3.ref: type = name_ref C3, file.%C3.decl [concrete = constants.%C3] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C3.as.I.impl.a518fc.1.%C3.ref, @I [concrete = constants.%.afd] // CHECK:STDOUT: impl_decl @C3.as.I.impl.a518fc.2 [concrete] {} { // CHECK:STDOUT: %C3.ref: type = name_ref C3, file.%C3.decl [concrete = constants.%C3] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] @@ -594,6 +601,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C3.as.I.impl.a518fc.2.%C3.ref, @I [concrete = constants.%.afd] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "interface.carbon"] { @@ -657,6 +665,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.911: = impl_self_witness %C4, @I [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete] // CHECK:STDOUT: %I.impl_witness.4a9: = impl_witness @C4.as.I.impl.c5f663.2.%I.impl_witness_table [concrete] @@ -703,6 +712,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc9_23.2 = requirement_rewrite %impl.elem0.loc9_20.2, %.loc9_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C4.as.I.impl.c5f663.1.%C4.ref, @I [concrete = constants.%.911] // CHECK:STDOUT: impl_decl @C4.as.I.impl.c5f663.2 [concrete] {} { // CHECK:STDOUT: %C4.ref: type = name_ref C4, file.%C4.decl [concrete = constants.%C4] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] @@ -723,6 +733,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C4.as.I.impl.c5f663.2.%C4.ref, @I [concrete = constants.%.911] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "interface.carbon"] { @@ -964,6 +975,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.7ff: = impl_self_witness %C6, @I [concrete] // CHECK:STDOUT: %I.impl_witness.a68: = impl_witness @C6.as.I.impl.e1b87a.2.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C6, (%I.impl_witness.a68) [concrete] // CHECK:STDOUT: } @@ -1008,10 +1020,12 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @C6.as.I.impl.e1b87a.1.%C6.ref, @I [concrete = constants.%.7ff] // CHECK:STDOUT: impl_decl @C6.as.I.impl.e1b87a.2 [concrete] {} { // CHECK:STDOUT: %C6.ref: type = name_ref C6, file.%C6.decl [concrete = constants.%C6] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @C6.as.I.impl.e1b87a.2.%C6.ref, @I [concrete = constants.%.7ff] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "interface.carbon"] { @@ -1499,6 +1513,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.160: = impl_self_witness %CB, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @CB.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %CB, (%I.impl_witness) [concrete] // CHECK:STDOUT: } @@ -1556,6 +1571,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc6_35.2 = requirement_rewrite %impl.elem0.subst.loc6_32.2, %.loc6_38.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @CB.as.I.impl.%CB.ref, @I [concrete = constants.%.160] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "interface.carbon"] { @@ -1618,6 +1634,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.92a: = impl_self_witness %.Self, @NonType [symbolic_self] // CHECK:STDOUT: %impl.elem0.74f: %struct_type.a.225 = impl_witness_access %.92a, element0 [symbolic_self] // CHECK:STDOUT: %NonType_where.type.182: type = facet_type <@NonType where %impl.elem0.74f = %struct> [concrete] +// CHECK:STDOUT: %.910: = impl_self_witness %CC, @NonType [concrete] // CHECK:STDOUT: %NonType.impl_witness: = impl_witness @CC.as.NonType.impl.%NonType.impl_witness_table [concrete] // CHECK:STDOUT: %NonType.facet: %NonType.type = facet_value %CC, (%NonType.impl_witness) [concrete] // CHECK:STDOUT: } @@ -1666,6 +1683,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc6_29.2 = requirement_rewrite %impl.elem0.loc6_26.2, %.loc6_39.3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @CC.as.NonType.impl.%CC.ref, @NonType [concrete = constants.%.910] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NonType [from "interface.carbon"] { @@ -1775,6 +1793,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %.1c7: = impl_self_witness %.Self, @IF [symbolic_self] // CHECK:STDOUT: %impl.elem0.b76: %.f1f = impl_witness_access %.1c7, element0 [symbolic_self] // CHECK:STDOUT: %IF_where.type: type = facet_type <@IF where %impl.elem0.b76 = %int_0> [concrete] +// CHECK:STDOUT: %.1f4: = impl_self_witness %CD, @IF [concrete] // CHECK:STDOUT: %IF.impl_witness: = impl_witness @CD.as.IF.impl.%IF.impl_witness_table [concrete] // CHECK:STDOUT: %CD.as.IF.impl.F.type: type = fn_type @CD.as.IF.impl.F [concrete] // CHECK:STDOUT: %CD.as.IF.impl.F: %CD.as.IF.impl.F.type = struct_value () [concrete] @@ -1818,6 +1837,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @CD.as.IF.impl.%CD.ref, @IF [concrete = constants.%.1f4] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @IF [from "interface_with_function.carbon"] { diff --git a/toolchain/check/testdata/impl/import_self.carbon b/toolchain/check/testdata/impl/import_self.carbon index 84ce5d2dbc60..d9d7314ea801 100644 --- a/toolchain/check/testdata/impl/import_self.carbon +++ b/toolchain/check/testdata/impl/import_self.carbon @@ -167,6 +167,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %.719: Core.Form = init_form %Self.as_type [symbolic] // CHECK:STDOUT: %other.param_patt.03b: %pattern_type.78d = value_param_pattern [symbolic] // CHECK:STDOUT: %other.patt.bca: %pattern_type.78d = at_binding_pattern other, %other.param_patt.03b [symbolic] +// CHECK:STDOUT: %.63f: = impl_self_witness %C, @Add [concrete] // CHECK:STDOUT: %Add.impl_witness: = impl_witness @C.as.Add.impl.%Add.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -221,6 +222,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.Add.impl.%C.ref, @Add [concrete = constants.%.63f] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %x.param_patt: %pattern_type.98b = value_param_pattern [concrete = constants.%x.param_patt] // CHECK:STDOUT: %x.patt: %pattern_type.98b = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt] diff --git a/toolchain/check/testdata/impl/import_self_specific.carbon b/toolchain/check/testdata/impl/import_self_specific.carbon index 1a836a4b51b7..51cf3f10d1b0 100644 --- a/toolchain/check/testdata/impl/import_self_specific.carbon +++ b/toolchain/check/testdata/impl/import_self_specific.carbon @@ -72,12 +72,14 @@ impl forall [N: E] D(N) as I where .Assoc = () { // 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: %T: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.fdf: = impl_self_witness %T, @Y [symbolic] // CHECK:STDOUT: %Y.impl_witness: = impl_witness @T.as.Y.impl.%Y.impl_witness_table, @T.as.Y.impl(%T) [symbolic] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %T, (%Y.impl_witness) [symbolic] // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.cb6: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic] +// CHECK:STDOUT: %.0ce: = impl_self_witness %U, @Z [symbolic] // CHECK:STDOUT: %Z.impl_witness.4e2: = impl_witness @U.as.Z.impl.%Z.impl_witness_table, @U.as.Z.impl(%U) [symbolic] // CHECK:STDOUT: %Z.facet.156: %Z.type = facet_value %U, (%Z.impl_witness.4e2) [symbolic] // CHECK:STDOUT: %pattern_type.5d7: type = pattern_type %Z.type [concrete] @@ -97,6 +99,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %impl.elem0: %Y.type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0 [symbolic] // CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %impl.elem0, @Z [symbolic] +// CHECK:STDOUT: %.516: = impl_self_witness %as_type, @Z [symbolic] // CHECK:STDOUT: %Z.impl_witness.5d1: = impl_witness @U.as.Z.impl.%Z.impl_witness_table, @U.as.Z.impl(%as_type) [symbolic] // CHECK:STDOUT: %.5b1: require_specific_def_type = require_specific_def @U.as.Z.impl(%as_type) [symbolic] // CHECK:STDOUT: %Z.facet.4d3: %Z.type = facet_value %as_type, (%Z.lookup_impl_witness) [symbolic] @@ -128,6 +131,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc5_15.2 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc5: = impl_self_witness @T.as.Y.impl.%T.ref, @Y [symbolic = @T.as.Y.impl.%.loc5_30 (constants.%.fdf)] // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} // CHECK:STDOUT: impl_decl @U.as.Z.impl [concrete] { // CHECK:STDOUT: %U.patt.loc9_15.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc9_15.2 (constants.%U.patt)] @@ -140,6 +144,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc9_15.1: type = symbolic_binding U, 0 [symbolic = %U.loc9_15.2 (constants.%U)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @U.as.Z.impl.%U.ref, @Z [symbolic = @U.as.Z.impl.%.loc9_30 (constants.%.0ce)] // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %V.patt.loc11_10.1: %pattern_type.5d7 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc11_10.2 (constants.%V.patt)] // CHECK:STDOUT: } { @@ -216,6 +221,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: generic impl @T.as.Y.impl(%T.loc5_15.1: type) { // CHECK:STDOUT: %T.patt.loc5_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc5_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_15.2 (constants.%T)] +// CHECK:STDOUT: %.loc5_30: = impl_self_witness %T.loc5_15.2, @Y [symbolic = %.loc5_30 (constants.%.fdf)] // CHECK:STDOUT: %Y.impl_witness.loc5_30.2: = impl_witness %Y.impl_witness_table, @T.as.Y.impl(%T.loc5_15.2) [symbolic = %Y.impl_witness.loc5_30.2 (constants.%Y.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -233,6 +239,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: generic impl @U.as.Z.impl(%U.loc9_15.1: type) { // CHECK:STDOUT: %U.patt.loc9_15.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc9_15.2 (constants.%U.patt)] // CHECK:STDOUT: %U.loc9_15.2: type = symbolic_binding U, 0 [symbolic = %U.loc9_15.2 (constants.%U)] +// CHECK:STDOUT: %.loc9_30: = impl_self_witness %U.loc9_15.2, @Z [symbolic = %.loc9_30 (constants.%.0ce)] // CHECK:STDOUT: %Z.impl_witness.loc9_30.2: = impl_witness %Z.impl_witness_table, @U.as.Z.impl(%U.loc9_15.2) [symbolic = %Z.impl_witness.loc9_30.2 (constants.%Z.impl_witness.4e2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -288,6 +295,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @T.as.Y.impl(constants.%T) { // CHECK:STDOUT: %T.patt.loc5_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc5_15.2 => constants.%T +// CHECK:STDOUT: %.loc5_30 => constants.%.fdf // CHECK:STDOUT: %Y.impl_witness.loc5_30.2 => constants.%Y.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -302,6 +310,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @U.as.Z.impl(constants.%U) { // CHECK:STDOUT: %U.patt.loc9_15.2 => constants.%U.patt // CHECK:STDOUT: %U.loc9_15.2 => constants.%U +// CHECK:STDOUT: %.loc9_30 => constants.%.0ce // CHECK:STDOUT: %Z.impl_witness.loc9_30.2 => constants.%Z.impl_witness.4e2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -319,6 +328,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @U.as.Z.impl(constants.%as_type) { // CHECK:STDOUT: %U.patt.loc9_15.2 => constants.%U.patt // CHECK:STDOUT: %U.loc9_15.2 => constants.%as_type +// CHECK:STDOUT: %.loc9_30 => constants.%.516 // CHECK:STDOUT: %Z.impl_witness.loc9_30.2 => constants.%Z.impl_witness.5d1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -382,11 +392,13 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %c.param_patt.6ae: %pattern_type.d24 = value_param_pattern [symbolic] // CHECK:STDOUT: %c.patt.2df: %pattern_type.d24 = at_binding_pattern c, %c.param_patt.6ae [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic] +// CHECK:STDOUT: %.0ce: = impl_self_witness %U, @Z [symbolic] // CHECK:STDOUT: %Z.impl_witness.824: = impl_witness imports.%Z.impl_witness_table, @U.as.Z.impl(%U) [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %.68b: require_specific_def_type = require_specific_def @U.as.Z.impl(%as_type) [symbolic] // CHECK:STDOUT: %Z.impl_witness.6f3: = impl_witness imports.%Z.impl_witness_table, @U.as.Z.impl(%as_type) [symbolic] +// CHECK:STDOUT: %.7e3: = impl_self_witness %as_type, @Z [symbolic] // CHECK:STDOUT: %.Self.frozen.3a0: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %I.WithSelf.F.type.183: type = fn_type @I.WithSelf.F, @I.WithSelf(%.Self.frozen.3a0) [symbolic_self] // CHECK:STDOUT: %I.WithSelf.F.b1e: %I.WithSelf.F.type.183 = struct_value () [symbolic_self] @@ -397,15 +409,19 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %impl.elem0.7a5: %Y.type = impl_witness_access %.f01, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.fdf: = impl_self_witness %T, @Y [symbolic] // CHECK:STDOUT: %Y.impl_witness.3d4: = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%T) [symbolic] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %.fa3: = impl_self_witness %empty_tuple.type, @Y [concrete] // CHECK:STDOUT: %Y.impl_witness.2e8: = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %empty_tuple.type, (%Y.impl_witness.2e8) [concrete] // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.00f: = impl_self_witness %.Self, @I [symbolic_self] // CHECK:STDOUT: %impl.elem0.e02: %Y.type = impl_witness_access %.00f, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.4ba: type = facet_type <@I where %impl.elem0.e02 = %Y.facet> [concrete] +// CHECK:STDOUT: %.a26: = impl_self_witness %D, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @D.as.I.impl.%I.impl_witness_table, @D.as.I.impl(%N) [symbolic] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness.1c1: = impl_witness imports.%Z.impl_witness_table, @U.as.Z.impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %.dd0: require_specific_def_type = require_specific_def @U.as.Z.impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Z.facet.39d: %Z.type = facet_value %empty_tuple.type, (%Z.impl_witness.1c1) [concrete] @@ -500,6 +516,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc20_15.2: %E = symbolic_binding N, 0 [symbolic = %N.loc20_15.1 (constants.%N)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @D.as.I.impl.%D.loc20_23.2, @I [symbolic = @D.as.I.impl.%.loc20_48 (constants.%.a26)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "impl_def.carbon"] { @@ -532,6 +549,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: generic impl @U.as.Z.impl(imports.%Main.import_ref.b3bc94.1: type) [from "impl_def.carbon"] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt (constants.%U.patt)] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %.1: = impl_self_witness %U, @Z [symbolic = %.1 (constants.%.0ce)] // CHECK:STDOUT: %Z.impl_witness: = impl_witness imports.%Z.impl_witness_table, @U.as.Z.impl(%U) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.824)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -545,6 +563,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: generic impl @T.as.Y.impl(imports.%Main.import_ref.b3bc94.2: type) [from "impl_def.carbon"] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.1: = impl_self_witness %T, @Y [symbolic = %.1 (constants.%.fdf)] // CHECK:STDOUT: %Y.impl_witness: = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%T) [symbolic = %Y.impl_witness (constants.%Y.impl_witness.3d4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -559,6 +578,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %N.patt.loc20_15.2: %pattern_type.849 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc20_15.2 (constants.%N.patt)] // CHECK:STDOUT: %N.loc20_15.1: %E = symbolic_binding N, 0 [symbolic = %N.loc20_15.1 (constants.%N)] // CHECK:STDOUT: %D.loc20_23.1: type = class_type @D, @D(%N.loc20_15.1) [symbolic = %D.loc20_23.1 (constants.%D)] +// CHECK:STDOUT: %.loc20_48: = impl_self_witness %D.loc20_23.1, @I [symbolic = %.loc20_48 (constants.%.a26)] // CHECK:STDOUT: %I.impl_witness.loc20_48.2: = impl_witness %I.impl_witness_table, @D.as.I.impl(%N.loc20_15.1) [symbolic = %I.impl_witness.loc20_48.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -687,12 +707,14 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @U.as.Z.impl(constants.%U) { // CHECK:STDOUT: %U.patt => constants.%U.patt // CHECK:STDOUT: %U => constants.%U +// CHECK:STDOUT: %.1 => constants.%.0ce // CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.824 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U.as.Z.impl(constants.%as_type) { // CHECK:STDOUT: %U.patt => constants.%U.patt // CHECK:STDOUT: %U => constants.%as_type +// CHECK:STDOUT: %.1 => constants.%.7e3 // CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.6f3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -722,12 +744,14 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @T.as.Y.impl(constants.%T) { // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %.1 => constants.%.fdf // CHECK:STDOUT: %Y.impl_witness => constants.%Y.impl_witness.3d4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T.as.Y.impl(constants.%empty_tuple.type) { // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%empty_tuple.type +// CHECK:STDOUT: %.1 => constants.%.fa3 // CHECK:STDOUT: %Y.impl_witness => constants.%Y.impl_witness.2e8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -737,6 +761,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %N.patt.loc20_15.2 => constants.%N.patt // CHECK:STDOUT: %N.loc20_15.1 => constants.%N // CHECK:STDOUT: %D.loc20_23.1 => constants.%D +// CHECK:STDOUT: %.loc20_48 => constants.%.a26 // CHECK:STDOUT: %I.impl_witness.loc20_48.2 => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -747,6 +772,7 @@ impl forall [N: E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @U.as.Z.impl(constants.%empty_tuple.type) { // CHECK:STDOUT: %U.patt => constants.%U.patt // CHECK:STDOUT: %U => constants.%empty_tuple.type +// CHECK:STDOUT: %.1 => constants.%.78e // CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.1c1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index 15ff2f331b3a..36522f528a3d 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -133,6 +133,7 @@ fn G() { // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %x.param_patt.c77: %pattern_type.a96 = value_param_pattern [concrete] // CHECK:STDOUT: %x.patt.05f: %pattern_type.a96 = at_binding_pattern x, %x.param_patt.c77 [concrete] +// CHECK:STDOUT: %.4ce: = impl_self_witness %C.6b1ed7.2, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic] // CHECK:STDOUT: %pattern_type.d0f: type = pattern_type %C.6b1ed7.2 [symbolic] // CHECK:STDOUT: %x.param_patt.bc9: %pattern_type.d0f = value_param_pattern [symbolic] @@ -213,6 +214,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Y.loc7_15.2: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y.loc7_15.1 (constants.%Y)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.loc7_24.2, @I [symbolic = @C.as.I.impl.%.loc7_31 (constants.%.4ce)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "a.carbon"] { @@ -230,6 +232,7 @@ fn G() { // CHECK:STDOUT: %Y.patt.loc7_15.2: %pattern_type.cb1 = symbolic_binding_pattern Y, 0 [symbolic = %Y.patt.loc7_15.2 (constants.%Y.patt)] // CHECK:STDOUT: %Y.loc7_15.1: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y.loc7_15.1 (constants.%Y)] // CHECK:STDOUT: %C.loc7_24.1: type = class_type @C, @C(%Y.loc7_15.1) [symbolic = %C.loc7_24.1 (constants.%C.6b1ed7.2)] +// CHECK:STDOUT: %.loc7_31: = impl_self_witness %C.loc7_24.1, @I [symbolic = %.loc7_31 (constants.%.4ce)] // CHECK:STDOUT: %I.impl_witness.loc7_31.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%Y.loc7_15.1) [symbolic = %I.impl_witness.loc7_31.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -376,6 +379,7 @@ fn G() { // CHECK:STDOUT: %Y.patt.loc7_15.2 => constants.%Y.patt // CHECK:STDOUT: %Y.loc7_15.1 => constants.%Y // CHECK:STDOUT: %C.loc7_24.1 => constants.%C.6b1ed7.2 +// CHECK:STDOUT: %.loc7_31 => constants.%.4ce // CHECK:STDOUT: %I.impl_witness.loc7_31.2 => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -430,6 +434,7 @@ fn G() { // CHECK:STDOUT: %assoc0.232: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.9f7 [concrete] // CHECK:STDOUT: %Y: %empty_tuple.type = symbolic_binding Y, 0 [symbolic] // CHECK:STDOUT: %C.6b1ed7.2: type = class_type @C, @C(%Y) [symbolic] +// CHECK:STDOUT: %.4ce: = impl_self_witness %C.6b1ed7.2, @I [symbolic] // CHECK:STDOUT: %I.impl_witness.95e: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.type.c7d3b5.1: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%Y) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.c1d971.1: %C.as.I.impl.F.type.c7d3b5.1 = struct_value () [symbolic] @@ -453,6 +458,7 @@ fn G() { // CHECK:STDOUT: %bound_method.ef4: = bound_method %.e66, %specific_impl_fn [symbolic] // CHECK:STDOUT: %bound_method.3e7: = bound_method %.e66, %impl.elem0 [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.specific_fn.79d: = specific_function %C.as.I.impl.F.c1d971.2, @C.as.I.impl.F.2(%Y) [symbolic] +// CHECK:STDOUT: %.3b5: = impl_self_witness %C.2c9, @I [concrete] // CHECK:STDOUT: %I.impl_witness.953: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%empty_tuple) [concrete] // CHECK:STDOUT: %C.as.I.impl.F.type.42776e.1: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%empty_tuple) [concrete] // CHECK:STDOUT: %C.as.I.impl.F.4ca3bc.1: %C.as.I.impl.F.type.42776e.1 = struct_value () [concrete] @@ -533,6 +539,7 @@ fn G() { // CHECK:STDOUT: %Y.patt: %pattern_type.cb1 = symbolic_binding_pattern Y, 0 [symbolic = %Y.patt (constants.%Y.patt)] // CHECK:STDOUT: %Y: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y (constants.%Y)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.6b1ed7.2)] +// CHECK:STDOUT: %.1: = impl_self_witness %C, @I [symbolic = %.1 (constants.%.4ce)] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic = %I.impl_witness (constants.%I.impl_witness.95e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -668,6 +675,7 @@ fn G() { // CHECK:STDOUT: %Y.patt => constants.%Y.patt // CHECK:STDOUT: %Y => constants.%Y // CHECK:STDOUT: %C => constants.%C.6b1ed7.2 +// CHECK:STDOUT: %.1 => constants.%.4ce // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.95e // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -696,6 +704,7 @@ fn G() { // CHECK:STDOUT: %Y.patt => constants.%Y.patt // CHECK:STDOUT: %Y => constants.%empty_tuple // CHECK:STDOUT: %C => constants.%C.2c9 +// CHECK:STDOUT: %.1 => constants.%.3b5 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.953 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/import_use_generic.carbon b/toolchain/check/testdata/impl/import_use_generic.carbon index aa6edb0fd3ae..4b365c67b183 100644 --- a/toolchain/check/testdata/impl/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/import_use_generic.carbon @@ -72,6 +72,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %I.WithSelf.F.ec6: %I.WithSelf.F.type.dcc = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.41f: = impl_self_witness %C, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%T) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [symbolic] @@ -108,6 +109,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C.as.I.impl.%C.loc10_26.2, @I [symbolic = @C.as.I.impl.%.loc10_33 (constants.%.41f)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -130,6 +132,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.patt.loc10_15.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc10_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.1 (constants.%T)] // CHECK:STDOUT: %C.loc10_26.1: type = class_type @C, @C(%T.loc10_15.1) [symbolic = %C.loc10_26.1 (constants.%C)] +// CHECK:STDOUT: %.loc10_33: = impl_self_witness %C.loc10_26.1, @I [symbolic = %.loc10_33 (constants.%.41f)] // CHECK:STDOUT: %I.impl_witness.loc10_33.2: = impl_witness %I.impl_witness_table, @C.as.I.impl(%T.loc10_15.1) [symbolic = %I.impl_witness.loc10_33.2 (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -194,6 +197,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.patt.loc10_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc10_15.1 => constants.%T // CHECK:STDOUT: %C.loc10_26.1 => constants.%C +// CHECK:STDOUT: %.loc10_33 => constants.%.41f // CHECK:STDOUT: %I.impl_witness.loc10_33.2 => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -238,9 +242,11 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.9f7 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %.41f: = impl_self_witness %C.1d0, @I [symbolic] // CHECK:STDOUT: %I.impl_witness.5b2: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.type.86f: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%T) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.45f: %C.as.I.impl.F.type.86f = struct_value () [symbolic] +// CHECK:STDOUT: %.0b2: = impl_self_witness %C.d8e, @I [concrete] // CHECK:STDOUT: %I.impl_witness.a73: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %C.as.I.impl.F.type.7ce: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %C.as.I.impl.F.899: %C.as.I.impl.F.type.7ce = struct_value () [concrete] @@ -335,6 +341,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1d0)] +// CHECK:STDOUT: %.1: = impl_self_witness %C, @I [symbolic = %.1 (constants.%.41f)] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.5b2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -413,6 +420,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.1d0 +// CHECK:STDOUT: %.1 => constants.%.41f // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.5b2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -426,6 +434,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.patt => constants.%T.patt // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %C => constants.%C.d8e +// CHECK:STDOUT: %.1 => constants.%.0b2 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.a73 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/incomplete.carbon b/toolchain/check/testdata/impl/incomplete.carbon index 67090064d5cb..4b69603c4143 100644 --- a/toolchain/check/testdata/impl/incomplete.carbon +++ b/toolchain/check/testdata/impl/incomplete.carbon @@ -213,6 +213,7 @@ interface B { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.aaf: = impl_self_witness %empty_struct_type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -226,11 +227,13 @@ interface B { // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @empty_struct_type.as.I.impl.%.loc6_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc15: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @empty_struct_type.as.I.impl.%.loc15_7.2, @I [concrete = constants.%.aaf] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I; @@ -251,6 +254,7 @@ interface B { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.ffd: = impl_self_witness %C, @J [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -270,6 +274,7 @@ interface B { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @C.as.J.impl.%C.ref, @J [concrete = constants.%.ffd] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J; @@ -300,6 +305,7 @@ interface B { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.ffd: = impl_self_witness %C, @J [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -314,6 +320,7 @@ interface B { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.J.impl.%C.ref, @J [concrete = constants.%.ffd] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J; @@ -419,8 +426,10 @@ interface B { // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where .Self impls @Incomplete> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.d08: %Incomplete.type = symbolic_binding Self, 0 [symbolic] +// CHECK:STDOUT: %.f0c: = impl_self_witness %C, @Incomplete [concrete] // CHECK:STDOUT: %Incomplete.impl_witness: = impl_witness @C.as.Incomplete.impl.%Incomplete.impl_witness_table [concrete] // CHECK:STDOUT: %Incomplete.facet: %Incomplete.type = facet_value %C, (%Incomplete.impl_witness) [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] @@ -455,11 +464,13 @@ interface B { // CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref.loc8 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.I.impl.%C.ref.loc8, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %Incomplete.decl.loc10: type = interface_decl @Incomplete [concrete = constants.%Incomplete.type] {} {} // CHECK:STDOUT: impl_decl @C.as.Incomplete.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl.loc6 [concrete = constants.%Incomplete.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.Incomplete.impl.%C.ref, @Incomplete [concrete = constants.%.f0c] // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -480,6 +491,7 @@ interface B { // CHECK:STDOUT: %impls.loc13_25.2 = requirement_impls %.loc13_19.2, %Incomplete.ref.loc13 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.I.impl.%C.ref.loc13, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -568,8 +580,10 @@ interface B { // CHECK:STDOUT: %.b2e: = impl_self_witness %.Self, @J [symbolic_self] // CHECK:STDOUT: %impl.elem0.4f1: type = impl_witness_access %.b2e, element0 [symbolic_self] // CHECK:STDOUT: %J_where.type.297: type = facet_type <@J where .Self impls @Incomplete and %impl.elem0.4f1 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.ffd: = impl_self_witness %C, @J [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %Self.d08: %Incomplete.type = symbolic_binding Self, 0 [symbolic] +// CHECK:STDOUT: %.f0c: = impl_self_witness %C, @Incomplete [concrete] // CHECK:STDOUT: %Incomplete.impl_witness: = impl_witness @C.as.Incomplete.impl.%Incomplete.impl_witness_table [concrete] // CHECK:STDOUT: %Incomplete.facet: %Incomplete.type = facet_value %C, (%Incomplete.impl_witness) [concrete] // CHECK:STDOUT: %J.facet: %J.type = facet_value %C, (%J.impl_witness) [concrete] @@ -615,11 +629,13 @@ interface B { // CHECK:STDOUT: %rewrite.loc8_49.2 = requirement_rewrite %impl.elem0.loc8_46.2, %.loc8_52.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.J.impl.%C.ref.loc8, @J [concrete = constants.%.ffd] // CHECK:STDOUT: %Incomplete.decl.loc10: type = interface_decl @Incomplete [concrete = constants.%Incomplete.type] {} {} // CHECK:STDOUT: impl_decl @C.as.Incomplete.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl.loc6 [concrete = constants.%Incomplete.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.Incomplete.impl.%C.ref, @Incomplete [concrete = constants.%.f0c] // CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref.loc13: type = name_ref J, file.%J.decl [concrete = constants.%J.type] @@ -651,6 +667,7 @@ interface B { // CHECK:STDOUT: %rewrite.loc13_49.2 = requirement_rewrite %impl.elem0.loc13_46.2, %.loc13_52.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.J.impl.%C.ref.loc13, @J [concrete = constants.%.ffd] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { @@ -742,6 +759,7 @@ interface B { // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where .Self impls @Incomplete> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -774,6 +792,7 @@ interface B { // CHECK:STDOUT: %impls.loc12_25.2 = requirement_impls %.loc12_19.2, %Incomplete.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @C.as.I.impl.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { @@ -824,6 +843,7 @@ interface B { // CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where .Self impls @Incomplete> [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] // CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] @@ -858,6 +878,7 @@ interface B { // CHECK:STDOUT: %impls.loc12_25.2 = requirement_impls %.loc12_19.2, %Incomplete.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @C.as.I.impl.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/impl/interface_args.carbon b/toolchain/check/testdata/impl/interface_args.carbon index c29dc563dc60..bdceeffd5803 100644 --- a/toolchain/check/testdata/impl/interface_args.carbon +++ b/toolchain/check/testdata/impl/interface_args.carbon @@ -264,6 +264,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Action.type.5d2: type = facet_type <@Action, @Action(%B)> [concrete] +// CHECK:STDOUT: %.c1e: = impl_self_witness %A, @Action, @Action(%B) [concrete] // CHECK:STDOUT: %Action.impl_witness: = impl_witness @A.as.Action.impl.%Action.impl_witness_table [concrete] // CHECK:STDOUT: %Self.7ff: %Action.type.5d2 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Action.WithSelf.Op.type.cd3: type = fn_type @Action.WithSelf.Op, @Action.WithSelf(%B, %Self.67c) [symbolic] @@ -320,6 +321,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.5d2] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @A.as.Action.impl.%A.ref, @Action, @Action(constants.%B) [concrete = constants.%.c1e] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.param_patt: %pattern_type.9ef = value_param_pattern [concrete = constants.%a.param_patt] // CHECK:STDOUT: %a.patt: %pattern_type.9ef = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] @@ -519,9 +521,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %pattern_type.1f8: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %self.param_patt.e11: %pattern_type.1f8 = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.f9b: %pattern_type.1f8 = at_binding_pattern self, %self.param_patt.e11 [symbolic] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Action.type.5d2: type = facet_type <@Action, @Action(%B)> [concrete] // CHECK:STDOUT: %Self.581: %Action.type.5d2 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %pattern_type.9ef: type = pattern_type %A [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.9ef = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.9ef = at_binding_pattern a, %a.param_patt [concrete] @@ -730,9 +732,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %pattern_type.1f8: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %self.param_patt: %pattern_type.1f8 = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt: %pattern_type.1f8 = at_binding_pattern self, %self.param_patt [symbolic] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Action.type.5d2: type = facet_type <@Action, @Action(%B)> [concrete] // CHECK:STDOUT: %Self.581: %Action.type.5d2 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %pattern_type.9ef: type = pattern_type %A [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.9ef = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt: %pattern_type.9ef = at_binding_pattern a, %a.param_patt [concrete] @@ -949,6 +951,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %Factory.type.5e3: type = facet_type <@Factory, @Factory(%B)> [concrete] +// CHECK:STDOUT: %.b7c: = impl_self_witness %A, @Factory, @Factory(%B) [concrete] // CHECK:STDOUT: %Factory.impl_witness: = impl_witness @A.as.Factory.impl.%Factory.impl_witness_table [concrete] // CHECK:STDOUT: %Self.f44: %Factory.type.5e3 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Factory.WithSelf.Make.type.264: type = fn_type @Factory.WithSelf.Make, @Factory.WithSelf(%B, %Self.9c2) [symbolic] @@ -1008,6 +1011,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [concrete = constants.%Factory.type.5e3] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @A.as.Factory.impl.%A.ref, @Factory, @Factory(constants.%B) [concrete = constants.%.b7c] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Factory(%T.loc4_20.2: type) { @@ -1262,9 +1266,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %.184: Core.Form = init_form %T [symbolic] // CHECK:STDOUT: %Factory.WithSelf.Make.type.cf7: type = fn_type @Factory.WithSelf.Make, @Factory.WithSelf(%T, %Self.3e3) [symbolic] // CHECK:STDOUT: %Factory.WithSelf.Make.86c: %Factory.WithSelf.Make.type.cf7 = struct_value () [symbolic] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Factory.type.5e3: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %Self.739: %Factory.type.5e3 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %.d83: Core.Form = init_form %B [concrete] // CHECK:STDOUT: %pattern_type.e39: type = pattern_type %B [concrete] // CHECK:STDOUT: %return.param_patt.934: %pattern_type.e39 = out_param_pattern [concrete] @@ -1567,9 +1571,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %.184: Core.Form = init_form %T [symbolic] // CHECK:STDOUT: %Factory.WithSelf.Make.type.cf7: type = fn_type @Factory.WithSelf.Make, @Factory.WithSelf(%T, %Self.3e3) [symbolic] // CHECK:STDOUT: %Factory.WithSelf.Make.86c: %Factory.WithSelf.Make.type.cf7 = struct_value () [symbolic] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Factory.type.5e3: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %Self.739: %Factory.type.5e3 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] diff --git a/toolchain/check/testdata/impl/lookup/alias.carbon b/toolchain/check/testdata/impl/lookup/alias.carbon index d89b13181bbb..f40abb564df6 100644 --- a/toolchain/check/testdata/impl/lookup/alias.carbon +++ b/toolchain/check/testdata/impl/lookup/alias.carbon @@ -42,6 +42,7 @@ fn G(c: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.ba1: = impl_self_witness %C, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] @@ -68,6 +69,7 @@ fn G(c: C) { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc23: = impl_self_witness @C.as.HasF.impl.%C.ref, @HasF [concrete = constants.%.ba1] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %c.param_patt: %pattern_type = value_param_pattern [concrete = constants.%c.param_patt] // CHECK:STDOUT: %c.patt: %pattern_type = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt] diff --git a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon index f975762c2b7f..9f58f4411e72 100644 --- a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon +++ b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon @@ -112,6 +112,7 @@ fn G() { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.8e4: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.f79: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.dfa: %pattern_type.f79 = value_param_pattern [concrete] @@ -121,6 +122,7 @@ fn G() { // CHECK:STDOUT: %I.facet.947: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %I.WithSelf.II.type.9c8: type = fn_type @I.WithSelf.II, @I.WithSelf(%I.facet.947) [concrete] // CHECK:STDOUT: %I.WithSelf.II.622: %I.WithSelf.II.type.9c8 = struct_value () [concrete] +// CHECK:STDOUT: %.196: = impl_self_witness %C, @J [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.J.impl.JJ.type: type = fn_type @C.as.J.impl.JJ [concrete] // CHECK:STDOUT: %C.as.J.impl.JJ: %C.as.J.impl.JJ.type = struct_value () [concrete] @@ -297,10 +299,12 @@ fn G() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc31: = impl_self_witness @C.as.I.impl.%Self.ref, @I [concrete = constants.%.8e4] // CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc34: = impl_self_witness @C.as.J.impl.%Self.ref, @J [concrete = constants.%.196] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon index 3372a199df97..8391414511a1 100644 --- a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon @@ -58,6 +58,7 @@ fn G() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness.4e9: = impl_witness @C.as.I.impl.ac9.%I.impl_witness_table [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -95,6 +96,7 @@ fn G() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc35: = impl_self_witness @C.as.I.impl.e10.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -132,6 +134,7 @@ fn G() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @C.as.I.impl.ac9.%Self.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index a69ca6b219f6..1c6644ce99c7 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -147,6 +147,7 @@ fn G(x: A) { // 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: %T: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.989: = impl_self_witness %T, @HasF [symbolic] // CHECK:STDOUT: %HasF.impl_witness.ebe: = impl_witness @T.as.HasF.impl.%HasF.impl_witness_table, @T.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %self.param_patt.b7c: %pattern_type.51d = value_param_pattern [symbolic] @@ -164,6 +165,7 @@ fn G(x: A) { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = at_binding_pattern x, %x.param_patt [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %.94a: = impl_self_witness %empty_struct_type, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness.aaf: = impl_witness @T.as.HasF.impl.%HasF.impl_witness_table, @T.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %T.as.HasF.impl.F.type.d06: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %T.as.HasF.impl.F.e31: %T.as.HasF.impl.F.type.d06 = struct_value () [concrete] @@ -203,6 +205,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @T.as.HasF.impl.%T.ref, @HasF [symbolic = @T.as.HasF.impl.%.loc8_33 (constants.%.989)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%x.param_patt] // CHECK:STDOUT: %x.patt: %pattern_type.a96 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt] @@ -246,6 +249,7 @@ fn G(x: A) { // CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc8_15.2: type) { // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] +// CHECK:STDOUT: %.loc8_33: = impl_self_witness %T.loc8_15.1, @HasF [symbolic = %.loc8_33 (constants.%.989)] // CHECK:STDOUT: %HasF.impl_witness.loc8_33.2: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(%T.loc8_15.1) [symbolic = %HasF.impl_witness.loc8_33.2 (constants.%HasF.impl_witness.ebe)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -327,6 +331,7 @@ fn G(x: A) { // CHECK:STDOUT: specific @T.as.HasF.impl(constants.%T) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.1 => constants.%T +// CHECK:STDOUT: %.loc8_33 => constants.%.989 // CHECK:STDOUT: %HasF.impl_witness.loc8_33.2 => constants.%HasF.impl_witness.ebe // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -359,6 +364,7 @@ fn G(x: A) { // CHECK:STDOUT: specific @T.as.HasF.impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.1 => constants.%empty_struct_type +// CHECK:STDOUT: %.loc8_33 => constants.%.94a // CHECK:STDOUT: %HasF.impl_witness.loc8_33.2 => constants.%HasF.impl_witness.aaf // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -405,6 +411,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic] +// CHECK:STDOUT: %.1c9: = impl_self_witness %ptr.e8f, @HasF [symbolic] // CHECK:STDOUT: %HasF.impl_witness.672: = impl_witness @ptr.as.HasF.impl.%HasF.impl_witness_table, @ptr.as.HasF.impl(%T.67d) [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %self.param_patt.921: %pattern_type.4f4 = value_param_pattern [symbolic] @@ -439,6 +446,7 @@ fn G(x: A) { // CHECK:STDOUT: %return.patt.da5: %pattern_type.1cc = return_slot_pattern %return.param_patt.07a, %ptr.c28 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %.897: = impl_self_witness %ptr.c28, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness.e43: = impl_witness @ptr.as.HasF.impl.%HasF.impl_witness_table, @ptr.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %ptr.as.HasF.impl.F.type.03e: type = fn_type @ptr.as.HasF.impl.F, @ptr.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %ptr.as.HasF.impl.F.156: %ptr.as.HasF.impl.F.type.03e = struct_value () [concrete] @@ -491,6 +499,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @ptr.as.HasF.impl.%ptr.loc8_24.2, @HasF [symbolic = @ptr.as.HasF.impl.%.loc8_34 (constants.%.1c9)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.param_patt: %pattern_type.1cc = value_param_pattern [concrete = constants.%x.param_patt] // CHECK:STDOUT: %x.patt: %pattern_type.1cc = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt] @@ -553,6 +562,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T.67d)] // CHECK:STDOUT: %ptr.loc8_24.1: type = ptr_type %T.loc8_15.1 [symbolic = %ptr.loc8_24.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc8_34: = impl_self_witness %ptr.loc8_24.1, @HasF [symbolic = %.loc8_34 (constants.%.1c9)] // CHECK:STDOUT: %HasF.impl_witness.loc8_34.2: = impl_witness %HasF.impl_witness_table, @ptr.as.HasF.impl(%T.loc8_15.1) [symbolic = %HasF.impl_witness.loc8_34.2 (constants.%HasF.impl_witness.672)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -670,6 +680,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc8_15.1 => constants.%T.67d // CHECK:STDOUT: %ptr.loc8_24.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc8_34 => constants.%.1c9 // CHECK:STDOUT: %HasF.impl_witness.loc8_34.2 => constants.%HasF.impl_witness.672 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -710,6 +721,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc8_15.1 => constants.%empty_struct_type // CHECK:STDOUT: %ptr.loc8_24.1 => constants.%ptr.c28 +// CHECK:STDOUT: %.loc8_34 => constants.%.897 // CHECK:STDOUT: %HasF.impl_witness.loc8_34.2 => constants.%HasF.impl_witness.e43 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -769,6 +781,7 @@ fn G(x: A) { // CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.9f4: = impl_self_witness %C.1d0, @HasF [symbolic] // CHECK:STDOUT: %HasF.impl_witness.4e6: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table, @C.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.ebe: type = pattern_type %C.1d0 [symbolic] // CHECK:STDOUT: %self.param_patt.5bc: %pattern_type.ebe = value_param_pattern [symbolic] @@ -786,6 +799,7 @@ fn G(x: A) { // CHECK:STDOUT: %x.patt: %pattern_type.2fd = at_binding_pattern x, %x.param_patt [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %.014: = impl_self_witness %C.d8e, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness.f0d: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table, @C.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F.type.edc: type = fn_type @C.as.HasF.impl.F, @C.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F.612: %C.as.HasF.impl.F.type.edc = struct_value () [concrete] @@ -836,6 +850,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C.as.HasF.impl.%C.loc10_26.2, @HasF [symbolic = @C.as.HasF.impl.%.loc10_36 (constants.%.9f4)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.param_patt: %pattern_type.2fd = value_param_pattern [concrete = constants.%x.param_patt] // CHECK:STDOUT: %x.patt: %pattern_type.2fd = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt] @@ -882,6 +897,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc10_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc10_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.1 (constants.%T)] // CHECK:STDOUT: %C.loc10_26.1: type = class_type @C, @C(%T.loc10_15.1) [symbolic = %C.loc10_26.1 (constants.%C.1d0)] +// CHECK:STDOUT: %.loc10_36: = impl_self_witness %C.loc10_26.1, @HasF [symbolic = %.loc10_36 (constants.%.9f4)] // CHECK:STDOUT: %HasF.impl_witness.loc10_36.2: = impl_witness %HasF.impl_witness_table, @C.as.HasF.impl(%T.loc10_15.1) [symbolic = %HasF.impl_witness.loc10_36.2 (constants.%HasF.impl_witness.4e6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -987,6 +1003,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc10_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc10_15.1 => constants.%T // CHECK:STDOUT: %C.loc10_26.1 => constants.%C.1d0 +// CHECK:STDOUT: %.loc10_36 => constants.%.9f4 // CHECK:STDOUT: %HasF.impl_witness.loc10_36.2 => constants.%HasF.impl_witness.4e6 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1028,6 +1045,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc10_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc10_15.1 => constants.%empty_struct_type // CHECK:STDOUT: %C.loc10_26.1 => constants.%C.d8e +// CHECK:STDOUT: %.loc10_36 => constants.%.014 // CHECK:STDOUT: %HasF.impl_witness.loc10_36.2 => constants.%HasF.impl_witness.f0d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1076,6 +1094,7 @@ fn G(x: A) { // CHECK:STDOUT: %assoc0.e9a: %HasF.assoc_type.ddf = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.500: = impl_self_witness %empty_struct_type, @HasF, @HasF(%T) [symbolic] // CHECK:STDOUT: %HasF.impl_witness.932: = impl_witness @empty_struct_type.as.HasF.impl.%HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.daf [symbolic] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] @@ -1096,6 +1115,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.WithSelf.F.0d9: %HasF.WithSelf.F.type.b94 = struct_value () [symbolic] // CHECK:STDOUT: %HasF.assoc_type.1d0: type = assoc_entity_type @HasF, @HasF(%empty_struct_type) [concrete] // CHECK:STDOUT: %assoc0.3f7: %HasF.assoc_type.1d0 = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.232: = impl_self_witness %empty_struct_type, @HasF, @HasF(%empty_struct_type) [concrete] // CHECK:STDOUT: %HasF.impl_witness.7f1: = impl_witness @empty_struct_type.as.HasF.impl.%HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %HasF.type.b91 [concrete] // CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.type.6cf: type = fn_type @empty_struct_type.as.HasF.impl.F, @empty_struct_type.as.HasF.impl(%empty_struct_type) [concrete] @@ -1144,6 +1164,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_struct_type.as.HasF.impl.%.loc8_24.2, @HasF, @HasF(constants.%T) [symbolic = @empty_struct_type.as.HasF.impl.%.loc8_37 (constants.%.500)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%x.param_patt] // CHECK:STDOUT: %x.patt: %pattern_type.a96 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt] @@ -1198,6 +1219,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: %HasF.type.loc8_35.1: type = facet_type <@HasF, @HasF(%T.loc8_15.1)> [symbolic = %HasF.type.loc8_35.1 (constants.%HasF.type.daf)] +// CHECK:STDOUT: %.loc8_37: = impl_self_witness constants.%empty_struct_type, @HasF, @HasF(%T.loc8_15.1) [symbolic = %.loc8_37 (constants.%.500)] // CHECK:STDOUT: %HasF.impl_witness.loc8_37.2: = impl_witness %HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%T.loc8_15.1) [symbolic = %HasF.impl_witness.loc8_37.2 (constants.%HasF.impl_witness.932)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1296,6 +1318,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.1 => constants.%T // CHECK:STDOUT: %HasF.type.loc8_35.1 => constants.%HasF.type.daf +// CHECK:STDOUT: %.loc8_37 => constants.%.500 // CHECK:STDOUT: %HasF.impl_witness.loc8_37.2 => constants.%HasF.impl_witness.932 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1351,6 +1374,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.1 => constants.%empty_struct_type // CHECK:STDOUT: %HasF.type.loc8_35.1 => constants.%HasF.type.b91 +// CHECK:STDOUT: %.loc8_37 => constants.%.232 // CHECK:STDOUT: %HasF.impl_witness.loc8_37.2 => constants.%HasF.impl_witness.7f1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1394,6 +1418,7 @@ fn G(x: A) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic] +// CHECK:STDOUT: %.989: = impl_self_witness %T, @HasF [symbolic] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @T.as.HasF.impl.%HasF.impl_witness_table, @T.as.HasF.impl(%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %self.param_patt.b7c: %pattern_type.51d = value_param_pattern [symbolic] @@ -1442,6 +1467,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc12_24.2: type = symbolic_binding U, 1 [symbolic = %U.loc12_24.1 (constants.%U)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @T.as.HasF.impl.%T.ref, @HasF [symbolic = @T.as.HasF.impl.%.loc12_42 (constants.%.989)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%x.param_patt] // CHECK:STDOUT: %x.patt: %pattern_type.a96 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt] @@ -1487,6 +1513,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.loc12_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.1 (constants.%T)] // CHECK:STDOUT: %U.patt.loc12_24.2: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc12_24.2 (constants.%U.patt)] // CHECK:STDOUT: %U.loc12_24.1: type = symbolic_binding U, 1 [symbolic = %U.loc12_24.1 (constants.%U)] +// CHECK:STDOUT: %.loc12_42: = impl_self_witness %T.loc12_15.1, @HasF [symbolic = %.loc12_42 (constants.%.989)] // CHECK:STDOUT: %HasF.impl_witness.loc12_42.2: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(%T.loc12_15.1, %U.loc12_24.1) [symbolic = %HasF.impl_witness.loc12_42.2 (constants.%HasF.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1565,6 +1592,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.loc12_15.1 => constants.%T // CHECK:STDOUT: %U.patt.loc12_24.2 => constants.%U.patt // CHECK:STDOUT: %U.loc12_24.1 => constants.%U +// CHECK:STDOUT: %.loc12_42 => constants.%.989 // CHECK:STDOUT: %HasF.impl_witness.loc12_42.2 => constants.%HasF.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1599,6 +1627,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.WithSelf.F.ff7: %HasF.WithSelf.F.type.41d = struct_value () [symbolic] // CHECK:STDOUT: %HasF.assoc_type.ddf: type = assoc_entity_type @HasF, @HasF(%T) [symbolic] // CHECK:STDOUT: %assoc0.e9a: %HasF.assoc_type.ddf = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [symbolic] +// CHECK:STDOUT: %.b9d: = impl_self_witness %T, @HasF, @HasF(%T) [symbolic] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @T.as.HasF.impl.%HasF.impl_witness_table, @T.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %require_complete.513: = require_complete_type %HasF.type.daf [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] @@ -1665,6 +1694,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @T.as.HasF.impl.%T.ref.loc8_23, @HasF, @HasF(constants.%T) [symbolic = @T.as.HasF.impl.%.loc8_36 (constants.%.b9d)] // CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { @@ -1718,6 +1748,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: %HasF.type.loc8_34.1: type = facet_type <@HasF, @HasF(%T.loc8_15.1)> [symbolic = %HasF.type.loc8_34.1 (constants.%HasF.type.daf)] +// CHECK:STDOUT: %.loc8_36: = impl_self_witness %T.loc8_15.1, @HasF, @HasF(%T.loc8_15.1) [symbolic = %.loc8_36 (constants.%.b9d)] // CHECK:STDOUT: %HasF.impl_witness.loc8_36.2: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(%T.loc8_15.1) [symbolic = %HasF.impl_witness.loc8_36.2 (constants.%HasF.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1832,6 +1863,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc8_15.1 => constants.%T // CHECK:STDOUT: %HasF.type.loc8_34.1 => constants.%HasF.type.daf +// CHECK:STDOUT: %.loc8_36 => constants.%.b9d // CHECK:STDOUT: %HasF.impl_witness.loc8_36.2 => constants.%HasF.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index 497f1b1eaba6..8d8ca8f49925 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -60,6 +60,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %V.67d: type = symbolic_binding V, 0 [symbolic] // CHECK:STDOUT: %A.47a1de.2: type = class_type @A, @A(%V.67d) [symbolic] // CHECK:STDOUT: %I.type.3fe556.2: type = facet_type <@I, @I(%V.67d)> [symbolic] +// CHECK:STDOUT: %.dcb87d.1: = impl_self_witness %A.47a1de.2, @I, @I(%V.67d) [symbolic] // CHECK:STDOUT: %I.impl_witness.25d8bb.1: = impl_witness @A.as.I.impl.%I.impl_witness_table, @A.as.I.impl(%V.67d) [symbolic] // CHECK:STDOUT: %require_complete.45eab2.1: = require_complete_type %I.type.3fe556.2 [symbolic] // CHECK:STDOUT: %pattern_type.44a178.1: type = pattern_type %A.47a1de.2 [symbolic] @@ -102,6 +103,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %assoc0.13b5f8.3: %I.assoc_type.b71f2b.3 = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [symbolic] // CHECK:STDOUT: %require_complete.45eab2.2: = require_complete_type %I.type.3fe556.3 [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %A.47a1de.3, @I, @I(%W) [symbolic] +// CHECK:STDOUT: %.dcb87d.2: = impl_self_witness %A.47a1de.3, @I, @I(%W) [symbolic] // CHECK:STDOUT: %I.impl_witness.25d8bb.2: = impl_witness @A.as.I.impl.%I.impl_witness_table, @A.as.I.impl(%W) [symbolic] // CHECK:STDOUT: %A.as.I.impl.F.type.d1ec9e.2: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%W) [symbolic] // CHECK:STDOUT: %A.as.I.impl.F.d83bf5.2: %A.as.I.impl.F.type.d1ec9e.2 = struct_value () [symbolic] @@ -123,6 +125,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %I.type.81d: type = facet_type <@I, @I(%empty_struct_type)> [concrete] // CHECK:STDOUT: %I.assoc_type.cd3: type = assoc_entity_type @I, @I(%empty_struct_type) [concrete] // CHECK:STDOUT: %assoc0.a4c: %I.assoc_type.cd3 = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.91b: = impl_self_witness %A.940, @I, @I(%empty_struct_type) [concrete] // CHECK:STDOUT: %I.impl_witness.e69: = impl_witness @A.as.I.impl.%I.impl_witness_table, @A.as.I.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %complete_type.7da: = complete_type_witness %I.type.81d [concrete] // CHECK:STDOUT: %A.as.I.impl.F.type.a42: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%empty_struct_type) [concrete] @@ -169,6 +172,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc12_15.2: type = symbolic_binding V, 0 [symbolic = %V.loc12_15.1 (constants.%V.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @A.as.I.impl.%A.loc12_26.2, @I, @I(constants.%V.67d) [symbolic = @A.as.I.impl.%.loc12_36 (constants.%.dcb87d.1)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @A.as.I.impl(%V.loc12_15.2: type) { @@ -176,6 +180,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %V.loc12_15.1: type = symbolic_binding V, 0 [symbolic = %V.loc12_15.1 (constants.%V.67d)] // CHECK:STDOUT: %A.loc12_26.1: type = class_type @A, @A(%V.loc12_15.1) [symbolic = %A.loc12_26.1 (constants.%A.47a1de.2)] // CHECK:STDOUT: %I.type.loc12_34.1: type = facet_type <@I, @I(%V.loc12_15.1)> [symbolic = %I.type.loc12_34.1 (constants.%I.type.3fe556.2)] +// CHECK:STDOUT: %.loc12_36: = impl_self_witness %A.loc12_26.1, @I, @I(%V.loc12_15.1) [symbolic = %.loc12_36 (constants.%.dcb87d.1)] // CHECK:STDOUT: %I.impl_witness.loc12_36.2: = impl_witness %I.impl_witness_table, @A.as.I.impl(%V.loc12_15.1) [symbolic = %I.impl_witness.loc12_36.2 (constants.%I.impl_witness.25d8bb.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -311,6 +316,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %V.loc12_15.1 => constants.%V.67d // CHECK:STDOUT: %A.loc12_26.1 => constants.%A.47a1de.2 // CHECK:STDOUT: %I.type.loc12_34.1 => constants.%I.type.3fe556.2 +// CHECK:STDOUT: %.loc12_36 => constants.%.dcb87d.1 // CHECK:STDOUT: %I.impl_witness.loc12_36.2 => constants.%I.impl_witness.25d8bb.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -352,6 +358,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %V.loc12_15.1 => constants.%W // CHECK:STDOUT: %A.loc12_26.1 => constants.%A.47a1de.3 // CHECK:STDOUT: %I.type.loc12_34.1 => constants.%I.type.3fe556.3 +// CHECK:STDOUT: %.loc12_36 => constants.%.dcb87d.2 // CHECK:STDOUT: %I.impl_witness.loc12_36.2 => constants.%I.impl_witness.25d8bb.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -365,6 +372,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %V.loc12_15.1 => constants.%empty_struct_type // CHECK:STDOUT: %A.loc12_26.1 => constants.%A.940 // CHECK:STDOUT: %I.type.loc12_34.1 => constants.%I.type.81d +// CHECK:STDOUT: %.loc12_36 => constants.%.91b // CHECK:STDOUT: %I.impl_witness.loc12_36.2 => constants.%I.impl_witness.e69 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 74b02dd3899a..542d52a4d47e 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -240,6 +240,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.1e8: = impl_self_witness %C, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.866: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.f0b: %pattern_type.866 = value_param_pattern [concrete] @@ -271,6 +272,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.HasF.impl.%C.ref, @HasF [concrete = constants.%.1e8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { @@ -388,6 +390,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.feb: = impl_self_witness %C, @HasG [concrete] // CHECK:STDOUT: %HasG.impl_witness.992: = impl_witness @C.as.HasG.impl.%HasG.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.866: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.f0b: %pattern_type.866 = value_param_pattern [concrete] @@ -405,6 +408,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %pattern_type.6cd: type = pattern_type %Self.as_type.7bb [symbolic] // CHECK:STDOUT: %self.param_patt.43c: %pattern_type.6cd = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.072: %pattern_type.6cd = at_binding_pattern self, %self.param_patt.43c [symbolic] +// CHECK:STDOUT: %.db9: = impl_self_witness %D, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @D.as.HasF.impl.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.709: type = pattern_type %D [concrete] // CHECK:STDOUT: %self.param_patt.68d: %pattern_type.709 = value_param_pattern [concrete] @@ -414,6 +418,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %D, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: %HasF.WithSelf.F.type.bf9: type = fn_type @HasF.WithSelf.F, @HasF.WithSelf(%HasF.facet) [concrete] // CHECK:STDOUT: %HasF.WithSelf.F.715: %HasF.WithSelf.F.type.bf9 = struct_value () [concrete] +// CHECK:STDOUT: %.a1f: = impl_self_witness %D, @HasG [concrete] // CHECK:STDOUT: %HasG.impl_witness.e55: = impl_witness @D.as.HasG.impl.%HasG.impl_witness_table [concrete] // CHECK:STDOUT: %D.as.HasG.impl.G.type: type = fn_type @D.as.HasG.impl.G [concrete] // CHECK:STDOUT: %D.as.HasG.impl.G: %D.as.HasG.impl.G.type = struct_value () [concrete] @@ -458,15 +463,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%PackageA.C [concrete = constants.%C] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.HasG.impl.%C.ref, @HasG [concrete = constants.%.feb] // CHECK:STDOUT: impl_decl @D.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [concrete = imports.%PackageA] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%PackageA.HasF [concrete = constants.%HasF.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @D.as.HasF.impl.%D.ref, @HasF [concrete = constants.%.db9] // CHECK:STDOUT: impl_decl @D.as.HasG.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc23: = impl_self_witness @D.as.HasG.impl.%D.ref, @HasG [concrete = constants.%.a1f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG { @@ -1343,6 +1351,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] // CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, @Z.WithSelf.%Z.WithSelf.H.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.8a4: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness @empty_tuple.type.as.Z.impl.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %self.param_patt.154: %pattern_type.cb1 = value_param_pattern [concrete] @@ -1373,6 +1382,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc8_7.2, @Z [concrete = constants.%.8a4] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Z { @@ -1766,6 +1776,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %self.param_patt.f96: %pattern_type.615 = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.871: %pattern_type.615 = at_binding_pattern self, %self.param_patt.f96 [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.59a [symbolic] +// CHECK:STDOUT: %.9fa: = impl_self_witness %AnyParam.591, @Y [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness @AnyParam.as.Y.impl.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.f0f: type = pattern_type %AnyParam.591 [concrete] // CHECK:STDOUT: %self.param_patt.93d: %pattern_type.f0f = value_param_pattern [concrete] @@ -1840,6 +1851,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc8_52: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @AnyParam.as.Y.impl.%AnyParam, @Y [concrete = constants.%.9fa] // CHECK:STDOUT: %L.decl: %L.type = fn_decl @L [concrete = constants.%L] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2303,6 +2315,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %self.param_patt.f96: %pattern_type.615 = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.871: %pattern_type.615 = at_binding_pattern self, %self.param_patt.f96 [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.59a [symbolic] +// CHECK:STDOUT: %.cce: = impl_self_witness %AnyParam.21c, @Y [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness @AnyParam.as.Y.impl.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.005: type = pattern_type %AnyParam.21c [concrete] // CHECK:STDOUT: %self.param_patt.e35: %pattern_type.005 = value_param_pattern [concrete] @@ -2377,6 +2390,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc8_48: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @AnyParam.as.Y.impl.%AnyParam, @Y [concrete = constants.%.cce] // CHECK:STDOUT: %L.decl: %L.type = fn_decl @L [concrete = constants.%L] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2837,6 +2851,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %tuple: %tuple.type.c53 = tuple_value (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [concrete] // CHECK:STDOUT: %tuple.type.d47: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [concrete] // CHECK:STDOUT: %C.279: type = class_type @C, @C(%tuple.type.d47) [concrete] +// CHECK:STDOUT: %.7ed: = impl_self_witness %C.279, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.881: type = pattern_type %C.279 [concrete] // CHECK:STDOUT: %self.param_patt.76e: %pattern_type.881 = value_param_pattern [concrete] @@ -2903,6 +2918,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.type.d47) [concrete = constants.%C.279] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc16: = impl_self_witness @C.as.I.impl.%C, @I [concrete = constants.%.7ed] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra1 { diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index ebea5992136c..34b305b8e6e0 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -51,6 +51,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %I.WithSelf.F.ec6: %I.WithSelf.F.type.dcc = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -171,6 +172,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @C.as.I.impl.%Self.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon b/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon index 3ed6fdd30173..5939bb5f6623 100644 --- a/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon +++ b/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon @@ -149,6 +149,7 @@ fn F() { // CHECK:STDOUT: %.c26: = impl_self_witness %.Self.693, @Y, @Y(%empty_tuple.type) [symbolic_self] // CHECK:STDOUT: %impl.elem0.85f: type = impl_witness_access %.c26, element0 [symbolic_self] // CHECK:STDOUT: %Y_where.type.69b: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.85f = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.6f6: = impl_self_witness %C, @Y, @Y(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness @C.as.Y.impl.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %Y.facet: %Y.type.1f7 = facet_value %C, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -216,6 +217,7 @@ fn F() { // CHECK:STDOUT: %rewrite.loc58_32.2 = requirement_rewrite %impl.elem0.loc58_29.2, %.loc58_35.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc58: = impl_self_witness @C.as.Y.impl.%C.ref, @Y, @Y(constants.%empty_tuple.type) [concrete = constants.%.6f6] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -495,12 +497,15 @@ fn F() { // CHECK:STDOUT: %.a5c: = impl_self_witness %.Self.b74, @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %impl.elem0.aaa: type = impl_witness_access %.a5c, element0 [symbolic] // CHECK:STDOUT: %Y_where.type.cb4: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.aaa = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %.8e6: = impl_self_witness %C.147, @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %Y.impl_witness.b49: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic] // CHECK:STDOUT: %Y.facet.253: %Y.type.6da = facet_value %C.147, (%Y.impl_witness.b49) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.9a5: = impl_self_witness %empty_tuple.type, @Z1 [concrete] // CHECK:STDOUT: %Z1.impl_witness: = impl_witness @empty_tuple.type.as.Z1.impl.%Z1.impl_witness_table [concrete] // CHECK:STDOUT: %Z1.facet: %Z1.type = facet_value %empty_tuple.type, (%Z1.impl_witness) [concrete] +// CHECK:STDOUT: %.6bb: = impl_self_witness %empty_tuple.type, @Z2 [concrete] // CHECK:STDOUT: %Z2.impl_witness: = impl_witness @empty_tuple.type.as.Z2.impl.%Z2.impl_witness_table [concrete] // CHECK:STDOUT: %Z2.facet: %Z2.type = facet_value %empty_tuple.type, (%Z2.impl_witness) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -537,6 +542,7 @@ fn F() { // CHECK:STDOUT: %.c6a: = impl_self_witness %.Self.b06, @Y, @Y(%Z1.facet) [symbolic_self] // CHECK:STDOUT: %impl.elem0.c60: type = impl_witness_access %.c6a, element0 [symbolic_self] // CHECK:STDOUT: %Y_where.type.0d1: type = facet_type <@Y, @Y(%Z1.facet) where %impl.elem0.c60 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.808: = impl_self_witness %C.5e2, @Y, @Y(%Z1.facet) [concrete] // CHECK:STDOUT: %Y.impl_witness.5cc: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete] // CHECK:STDOUT: %facet_value.3eb: %Y_where.type.8eb = facet_value %C.5e2, (%Y.impl_witness.5cc) [concrete] // CHECK:STDOUT: %Y.lookup_impl_witness.fb3: = lookup_impl_witness %.Self.frozen.70d, @Y, @Y(%Z1.facet) [symbolic_self] @@ -582,11 +588,13 @@ fn F() { // CHECK:STDOUT: %.loc17_7.2: type = converted %.loc17_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z1.ref: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @empty_tuple.type.as.Z1.impl.%.loc17_7.2, @Z1 [concrete = constants.%.9a5] // CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z2.impl [concrete] {} { // CHECK:STDOUT: %.loc18_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_7.2: type = converted %.loc18_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z2.ref: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @empty_tuple.type.as.Z2.impl.%.loc18_7.2, @Z2 [concrete = constants.%.6bb] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -651,6 +659,7 @@ fn F() { // CHECK:STDOUT: %.loc14_21.4: = impl_self_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %.loc14_21.4 (constants.%.a5c)] // CHECK:STDOUT: %impl.elem0.loc14_21.4: type = impl_witness_access %.loc14_21.4, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.aaa)] // CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc14_21.4 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.cb4)] +// CHECK:STDOUT: %.loc14_29: = impl_self_witness %C, @Y, @Y(%OuterParam) [symbolic = %.loc14_29 (constants.%.8e6)] // CHECK:STDOUT: %Y.impl_witness.loc14_29.2: = impl_witness %Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.b49)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -747,6 +756,7 @@ fn F() { // CHECK:STDOUT: %rewrite.loc14_24.2 = requirement_rewrite %impl.elem0.loc14_21.2, %.loc14_27.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @C.as.Y.impl.%C.ref, @Y, @Y(constants.%OuterParam) [symbolic = @C.as.Y.impl.%.loc14_29 (constants.%.8e6)] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -907,6 +917,7 @@ fn F() { // CHECK:STDOUT: %.loc14_21.4 => constants.%.a5c // CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.aaa // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.cb4 +// CHECK:STDOUT: %.loc14_29 => constants.%.8e6 // CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.b49 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -960,6 +971,7 @@ fn F() { // CHECK:STDOUT: %.loc14_21.4 => constants.%.c6a // CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.c60 // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.0d1 +// CHECK:STDOUT: %.loc14_29 => constants.%.808 // CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.5cc // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon index 531b4dac0020..215655a04630 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -129,6 +129,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.29c: = impl_self_witness %.Self.6d3, @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %impl.elem0.6e9: type = impl_witness_access %.29c, element0 [symbolic] // CHECK:STDOUT: %Z_where.type.28d: type = facet_type <@Z, @Z(%S) where %impl.elem0.6e9 = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %.18b: = impl_self_witness %T.67d, @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %Z.impl_witness.1cd: = impl_witness @T.as.Z.impl.3c5.%Z.impl_witness_table, @T.as.Z.impl.3c5(%T.67d, %S) [symbolic] // CHECK:STDOUT: %Z.facet.794: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.1cd) [symbolic] // CHECK:STDOUT: %Z.type.963: type = facet_type <@Z, @Z(%C)> [concrete] @@ -143,6 +144,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.286: = impl_self_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self] // CHECK:STDOUT: %impl.elem0.f68: type = impl_witness_access %.286, element0 [symbolic_self] // CHECK:STDOUT: %Z_where.type.26f: type = facet_type <@Z, @Z(%C) where %impl.elem0.f68 = %T.67d> [symbolic] +// CHECK:STDOUT: %.c1d: = impl_self_witness %T.67d, @Z, @Z(%C) [symbolic] // CHECK:STDOUT: %Z.impl_witness.cb6: = impl_witness @T.as.Z.impl.dc2.%Z.impl_witness_table, @T.as.Z.impl.dc2(%T.67d) [symbolic] // CHECK:STDOUT: %Z.facet.624: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.cb6) [symbolic] // CHECK:STDOUT: %pattern_type.d7e: type = pattern_type %Z.type.963 [concrete] @@ -156,6 +158,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.df7: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %Z_where.type.147: type = facet_type <@Z, @Z(%C) where %impl.elem0.f68 = %T.as_type> [symbolic] +// CHECK:STDOUT: %.eef: = impl_self_witness %T.as_type, @Z, @Z(%C) [symbolic] // CHECK:STDOUT: %Z.impl_witness.bed: = impl_witness @T.as.Z.impl.dc2.%Z.impl_witness_table, @T.as.Z.impl.dc2(%T.as_type) [symbolic] // CHECK:STDOUT: %.ac3: require_specific_def_type = require_specific_def @T.as.Z.impl.dc2(%T.as_type) [symbolic] // CHECK:STDOUT: %a.patt: %pattern_type.d37 = value_binding_pattern a [symbolic] @@ -222,6 +225,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %S.loc9_24.1: type = symbolic_binding S, 1 [symbolic = %S.loc9_24.2 (constants.%S)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @T.as.Z.impl.3c5.%T.ref, @Z, @Z(constants.%S) [symbolic = @T.as.Z.impl.3c5.%.loc9_56 (constants.%.18b)] // CHECK:STDOUT: impl_decl @T.as.Z.impl.dc2 [concrete] { // CHECK:STDOUT: %T.patt.loc11_21.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_21.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { @@ -251,6 +255,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11_21.1: type = symbolic_binding T, 0 [symbolic = %T.loc11_21.2 (constants.%T.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @T.as.Z.impl.dc2.%T.ref.loc11_29, @Z, @Z(constants.%C) [symbolic = @T.as.Z.impl.dc2.%.loc11_52 (constants.%.c1d)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc13_15.1: %pattern_type.d7e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_15.2 (constants.%T.patt.4cc)] // CHECK:STDOUT: %t.param_patt.loc13_24.1: @F.%pattern_type (%pattern_type.d37) = value_param_pattern [symbolic = %t.param_patt.loc13_24.2 (constants.%t.param_patt)] @@ -316,6 +321,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc9_48.4: = impl_self_witness %.Self, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_48.4 (constants.%.29c)] // CHECK:STDOUT: %impl.elem0.loc9_48.4: type = impl_witness_access %.loc9_48.4, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.6e9)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_24.2) where %impl.elem0.loc9_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.28d)] +// CHECK:STDOUT: %.loc9_56: = impl_self_witness %T.loc9_15.2, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_56 (constants.%.18b)] // CHECK:STDOUT: %Z.impl_witness.loc9_56.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.3c5(%T.loc9_15.2, %S.loc9_24.2) [symbolic = %Z.impl_witness.loc9_56.2 (constants.%Z.impl_witness.1cd)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -335,6 +341,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc11_21.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_21.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc11_21.2: type = symbolic_binding T, 0 [symbolic = %T.loc11_21.2 (constants.%T.67d)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.f68 = %T.loc11_21.2> [symbolic = %Z_where.type (constants.%Z_where.type.26f)] +// CHECK:STDOUT: %.loc11_52: = impl_self_witness %T.loc11_21.2, @Z, @Z(constants.%C) [symbolic = %.loc11_52 (constants.%.c1d)] // CHECK:STDOUT: %Z.impl_witness.loc11_52.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.dc2(%T.loc11_21.2) [symbolic = %Z.impl_witness.loc11_52.2 (constants.%Z.impl_witness.cb6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -437,6 +444,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc9_48.4 => constants.%.29c // CHECK:STDOUT: %impl.elem0.loc9_48.4 => constants.%impl.elem0.6e9 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.28d +// CHECK:STDOUT: %.loc9_56 => constants.%.18b // CHECK:STDOUT: %Z.impl_witness.loc9_56.2 => constants.%Z.impl_witness.1cd // CHECK:STDOUT: } // CHECK:STDOUT: @@ -474,6 +482,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc11_21.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc11_21.2 => constants.%T.67d // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.26f +// CHECK:STDOUT: %.loc11_52 => constants.%.c1d // CHECK:STDOUT: %Z.impl_witness.loc11_52.2 => constants.%Z.impl_witness.cb6 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -504,6 +513,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc11_21.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc11_21.2 => constants.%T.as_type // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.147 +// CHECK:STDOUT: %.loc11_52 => constants.%.eef // CHECK:STDOUT: %Z.impl_witness.loc11_52.2 => constants.%Z.impl_witness.bed // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -545,6 +555,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.29c: = impl_self_witness %.Self.6d3, @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %impl.elem0.6e9: type = impl_witness_access %.29c, element0 [symbolic] // CHECK:STDOUT: %Z_where.type.28d: type = facet_type <@Z, @Z(%S) where %impl.elem0.6e9 = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %.18b: = impl_self_witness %T.67d, @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %Z.impl_witness.1cd: = impl_witness @T.as.Z.impl.3c5.%Z.impl_witness_table, @T.as.Z.impl.3c5(%T.67d, %S) [symbolic] // CHECK:STDOUT: %Z.facet.794: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.1cd) [symbolic] // CHECK:STDOUT: %Z.type.963: type = facet_type <@Z, @Z(%C)> [concrete] @@ -559,6 +570,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.286: = impl_self_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self] // CHECK:STDOUT: %impl.elem0.f68: type = impl_witness_access %.286, element0 [symbolic_self] // CHECK:STDOUT: %Z_where.type.26f: type = facet_type <@Z, @Z(%C) where %impl.elem0.f68 = %T.67d> [symbolic] +// CHECK:STDOUT: %.c1d: = impl_self_witness %T.67d, @Z, @Z(%C) [symbolic] // CHECK:STDOUT: %Z.impl_witness.cb6: = impl_witness @T.as.Z.impl.dc2.%Z.impl_witness_table, @T.as.Z.impl.dc2(%T.67d) [symbolic] // CHECK:STDOUT: %Z.facet.624: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.cb6) [symbolic] // CHECK:STDOUT: %pattern_type.d7e: type = pattern_type %Z.type.963 [concrete] @@ -659,6 +671,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %S.loc10_24.1: type = symbolic_binding S, 1 [symbolic = %S.loc10_24.2 (constants.%S)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @T.as.Z.impl.3c5.%T.ref, @Z, @Z(constants.%S) [symbolic = @T.as.Z.impl.3c5.%.loc10_56 (constants.%.18b)] // CHECK:STDOUT: impl_decl @T.as.Z.impl.dc2 [concrete] { // CHECK:STDOUT: %T.patt.loc12_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { @@ -688,6 +701,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @T.as.Z.impl.dc2.%T.ref.loc12_23, @Z, @Z(constants.%C) [symbolic = @T.as.Z.impl.dc2.%.loc12_46 (constants.%.c1d)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc14_15.1: %pattern_type.d7e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_15.2 (constants.%T.patt.4cc)] // CHECK:STDOUT: %t.param_patt.loc14_24.1: @F.%pattern_type.loc14 (%pattern_type.d37) = value_param_pattern [symbolic = %t.param_patt.loc14_24.2 (constants.%t.param_patt)] @@ -764,6 +778,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc10_48.4: = impl_self_witness %.Self, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_48.4 (constants.%.29c)] // CHECK:STDOUT: %impl.elem0.loc10_48.4: type = impl_witness_access %.loc10_48.4, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.6e9)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_24.2) where %impl.elem0.loc10_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.28d)] +// CHECK:STDOUT: %.loc10_56: = impl_self_witness %T.loc10_15.2, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_56 (constants.%.18b)] // CHECK:STDOUT: %Z.impl_witness.loc10_56.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.3c5(%T.loc10_15.2, %S.loc10_24.2) [symbolic = %Z.impl_witness.loc10_56.2 (constants.%Z.impl_witness.1cd)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -783,6 +798,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc12_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc12_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.67d)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.f68 = %T.loc12_15.2> [symbolic = %Z_where.type (constants.%Z_where.type.26f)] +// CHECK:STDOUT: %.loc12_46: = impl_self_witness %T.loc12_15.2, @Z, @Z(constants.%C) [symbolic = %.loc12_46 (constants.%.c1d)] // CHECK:STDOUT: %Z.impl_witness.loc12_46.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.dc2(%T.loc12_15.2) [symbolic = %Z.impl_witness.loc12_46.2 (constants.%Z.impl_witness.cb6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -898,6 +914,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc10_48.4 => constants.%.29c // CHECK:STDOUT: %impl.elem0.loc10_48.4 => constants.%impl.elem0.6e9 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.28d +// CHECK:STDOUT: %.loc10_56 => constants.%.18b // CHECK:STDOUT: %Z.impl_witness.loc10_56.2 => constants.%Z.impl_witness.1cd // CHECK:STDOUT: } // CHECK:STDOUT: @@ -935,6 +952,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc12_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc12_15.2 => constants.%T.67d // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.26f +// CHECK:STDOUT: %.loc12_46 => constants.%.c1d // CHECK:STDOUT: %Z.impl_witness.loc12_46.2 => constants.%Z.impl_witness.cb6 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -982,6 +1000,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.51f: = impl_self_witness %.Self, @Ptr [symbolic_self] // CHECK:STDOUT: %impl.elem0.406: type = impl_witness_access %.51f, element0 [symbolic_self] // CHECK:STDOUT: %Ptr_where.type.774fa9.1: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.1> [symbolic] +// CHECK:STDOUT: %.f8fe26.1: = impl_self_witness %U.67d, @Ptr [symbolic] // CHECK:STDOUT: %Ptr.impl_witness.0fcac6.1: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] // CHECK:STDOUT: %Ptr.facet.5c0956.1: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.0fcac6.1) [symbolic] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] @@ -991,6 +1010,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.param_patt: %pattern_type.51d = var_param_pattern %t.patt [symbolic] // CHECK:STDOUT: %ptr.e8f8f9.2: type = ptr_type %T.67d [symbolic] // CHECK:STDOUT: %Ptr_where.type.774fa9.2: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.2> [symbolic] +// CHECK:STDOUT: %.f8fe26.2: = impl_self_witness %T.67d, @Ptr [symbolic] // CHECK:STDOUT: %Ptr.impl_witness.0fcac6.2: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.67d) [symbolic] // CHECK:STDOUT: %.ed1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.67d) [symbolic] // CHECK:STDOUT: %Ptr.facet.5c0956.2: %Ptr.type = facet_value %T.67d, (%Ptr.impl_witness.0fcac6.2) [symbolic] @@ -1056,6 +1076,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_21.1: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @U.as.Ptr.impl.%U.ref.loc7_29, @Ptr [symbolic = @U.as.Ptr.impl.%.loc7_55 (constants.%.f8fe26.1)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %t.patt.loc9_20.1: @F.%pattern_type.loc9_20 (%pattern_type.51d) = ref_binding_pattern t [symbolic = %t.patt.loc9_20.2 (constants.%t.patt)] @@ -1105,6 +1126,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774fa9.1)] +// CHECK:STDOUT: %.loc7_55: = impl_self_witness %U.loc7_21.2, @Ptr [symbolic = %.loc7_55 (constants.%.f8fe26.1)] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fcac6.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1176,6 +1198,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d // CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774fa9.1 +// CHECK:STDOUT: %.loc7_55 => constants.%.f8fe26.1 // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fcac6.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1188,6 +1211,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.67d // CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.2 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774fa9.2 +// CHECK:STDOUT: %.loc7_55 => constants.%.f8fe26.2 // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fcac6.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1234,6 +1258,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.51f: = impl_self_witness %.Self, @Ptr [symbolic_self] // CHECK:STDOUT: %impl.elem0.406: type = impl_witness_access %.51f, element0 [symbolic_self] // CHECK:STDOUT: %Ptr_where.type.774: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.1> [symbolic] +// CHECK:STDOUT: %.f8f: = impl_self_witness %U.67d, @Ptr [symbolic] // CHECK:STDOUT: %Ptr.impl_witness.0fc: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] // CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.0fc) [symbolic] // CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %Ptr.type [concrete] @@ -1245,6 +1270,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.param_patt: %pattern_type.756 = var_param_pattern %t.patt [symbolic] // CHECK:STDOUT: %ptr.ac4: type = ptr_type %T.as_type.468 [symbolic] // CHECK:STDOUT: %Ptr_where.type.c27: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.ac4> [symbolic] +// CHECK:STDOUT: %.47c: = impl_self_witness %T.as_type.468, @Ptr [symbolic] // CHECK:STDOUT: %Ptr.impl_witness.30f: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic] // CHECK:STDOUT: %.166: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic] // CHECK:STDOUT: %.e16: Core.Form = init_form %ptr.ac4 [symbolic] @@ -1309,6 +1335,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_21.1: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @U.as.Ptr.impl.%U.ref.loc7_29, @Ptr [symbolic = @U.as.Ptr.impl.%.loc7_55 (constants.%.f8f)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.f5d = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.a2e)] // CHECK:STDOUT: %t.patt.loc9_19.1: @F.%pattern_type.loc9_19 (%pattern_type.756) = ref_binding_pattern t [symbolic = %t.patt.loc9_19.2 (constants.%t.patt)] @@ -1361,6 +1388,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] +// CHECK:STDOUT: %.loc7_55: = impl_self_witness %U.loc7_21.2, @Ptr [symbolic = %.loc7_55 (constants.%.f8f)] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1431,6 +1459,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d // CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774 +// CHECK:STDOUT: %.loc7_55 => constants.%.f8f // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fc // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1447,6 +1476,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468 // CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.ac4 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.c27 +// CHECK:STDOUT: %.loc7_55 => constants.%.47c // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.30f // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1488,6 +1518,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.51f: = impl_self_witness %.Self, @Ptr [symbolic_self] // CHECK:STDOUT: %impl.elem0.406: type = impl_witness_access %.51f, element0 [symbolic_self] // CHECK:STDOUT: %Ptr_where.type.774: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.1> [symbolic] +// CHECK:STDOUT: %.f8f: = impl_self_witness %U.67d, @Ptr [symbolic] // CHECK:STDOUT: %Ptr.impl_witness.0fc: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] // CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.0fc) [symbolic] // CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %Ptr.type [concrete] @@ -1499,6 +1530,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.param_patt: %pattern_type.756 = var_param_pattern %t.patt [symbolic] // CHECK:STDOUT: %ptr.ac4: type = ptr_type %T.as_type.468 [symbolic] // CHECK:STDOUT: %Ptr_where.type.c27: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.ac4> [symbolic] +// CHECK:STDOUT: %.47c: = impl_self_witness %T.as_type.468, @Ptr [symbolic] // CHECK:STDOUT: %Ptr.impl_witness.30f: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic] // CHECK:STDOUT: %.166: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic] // CHECK:STDOUT: %.e16: Core.Form = init_form %ptr.ac4 [symbolic] @@ -1563,6 +1595,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_21.1: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @U.as.Ptr.impl.%U.ref.loc7_29, @Ptr [symbolic = @U.as.Ptr.impl.%.loc7_55 (constants.%.f8f)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.f5d = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.a2e)] // CHECK:STDOUT: %t.patt.loc9_19.1: @F.%pattern_type.loc9_19 (%pattern_type.756) = ref_binding_pattern t [symbolic = %t.patt.loc9_19.2 (constants.%t.patt)] @@ -1614,6 +1647,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] +// CHECK:STDOUT: %.loc7_55: = impl_self_witness %U.loc7_21.2, @Ptr [symbolic = %.loc7_55 (constants.%.f8f)] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1684,6 +1718,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d // CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774 +// CHECK:STDOUT: %.loc7_55 => constants.%.f8f // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fc // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1696,6 +1731,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468 // CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.ac4 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.c27 +// CHECK:STDOUT: %.loc7_55 => constants.%.47c // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.30f // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/lookup/specific_args.carbon b/toolchain/check/testdata/impl/lookup/specific_args.carbon index 5589c8fb2720..67cf6decd10a 100644 --- a/toolchain/check/testdata/impl/lookup/specific_args.carbon +++ b/toolchain/check/testdata/impl/lookup/specific_args.carbon @@ -226,6 +226,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %self.param_patt.e56: %pattern_type.efd = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.99d: %pattern_type.efd = at_binding_pattern self, %self.param_patt.e56 [symbolic] // CHECK:STDOUT: %I.type.ec4: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete] +// CHECK:STDOUT: %.84a: = impl_self_witness %X, @I, @I(%InInterfaceArgs) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @X.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.8d9: %I.type.ec4 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.WithSelf.F.type.d6f: type = fn_type @I.WithSelf.F, @I.WithSelf(%InInterfaceArgs, %Self.a67) [symbolic] @@ -272,6 +273,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, file.%InInterfaceArgs.decl [concrete = constants.%InInterfaceArgs] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [concrete = constants.%I.type.ec4] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @X.as.I.impl.%X.ref, @I, @I(constants.%InInterfaceArgs) [concrete = constants.%.84a] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.b3bc94.3: type) [from "types.carbon"] { @@ -623,6 +625,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %self.patt.99d: %pattern_type.efd = at_binding_pattern self, %self.param_patt.e56 [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %I.type.d91: type = facet_type <@I, @I(%X)> [concrete] +// CHECK:STDOUT: %.823: = impl_self_witness %C.165, @I, @I(%X) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.c9d: %I.type.d91 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.WithSelf.F.type.7f9: type = fn_type @I.WithSelf.F, @I.WithSelf(%X, %Self.a67) [symbolic] @@ -674,6 +677,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [concrete = constants.%I.type.d91] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C, @I, @I(constants.%X) [concrete = constants.%.823] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.b3bc94.4: type) [from "types.carbon"] { diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index 70beb5cdcbb9..871a15993eeb 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -140,6 +140,7 @@ fn Call() { // CHECK:STDOUT: %pattern_type.b3a: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %self.param_patt.58e: %pattern_type.b3a = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.300: %pattern_type.b3a = at_binding_pattern self, %self.param_patt.58e [symbolic] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -176,6 +177,7 @@ fn Call() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.I.impl.%C.ref, @I [concrete = constants.%.b7f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "i.carbon"] { diff --git a/toolchain/check/testdata/impl/multiple_extend.carbon b/toolchain/check/testdata/impl/multiple_extend.carbon index fc17c01d8826..cc2419baae8c 100644 --- a/toolchain/check/testdata/impl/multiple_extend.carbon +++ b/toolchain/check/testdata/impl/multiple_extend.carbon @@ -181,12 +181,14 @@ fn P(o: O) { // CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type @HasG [concrete] // CHECK:STDOUT: %assoc0.9a7: %HasG.assoc_type = assoc_entity element0, @HasG.WithSelf.%HasG.WithSelf.G.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.ba1: = impl_self_witness %C, @HasF [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.as.HasF.impl.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: %HasF.WithSelf.F.type.58e: type = fn_type @HasF.WithSelf.F, @HasF.WithSelf(%HasF.facet) [concrete] // CHECK:STDOUT: %HasF.WithSelf.F.1cb: %HasF.WithSelf.F.type.58e = struct_value () [concrete] +// CHECK:STDOUT: %.e40: = impl_self_witness %C, @HasG [concrete] // CHECK:STDOUT: %HasG.impl_witness: = impl_witness @C.as.HasG.impl.%HasG.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.HasG.impl.G.type: type = fn_type @C.as.HasG.impl.G [concrete] // CHECK:STDOUT: %C.as.HasG.impl.G: %C.as.HasG.impl.G.type = struct_value () [concrete] @@ -292,10 +294,12 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.HasF.impl.%Self.ref, @HasF [concrete = constants.%.ba1] // CHECK:STDOUT: impl_decl @C.as.HasG.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc16: = impl_self_witness @C.as.HasG.impl.%Self.ref, @HasG [concrete = constants.%.e40] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -414,12 +418,14 @@ fn P(o: O) { // CHECK:STDOUT: %HasA2.assoc_type: type = assoc_entity_type @HasA2 [concrete] // CHECK:STDOUT: %assoc0.903: %HasA2.assoc_type = assoc_entity element0, @HasA2.WithSelf.%HasA2.WithSelf.A.decl [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] +// CHECK:STDOUT: %.869: = impl_self_witness %D, @HasA1 [concrete] // CHECK:STDOUT: %HasA1.impl_witness: = impl_witness @D.as.HasA1.impl.%HasA1.impl_witness_table [concrete] // CHECK:STDOUT: %D.as.HasA1.impl.A.type: type = fn_type @D.as.HasA1.impl.A [concrete] // CHECK:STDOUT: %D.as.HasA1.impl.A: %D.as.HasA1.impl.A.type = struct_value () [concrete] // CHECK:STDOUT: %HasA1.facet: %HasA1.type = facet_value %D, (%HasA1.impl_witness) [concrete] // CHECK:STDOUT: %HasA1.WithSelf.A.type.aa7: type = fn_type @HasA1.WithSelf.A, @HasA1.WithSelf(%HasA1.facet) [concrete] // CHECK:STDOUT: %HasA1.WithSelf.A.f21: %HasA1.WithSelf.A.type.aa7 = struct_value () [concrete] +// CHECK:STDOUT: %.b95: = impl_self_witness %D, @HasA2 [concrete] // CHECK:STDOUT: %HasA2.impl_witness: = impl_witness @D.as.HasA2.impl.%HasA2.impl_witness_table [concrete] // CHECK:STDOUT: %D.as.HasA2.impl.A.type: type = fn_type @D.as.HasA2.impl.A [concrete] // CHECK:STDOUT: %D.as.HasA2.impl.A: %D.as.HasA2.impl.A.type = struct_value () [concrete] @@ -521,10 +527,12 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D] // CHECK:STDOUT: %HasA1.ref: type = name_ref HasA1, file.%HasA1.decl [concrete = constants.%HasA1.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @D.as.HasA1.impl.%Self.ref, @HasA1 [concrete = constants.%.869] // CHECK:STDOUT: impl_decl @D.as.HasA2.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D] // CHECK:STDOUT: %HasA2.ref: type = name_ref HasA2, file.%HasA2.decl [concrete = constants.%HasA2.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc16: = impl_self_witness @D.as.HasA2.impl.%Self.ref, @HasA2 [concrete = constants.%.b95] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -631,6 +639,7 @@ fn P(o: O) { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %E: type = class_type @E [concrete] // CHECK:STDOUT: %E.elem: type = unbound_element_type %E, %B [concrete] +// CHECK:STDOUT: %.aa2: = impl_self_witness %E, @HasI [concrete] // CHECK:STDOUT: %HasI.impl_witness: = impl_witness @E.as.HasI.impl.%HasI.impl_witness_table [concrete] // CHECK:STDOUT: %E.as.HasI.impl.I.type: type = fn_type @E.as.HasI.impl.I [concrete] // CHECK:STDOUT: %E.as.HasI.impl.I: %E.as.HasI.impl.I.type = struct_value () [concrete] @@ -718,6 +727,7 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %HasI.ref: type = name_ref HasI, file.%HasI.decl [concrete = constants.%HasI.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @E.as.HasI.impl.%Self.ref, @HasI [concrete = constants.%.aa2] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.e05 [concrete = constants.%complete_type.c77] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -806,6 +816,7 @@ fn P(o: O) { // CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, @HasK.WithSelf.%HasK.WithSelf.K.decl [concrete] // CHECK:STDOUT: %L: type = class_type @L [concrete] // CHECK:STDOUT: %L.elem: type = unbound_element_type %L, %Base [concrete] +// CHECK:STDOUT: %.099: = impl_self_witness %L, @HasK [concrete] // CHECK:STDOUT: %HasK.impl_witness: = impl_witness @L.as.HasK.impl.%HasK.impl_witness_table [concrete] // CHECK:STDOUT: %L.as.HasK.impl.K.type: type = fn_type @L.as.HasK.impl.K [concrete] // CHECK:STDOUT: %L.as.HasK.impl.K: %L.as.HasK.impl.K.type = struct_value () [concrete] @@ -890,6 +901,7 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%L [concrete = constants.%L] // CHECK:STDOUT: %HasK.ref: type = name_ref HasK, file.%HasK.decl [concrete = constants.%HasK.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @L.as.HasK.impl.%Self.ref, @HasK [concrete = constants.%.099] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.cae [concrete = constants.%complete_type.c02] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -974,12 +986,14 @@ fn P(o: O) { // CHECK:STDOUT: %assoc0.aea: %HasN2.assoc_type = assoc_entity element0, @HasN2.WithSelf.%HasN2.WithSelf.N.decl [concrete] // CHECK:STDOUT: %O: type = class_type @O [concrete] // CHECK:STDOUT: %O.elem: type = unbound_element_type %O, %NBase [concrete] +// CHECK:STDOUT: %.665: = impl_self_witness %O, @HasN1 [concrete] // CHECK:STDOUT: %HasN1.impl_witness: = impl_witness @O.as.HasN1.impl.%HasN1.impl_witness_table [concrete] // CHECK:STDOUT: %O.as.HasN1.impl.N.type: type = fn_type @O.as.HasN1.impl.N [concrete] // CHECK:STDOUT: %O.as.HasN1.impl.N: %O.as.HasN1.impl.N.type = struct_value () [concrete] // CHECK:STDOUT: %HasN1.facet: %HasN1.type = facet_value %O, (%HasN1.impl_witness) [concrete] // CHECK:STDOUT: %HasN1.WithSelf.N.type.446: type = fn_type @HasN1.WithSelf.N, @HasN1.WithSelf(%HasN1.facet) [concrete] // CHECK:STDOUT: %HasN1.WithSelf.N.d2e: %HasN1.WithSelf.N.type.446 = struct_value () [concrete] +// CHECK:STDOUT: %.81b: = impl_self_witness %O, @HasN2 [concrete] // CHECK:STDOUT: %HasN2.impl_witness: = impl_witness @O.as.HasN2.impl.%HasN2.impl_witness_table [concrete] // CHECK:STDOUT: %O.as.HasN2.impl.N.type: type = fn_type @O.as.HasN2.impl.N [concrete] // CHECK:STDOUT: %O.as.HasN2.impl.N: %O.as.HasN2.impl.N.type = struct_value () [concrete] @@ -1093,10 +1107,12 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [concrete = constants.%O] // CHECK:STDOUT: %HasN1.ref: type = name_ref HasN1, file.%HasN1.decl [concrete = constants.%HasN1.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @O.as.HasN1.impl.%Self.ref, @HasN1 [concrete = constants.%.665] // CHECK:STDOUT: impl_decl @O.as.HasN2.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [concrete = constants.%O] // CHECK:STDOUT: %HasN2.ref: type = name_ref HasN2, file.%HasN2.decl [concrete = constants.%HasN2.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc21: = impl_self_witness @O.as.HasN2.impl.%Self.ref, @HasN2 [concrete = constants.%.81b] // CHECK:STDOUT: %O.N.decl: %O.N.type = fn_decl @O.N [concrete = constants.%O.N] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.base.40f [concrete = constants.%complete_type.3b3] // CHECK:STDOUT: complete_type_witness = %complete_type diff --git a/toolchain/check/testdata/impl/name_lookup_in_impl_definition.carbon b/toolchain/check/testdata/impl/name_lookup_in_impl_definition.carbon index b40b4fa14be9..6a18b121023f 100644 --- a/toolchain/check/testdata/impl/name_lookup_in_impl_definition.carbon +++ b/toolchain/check/testdata/impl/name_lookup_in_impl_definition.carbon @@ -37,6 +37,7 @@ impl forall [T: type] T as I where .U = C { // 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: %T: type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.917: = impl_self_witness %T, @I [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness @T.as.I.impl.%I.impl_witness_table, @T.as.I.impl(%T) [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T, (%I.impl_witness) [symbolic] // CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete] @@ -104,6 +105,7 @@ impl forall [T: type] T as I where .U = C { // CHECK:STDOUT: specific @T.as.I.impl(constants.%T) { // CHECK:STDOUT: %T.patt.loc10_15.2 => constants.%T.patt // CHECK:STDOUT: %T.loc10_15.1 => constants.%T +// CHECK:STDOUT: %.loc10_43 => constants.%.917 // CHECK:STDOUT: %I.impl_witness.loc10_43.2 => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon b/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon index f10e89cd8d64..aba22d7a9a61 100644 --- a/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon +++ b/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon @@ -111,6 +111,7 @@ impl () as D; // CHECK:STDOUT: %Self: %A.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.b5f: = impl_self_witness %empty_tuple.type, @A [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -123,6 +124,7 @@ impl () as D; // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_tuple.type.as.A.impl.%.loc10_7.2, @A [concrete = constants.%.b5f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A { @@ -146,6 +148,7 @@ impl () as D; // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self: %A.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %.b5f: = impl_self_witness %empty_tuple.type, @A [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -167,11 +170,13 @@ impl () as D; // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_tuple.type.as.A.impl.2e7a85.1.%.loc8_7.2, @A [concrete = constants.%.b5f] // CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl.2e7a85.2 [concrete] {} { // CHECK:STDOUT: %.loc14_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_7.2: type = converted %.loc14_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @empty_tuple.type.as.A.impl.2e7a85.2.%.loc14_7.2, @A [concrete = constants.%.b5f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A [from "fail_decl_in_api_definition_in_impl.carbon"] { @@ -221,6 +226,7 @@ impl () as D; // CHECK:STDOUT: %Self: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.9cc: = impl_self_witness %empty_tuple.type, @B [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -233,6 +239,7 @@ impl () as D; // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_tuple.type.as.B.impl.%.loc10_7.2, @B [concrete = constants.%.9cc] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @B { @@ -292,6 +299,7 @@ impl () as D; // CHECK:STDOUT: %Self: %C.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.d74: = impl_self_witness %empty_tuple.type, @C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -304,6 +312,7 @@ impl () as D; // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_tuple.type.as.C.impl.%.loc10_7.2, @C [concrete = constants.%.d74] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @C { @@ -327,6 +336,7 @@ impl () as D; // CHECK:STDOUT: %C.type: type = facet_type <@C> [concrete] // CHECK:STDOUT: %Self: %C.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %.d74: = impl_self_witness %empty_tuple.type, @C [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -348,6 +358,7 @@ impl () as D; // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_tuple.type.as.C.impl.006.%.loc8_7.2, @C [concrete = constants.%.d74] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @C [from "fail_decl_in_api_decl_in_impl.carbon"] { @@ -377,6 +388,7 @@ impl () as D; // CHECK:STDOUT: %Self: %D.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.d28: = impl_self_witness %empty_tuple.type, @D [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -391,6 +403,7 @@ impl () as D; // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_tuple.type.as.D.impl.%.loc10_7.2, @D [concrete = constants.%.d28] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @D { diff --git a/toolchain/check/testdata/impl/self_in_class.carbon b/toolchain/check/testdata/impl/self_in_class.carbon index 12acf33a1e8d..30139a236236 100644 --- a/toolchain/check/testdata/impl/self_in_class.carbon +++ b/toolchain/check/testdata/impl/self_in_class.carbon @@ -44,6 +44,7 @@ class A { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %.259: = impl_self_witness %C, @DefaultConstructible [concrete] // CHECK:STDOUT: %DefaultConstructible.impl_witness: = impl_witness @C.as.DefaultConstructible.impl.%DefaultConstructible.impl_witness_table [concrete] // CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] @@ -127,6 +128,7 @@ class A { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %DefaultConstructible.ref: type = name_ref DefaultConstructible, file.%DefaultConstructible.decl [concrete = constants.%DefaultConstructible.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @C.as.DefaultConstructible.impl.%C.ref, @DefaultConstructible [concrete = constants.%.259] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/self_in_signature.carbon b/toolchain/check/testdata/impl/self_in_signature.carbon index 86663c241e98..72d072ae8cd1 100644 --- a/toolchain/check/testdata/impl/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/self_in_signature.carbon @@ -64,6 +64,7 @@ impl D as SelfNested { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] +// CHECK:STDOUT: %.fa4: = impl_self_witness %C, @UseSelf [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.046: = impl_witness @C.as.UseSelf.impl.%UseSelf.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -80,6 +81,7 @@ impl D as SelfNested { // CHECK:STDOUT: %UseSelf.WithSelf.F.e1d: %UseSelf.WithSelf.F.type.103 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] +// CHECK:STDOUT: %.98f: = impl_self_witness %D, @UseSelf [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.047: = impl_witness @D.as.UseSelf.impl.%UseSelf.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.d8d: type = pattern_type %D [concrete] // CHECK:STDOUT: %self.param_patt.f16: %pattern_type.d8d = value_param_pattern [concrete] @@ -111,6 +113,7 @@ impl D as SelfNested { // CHECK:STDOUT: %SelfNested.WithSelf.F.eec: %SelfNested.WithSelf.F.type.702 = struct_value () [symbolic] // CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type @SelfNested [concrete] // CHECK:STDOUT: %assoc0.219: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.WithSelf.%SelfNested.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.8a3: = impl_self_witness %C, @SelfNested [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.d40: = impl_witness @C.as.SelfNested.impl.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.6b6: type = ptr_type %C [concrete] // CHECK:STDOUT: %struct_type.x.y.ee7: type = struct_type {.x: %C, .y: %empty_tuple.type} [concrete] @@ -124,6 +127,7 @@ impl D as SelfNested { // CHECK:STDOUT: %SelfNested.facet.749: %SelfNested.type = facet_value %C, (%SelfNested.impl_witness.d40) [concrete] // CHECK:STDOUT: %SelfNested.WithSelf.F.type.369: type = fn_type @SelfNested.WithSelf.F, @SelfNested.WithSelf(%SelfNested.facet.749) [concrete] // CHECK:STDOUT: %SelfNested.WithSelf.F.0c3: %SelfNested.WithSelf.F.type.369 = struct_value () [concrete] +// CHECK:STDOUT: %.aec: = impl_self_witness %D, @SelfNested [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.ad8: = impl_witness @D.as.SelfNested.impl.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.d57: type = ptr_type %D [concrete] // CHECK:STDOUT: %struct_type.x.y.e52: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete] @@ -153,19 +157,23 @@ impl D as SelfNested { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [concrete = constants.%UseSelf.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc23: = impl_self_witness @C.as.UseSelf.impl.%C.ref, @UseSelf [concrete = constants.%.fa4] // CHECK:STDOUT: impl_decl @D.as.UseSelf.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [concrete = constants.%UseSelf.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc27: = impl_self_witness @D.as.UseSelf.impl.%D.ref, @UseSelf [concrete = constants.%.98f] // CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [concrete = constants.%SelfNested.type] {} {} // CHECK:STDOUT: impl_decl @C.as.SelfNested.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc35: = impl_self_witness @C.as.SelfNested.impl.%C.ref, @SelfNested [concrete = constants.%.8a3] // CHECK:STDOUT: impl_decl @D.as.SelfNested.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc39: = impl_self_witness @D.as.SelfNested.impl.%D.ref, @SelfNested [concrete = constants.%.aec] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @UseSelf { diff --git a/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon b/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon index 2044f73fb878..c83b3a9a8b67 100644 --- a/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon +++ b/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon @@ -35,6 +35,7 @@ class X { // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] // CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.WithSelf.%A.WithSelf.B.decl [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] +// CHECK:STDOUT: %.57f: = impl_self_witness %X, @A [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @X.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %X.as.A.impl.B.type: type = fn_type @X.as.A.impl.B [concrete] // CHECK:STDOUT: %X.as.A.impl.B: %X.as.A.impl.B.type = struct_value () [concrete] @@ -90,6 +91,7 @@ class X { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [concrete = constants.%X] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc20: = impl_self_witness @X.as.A.impl.%Self.ref, @A [concrete = constants.%.57f] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/use_assoc_entity.carbon b/toolchain/check/testdata/impl/use_assoc_entity.carbon index 06ac9114747c..08288377520b 100644 --- a/toolchain/check/testdata/impl/use_assoc_entity.carbon +++ b/toolchain/check/testdata/impl/use_assoc_entity.carbon @@ -522,7 +522,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %u.param_patt.151: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %u.patt.49f: %pattern_type.6b6 = at_binding_pattern u, %u.param_patt.151 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.type: type = fn_type @empty_tuple.type.as.J.impl.F [concrete] @@ -638,7 +638,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc12_32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc12_32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc12: Core.Form = init_form %i32.loc12_32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc12: Core.Form = init_form %i32.loc12_32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.J.impl.%.loc10_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = wrapper_binding self, %self.param @@ -791,7 +791,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.loc6_15 => constants.%pattern_type.6b6 // CHECK:STDOUT: %u.param_patt.loc6_15.2 => constants.%u.param_patt.151 // CHECK:STDOUT: %u.patt.loc6_15.2 => constants.%u.patt.49f -// CHECK:STDOUT: %.loc6_23.1 => constants.%.795 +// CHECK:STDOUT: %.loc6_23.1 => constants.%.795f // CHECK:STDOUT: %return.param_patt.loc6_23.2 => constants.%return.param_patt.a9a // CHECK:STDOUT: %return.patt.loc6_20.2 => constants.%return.patt.e1b // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/as_type_of_type.carbon b/toolchain/check/testdata/interface/as_type_of_type.carbon index c88808b1dc5e..0addde4b6236 100644 --- a/toolchain/check/testdata/interface/as_type_of_type.carbon +++ b/toolchain/check/testdata/interface/as_type_of_type.carbon @@ -31,6 +31,7 @@ fn F(generic T: Empty) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.6ee: = impl_self_witness %C, @Empty [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness @C.as.Empty.impl.%Empty.impl_witness_table [concrete] // CHECK:STDOUT: %Empty.facet: %Empty.type = facet_value %C, (%Empty.impl_witness) [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -89,6 +90,7 @@ fn F(generic T: Empty) { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @C.as.Empty.impl.%C.ref, @Empty [concrete = constants.%.6ee] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt.loc21_15.1: %pattern_type.894 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_15.2 (constants.%T.patt.1d7)] // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/interface/compound_member_access.carbon b/toolchain/check/testdata/interface/compound_member_access.carbon index 238d736f1133..4f0e21c83a9b 100644 --- a/toolchain/check/testdata/interface/compound_member_access.carbon +++ b/toolchain/check/testdata/interface/compound_member_access.carbon @@ -1401,6 +1401,7 @@ fn Works() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.4e8: = impl_self_witness %C, @A [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @C.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.A.impl.G.type: type = fn_type @C.as.A.impl.G [concrete] // CHECK:STDOUT: %C.as.A.impl.G: %C.as.A.impl.G.type = struct_value () [concrete] @@ -1452,6 +1453,7 @@ fn Works() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.A.impl.%C.ref, @A [concrete = constants.%.4e8] // CHECK:STDOUT: %Fails.decl: %Fails.type = fn_decl @Fails [concrete = constants.%Fails] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1591,6 +1593,7 @@ fn Works() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.4e8: = impl_self_witness %C, @A [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @C.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.A.impl.G.type: type = fn_type @C.as.A.impl.G [concrete] // CHECK:STDOUT: %C.as.A.impl.G: %C.as.A.impl.G.type = struct_value () [concrete] @@ -1637,6 +1640,7 @@ fn Works() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.A.impl.%C.ref, @A [concrete = constants.%.4e8] // CHECK:STDOUT: %Works.decl: %Works.type = fn_decl @Works [concrete = constants.%Works] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/default_fn.carbon b/toolchain/check/testdata/interface/default_fn.carbon index e7155cb30c09..82ee40929c1f 100644 --- a/toolchain/check/testdata/interface/default_fn.carbon +++ b/toolchain/check/testdata/interface/default_fn.carbon @@ -43,6 +43,7 @@ class C { // CHECK:STDOUT: %I.WithSelf.F.02a: %I.WithSelf.F.type.933 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.08d: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.F.decl [concrete] +// CHECK:STDOUT: %.c3e: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -139,6 +140,7 @@ class C { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc25: = impl_self_witness @C.as.I.impl.%C.ref, @I [concrete = constants.%.c3e] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/final.carbon b/toolchain/check/testdata/interface/final.carbon index 308415153568..a9c10f9be965 100644 --- a/toolchain/check/testdata/interface/final.carbon +++ b/toolchain/check/testdata/interface/final.carbon @@ -46,6 +46,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %T.patt.ac1: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.e40: %J.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type.d90: type = facet_access_type %T.e40 [symbolic] +// CHECK:STDOUT: %.d3d: = impl_self_witness %T.as_type.d90, @I [symbolic] // CHECK:STDOUT: %I.impl_witness.333: = impl_witness @T.as_type.as.I.impl.%I.impl_witness_table, @T.as_type.as.I.impl(%T.e40) [symbolic] // CHECK:STDOUT: %T.as_type.as.I.impl.F.type.f53: type = fn_type @T.as_type.as.I.impl.F, @T.as_type.as.I.impl(%T.e40) [symbolic] // CHECK:STDOUT: %T.as_type.as.I.impl.F.305: %T.as_type.as.I.impl.F.type.f53 = struct_value () [symbolic] @@ -71,6 +72,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.ffd: = impl_self_witness %C, @J [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %J.facet: %J.type = facet_value %C, (%J.impl_witness) [concrete] // CHECK:STDOUT: %Use.type: type = fn_type @Use [concrete] @@ -78,6 +80,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %UseJ.specific_fn: = specific_function %UseJ, @UseJ(%J.facet) [concrete] // CHECK:STDOUT: %.c2e: type = fn_type_with_self_type %I.WithSelf.F.type.12f, %I.facet.39f [symbolic] // CHECK:STDOUT: %T.as_type.as.I.impl.F.specific_fn.925: = specific_function %T.as_type.as.I.impl.F.305, @T.as_type.as.I.impl.F(%T.e40) [symbolic] +// CHECK:STDOUT: %.b7f: = impl_self_witness %C, @I [concrete] // CHECK:STDOUT: %I.impl_witness.9d5: = impl_witness @T.as_type.as.I.impl.%I.impl_witness_table, @T.as_type.as.I.impl(%J.facet) [concrete] // CHECK:STDOUT: %T.as_type.as.I.impl.F.type.907: type = fn_type @T.as_type.as.I.impl.F, @T.as_type.as.I.impl(%J.facet) [concrete] // CHECK:STDOUT: %T.as_type.as.I.impl.F.b2b: %T.as_type.as.I.impl.F.type.907 = struct_value () [concrete] @@ -122,6 +125,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_21.2: %J.type = symbolic_binding T, 0 [symbolic = %T.loc7_21.1 (constants.%T.e40)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @T.as_type.as.I.impl.%.loc7_26, @I [symbolic = @T.as_type.as.I.impl.%.loc7_33 (constants.%.d3d)] // CHECK:STDOUT: %UseI.decl: %UseI.type = fn_decl @UseI [concrete = constants.%UseI] { // CHECK:STDOUT: %T.patt.loc11_18.1: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_18.2 (constants.%T.patt.1df)] // CHECK:STDOUT: } { @@ -145,6 +149,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @C.as.J.impl.%C.ref, @J [concrete = constants.%.ffd] // CHECK:STDOUT: %Use.decl: %Use.type = fn_decl @Use [concrete = constants.%Use] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -179,6 +184,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %T.patt.loc7_21.2: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_21.2 (constants.%T.patt.ac1)] // CHECK:STDOUT: %T.loc7_21.1: %J.type = symbolic_binding T, 0 [symbolic = %T.loc7_21.1 (constants.%T.e40)] // CHECK:STDOUT: %T.as_type.loc7_26.1: type = facet_access_type %T.loc7_21.1 [symbolic = %T.as_type.loc7_26.1 (constants.%T.as_type.d90)] +// CHECK:STDOUT: %.loc7_33: = impl_self_witness %T.as_type.loc7_26.1, @I [symbolic = %.loc7_33 (constants.%.d3d)] // CHECK:STDOUT: %I.impl_witness.loc7_33.2: = impl_witness %I.impl_witness_table, @T.as_type.as.I.impl(%T.loc7_21.1) [symbolic = %I.impl_witness.loc7_33.2 (constants.%I.impl_witness.333)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -304,6 +310,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %T.patt.loc7_21.2 => constants.%T.patt.ac1 // CHECK:STDOUT: %T.loc7_21.1 => constants.%T.e40 // CHECK:STDOUT: %T.as_type.loc7_26.1 => constants.%T.as_type.d90 +// CHECK:STDOUT: %.loc7_33 => constants.%.d3d // CHECK:STDOUT: %I.impl_witness.loc7_33.2 => constants.%I.impl_witness.333 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -376,6 +383,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %T.patt.loc7_21.2 => constants.%T.patt.ac1 // CHECK:STDOUT: %T.loc7_21.1 => constants.%J.facet // CHECK:STDOUT: %T.as_type.loc7_26.1 => constants.%C +// CHECK:STDOUT: %.loc7_33 => constants.%.b7f // CHECK:STDOUT: %I.impl_witness.loc7_33.2 => constants.%I.impl_witness.9d5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/interface/generic.carbon b/toolchain/check/testdata/interface/generic.carbon index 8bd2e258b7c6..fa78c45a0948 100644 --- a/toolchain/check/testdata/interface/generic.carbon +++ b/toolchain/check/testdata/interface/generic.carbon @@ -106,10 +106,12 @@ fn F(unused generic T: Generic((), ())) {} // CHECK:STDOUT: %assoc0.f49: %WithAssocFn.assoc_type.b11 = assoc_entity element0, @WithAssocFn.WithSelf.%WithAssocFn.WithSelf.F.decl [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Simple.type.d50: type = facet_type <@Simple, @Simple(%C)> [concrete] +// CHECK:STDOUT: %.b0f: = impl_self_witness %C, @Simple, @Simple(%C) [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @C.as.Simple.impl.%Simple.impl_witness_table [concrete] // CHECK:STDOUT: %Self.e0f: %Simple.type.d50 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Simple.facet: %Simple.type.d50 = facet_value %C, (%Simple.impl_witness) [concrete] // CHECK:STDOUT: %WithAssocFn.type.5fd: type = facet_type <@WithAssocFn, @WithAssocFn(%C)> [concrete] +// CHECK:STDOUT: %.fce: = impl_self_witness %C, @WithAssocFn, @WithAssocFn(%C) [concrete] // CHECK:STDOUT: %WithAssocFn.impl_witness: = impl_witness @C.as.WithAssocFn.impl.%WithAssocFn.impl_witness_table [concrete] // CHECK:STDOUT: %Self.925: %WithAssocFn.type.5fd = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %WithAssocFn.WithSelf.F.type.8f1: type = fn_type @WithAssocFn.WithSelf.F, @WithAssocFn.WithSelf(%C, %Self.e5d) [symbolic] @@ -317,12 +319,14 @@ fn F(unused generic T: Generic((), ())) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [concrete = constants.%Simple.type.d50] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @C.as.Simple.impl.%Self.ref, @Simple, @Simple(constants.%C) [concrete = constants.%.b0f] // CHECK:STDOUT: impl_decl @C.as.WithAssocFn.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type.0a6 = name_ref WithAssocFn, file.%WithAssocFn.decl [concrete = constants.%WithAssocFn.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(constants.%C)> [concrete = constants.%WithAssocFn.type.5fd] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @C.as.WithAssocFn.impl.%Self.ref, @WithAssocFn, @WithAssocFn(constants.%C) [concrete = constants.%.fce] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/generic_import.carbon b/toolchain/check/testdata/interface/generic_import.carbon index 39d95ba27009..b1907f6a5279 100644 --- a/toolchain/check/testdata/interface/generic_import.carbon +++ b/toolchain/check/testdata/interface/generic_import.carbon @@ -118,6 +118,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: %AddWith.WithSelf.F.type.ada: type = fn_type @AddWith.WithSelf.F, @AddWith.WithSelf(%T, %Self.403) [symbolic] // CHECK:STDOUT: %AddWith.WithSelf.F.2ed: %AddWith.WithSelf.F.type.ada = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.type.236: type = facet_type <@AddWith, @AddWith(%C)> [concrete] +// CHECK:STDOUT: %.5bd: = impl_self_witness %C, @AddWith, @AddWith(%C) [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness @C.as.AddWith.impl.%AddWith.impl_witness_table [concrete] // CHECK:STDOUT: %Self.189: %AddWith.type.236 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %AddWith.WithSelf.F.type.8d2: type = fn_type @AddWith.WithSelf.F, @AddWith.WithSelf(%C, %Self.403) [symbolic] @@ -155,6 +156,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: %C.ref.loc7_19: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%C)> [concrete = constants.%AddWith.type.236] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.AddWith.impl.%C.ref.loc7_6, @AddWith, @AddWith(constants.%C) [concrete = constants.%.5bd] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @AddWith(imports.%Main.import_ref.b3bc94.3: type) [from "a.carbon"] { diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index b11514e17f61..49416cba6bc1 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -121,6 +121,7 @@ fn CallIndirect() { // CHECK:STDOUT: %Y: type = class_type @Y [concrete] // CHECK:STDOUT: %Z: type = class_type @Z [concrete] // CHECK:STDOUT: %A.type.df0: type = facet_type <@A, @A(%X)> [concrete] +// CHECK:STDOUT: %.ef7: = impl_self_witness %Y, @A, @A(%X) [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @Y.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %Self.891: %A.type.df0 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %A.WithSelf.F.type.ad4: type = fn_type @A.WithSelf.F, @A.WithSelf(%X, %Self.49a) [symbolic] @@ -308,6 +309,7 @@ fn CallIndirect() { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(constants.%X)> [concrete = constants.%A.type.df0] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @Y.as.A.impl.%Y.ref, @A, @A(constants.%X) [concrete = constants.%.ef7] // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] {} {} // CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [concrete = constants.%CallGeneric] { // CHECK:STDOUT: %T.patt.loc26_25.1: %pattern_type.871 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_25.2 (constants.%T.patt.c17)] @@ -928,6 +930,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.4b9: %tuple.type.24b = tuple_value (%V1, %V2) [symbolic] // CHECK:STDOUT: %tuple.type.a5e: type = tuple_type (%V1, %V2) [symbolic] // CHECK:STDOUT: %A.type.3ad: type = facet_type <@A, @A(%W)> [symbolic] +// CHECK:STDOUT: %.b95: = impl_self_witness %tuple.type.a5e, @A, @A(%W) [symbolic] // CHECK:STDOUT: %A.impl_witness.756: = impl_witness @tuple.type.as.A.impl.%A.impl_witness_table, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic] // CHECK:STDOUT: %Self.0f8: %A.type.3ad = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %A.WithSelf.F.type.64e: type = fn_type @A.WithSelf.F, @A.WithSelf(%W, %Self.49a) [symbolic] @@ -962,6 +965,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.8db: %tuple.type.24b = tuple_value (%Y1, %Y2) [concrete] // CHECK:STDOUT: %tuple.type.59f: type = tuple_type (%Y1, %Y2) [concrete] // CHECK:STDOUT: %A.type.df0: type = facet_type <@A, @A(%X)> [concrete] +// CHECK:STDOUT: %.de6: = impl_self_witness %tuple.type.59f, @A, @A(%X) [concrete] // CHECK:STDOUT: %A.impl_witness.6b7: = impl_witness @tuple.type.as.A.impl.%A.impl_witness_table, @tuple.type.as.A.impl(%Y1, %Y2, %X) [concrete] // CHECK:STDOUT: %Self.891: %A.type.df0 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %A.WithSelf.F.type.ad4: type = fn_type @A.WithSelf.F, @A.WithSelf(%X, %Self.49a) [symbolic] @@ -1116,6 +1120,7 @@ fn CallIndirect() { // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc14_35.2: type = symbolic_binding W, 2 [symbolic = %W.loc14_35.1 (constants.%W)] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @tuple.type.as.A.impl.%.loc14_50.2, @A, @A(constants.%W) [symbolic = @tuple.type.as.A.impl.%.loc14_60 (constants.%.b95)] // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] {} {} // CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [concrete = constants.%CallGeneric] { // CHECK:STDOUT: %T.patt.loc27_25.1: %pattern_type.871 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc27_25.2 (constants.%T.patt.c17)] @@ -1204,6 +1209,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%V1.loc14_16.1, %V2.loc14_26.1) [symbolic = %tuple (constants.%tuple.4b9)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%V1.loc14_16.1, %V2.loc14_26.1) [symbolic = %tuple.type (constants.%tuple.type.a5e)] // CHECK:STDOUT: %A.type.loc14_58.1: type = facet_type <@A, @A(%W.loc14_35.1)> [symbolic = %A.type.loc14_58.1 (constants.%A.type.3ad)] +// CHECK:STDOUT: %.loc14_60: = impl_self_witness %tuple.type, @A, @A(%W.loc14_35.1) [symbolic = %.loc14_60 (constants.%.b95)] // CHECK:STDOUT: %A.impl_witness.loc14_60.2: = impl_witness %A.impl_witness_table, @tuple.type.as.A.impl(%V1.loc14_16.1, %V2.loc14_26.1, %W.loc14_35.1) [symbolic = %A.impl_witness.loc14_60.2 (constants.%A.impl_witness.756)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1523,6 +1529,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.4b9 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5e // CHECK:STDOUT: %A.type.loc14_58.1 => constants.%A.type.3ad +// CHECK:STDOUT: %.loc14_60 => constants.%.b95 // CHECK:STDOUT: %A.impl_witness.loc14_60.2 => constants.%A.impl_witness.756 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1617,6 +1624,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.8db // CHECK:STDOUT: %tuple.type => constants.%tuple.type.59f // CHECK:STDOUT: %A.type.loc14_58.1 => constants.%A.type.df0 +// CHECK:STDOUT: %.loc14_60 => constants.%.de6 // CHECK:STDOUT: %A.impl_witness.loc14_60.2 => constants.%A.impl_witness.6b7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/interface/generic_vs_params.carbon b/toolchain/check/testdata/interface/generic_vs_params.carbon index b6a1d06bdb66..603e18871329 100644 --- a/toolchain/check/testdata/interface/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/generic_vs_params.carbon @@ -104,11 +104,14 @@ interface Bar[T: type] {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] +// CHECK:STDOUT: %.bd1: = impl_self_witness %X, @NotGenericNoParams [concrete] // CHECK:STDOUT: %NotGenericNoParams.impl_witness: = impl_witness @X.as.NotGenericNoParams.impl.%NotGenericNoParams.impl_witness_table [concrete] // CHECK:STDOUT: %NotGenericNoParams.facet: %NotGenericNoParams.type = facet_value %X, (%NotGenericNoParams.impl_witness) [concrete] +// CHECK:STDOUT: %.7d9: = impl_self_witness %X, @NotGenericButParams [concrete] // CHECK:STDOUT: %NotGenericButParams.impl_witness: = impl_witness @X.as.NotGenericButParams.impl.%NotGenericButParams.impl_witness_table [concrete] // CHECK:STDOUT: %NotGenericButParams.facet: %NotGenericButParams.type.21c = facet_value %X, (%NotGenericButParams.impl_witness) [concrete] // CHECK:STDOUT: %GenericAndParams.type.8ab: type = facet_type <@GenericAndParams.loc6, @GenericAndParams.loc6(%X)> [concrete] +// CHECK:STDOUT: %.bbd: = impl_self_witness %X, @GenericAndParams.loc6, @GenericAndParams.loc6(%X) [concrete] // CHECK:STDOUT: %GenericAndParams.impl_witness.925: = impl_witness @X.as.GenericAndParams.impl.44a.%GenericAndParams.impl_witness_table [concrete] // CHECK:STDOUT: %Self.34f: %GenericAndParams.type.8ab = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %GenericAndParams.facet.9e9: %GenericAndParams.type.8ab = facet_value %X, (%GenericAndParams.impl_witness.925) [concrete] @@ -116,10 +119,12 @@ interface Bar[T: type] {} // CHECK:STDOUT: %GenericNoParams.type.670: type = facet_type <@GenericNoParams, @GenericNoParams(%X)> [concrete] // CHECK:STDOUT: %GenericAndParams.type.0ab: type = generic_interface_type @GenericAndParams.loc10, @C(%X) [concrete] // CHECK:STDOUT: %GenericAndParams.generic.2f5: %GenericAndParams.type.0ab = struct_value () [concrete] +// CHECK:STDOUT: %.218: = impl_self_witness %X, @GenericNoParams, @GenericNoParams(%X) [concrete] // CHECK:STDOUT: %GenericNoParams.impl_witness: = impl_witness @X.as.GenericNoParams.impl.%GenericNoParams.impl_witness_table [concrete] // CHECK:STDOUT: %Self.998: %GenericNoParams.type.670 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %GenericNoParams.facet: %GenericNoParams.type.670 = facet_value %X, (%GenericNoParams.impl_witness) [concrete] // CHECK:STDOUT: %GenericAndParams.type.b2b: type = facet_type <@GenericAndParams.loc10, @GenericAndParams.loc10(%X, %X)> [concrete] +// CHECK:STDOUT: %.364: = impl_self_witness %X, @GenericAndParams.loc10, @GenericAndParams.loc10(%X, %X) [concrete] // CHECK:STDOUT: %GenericAndParams.impl_witness.b47: = impl_witness @X.as.GenericAndParams.impl.5ef.%GenericAndParams.impl_witness_table [concrete] // CHECK:STDOUT: %Self.883: %GenericAndParams.type.b2b = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %GenericAndParams.facet.abe: %GenericAndParams.type.b2b = facet_value %X, (%GenericAndParams.impl_witness.b47) [concrete] @@ -158,17 +163,20 @@ interface Bar[T: type] {} // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %NotGenericNoParams.ref: type = name_ref NotGenericNoParams, file.%NotGenericNoParams.decl [concrete = constants.%NotGenericNoParams.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @X.as.NotGenericNoParams.impl.%X.ref, @NotGenericNoParams [concrete = constants.%.bd1] // CHECK:STDOUT: impl_decl @X.as.NotGenericButParams.impl [concrete] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type.2fe = name_ref NotGenericButParams, file.%NotGenericButParams.decl [concrete = constants.%NotGenericButParams.generic] // CHECK:STDOUT: %NotGenericButParams.type: type = facet_type <@NotGenericButParams> [concrete = constants.%NotGenericButParams.type.21c] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @X.as.NotGenericButParams.impl.%X.ref, @NotGenericButParams [concrete = constants.%.7d9] // CHECK:STDOUT: impl_decl @X.as.GenericAndParams.impl.44a [concrete] {} { // CHECK:STDOUT: %X.ref.loc16_6: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.23f = name_ref GenericAndParams, file.%GenericAndParams.decl [concrete = constants.%GenericAndParams.generic.504] // CHECK:STDOUT: %X.ref.loc16_28: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.loc6, @GenericAndParams.loc6(constants.%X)> [concrete = constants.%GenericAndParams.type.8ab] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc16: = impl_self_witness @X.as.GenericAndParams.impl.44a.%X.ref.loc16_6, @GenericAndParams.loc6, @GenericAndParams.loc6(constants.%X) [concrete = constants.%.bbd] // CHECK:STDOUT: impl_decl @X.as.GenericNoParams.impl [concrete] {} { // CHECK:STDOUT: %X.ref.loc17_6: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] @@ -177,6 +185,7 @@ interface Bar[T: type] {} // CHECK:STDOUT: %.loc17: type = specific_constant @C.%GenericNoParams.decl, @C(constants.%X) [concrete = constants.%GenericNoParams.type.670] // CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, %.loc17 [concrete = constants.%GenericNoParams.type.670] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @X.as.GenericNoParams.impl.%X.ref.loc17_6, @GenericNoParams, @GenericNoParams(constants.%X) [concrete = constants.%.218] // CHECK:STDOUT: impl_decl @X.as.GenericAndParams.impl.5ef [concrete] {} { // CHECK:STDOUT: %X.ref.loc18_6: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] @@ -187,6 +196,7 @@ interface Bar[T: type] {} // CHECK:STDOUT: %X.ref.loc18_33: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.loc10, @GenericAndParams.loc10(constants.%X, constants.%X)> [concrete = constants.%GenericAndParams.type.b2b] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc18: = impl_self_witness @X.as.GenericAndParams.impl.5ef.%X.ref.loc18_6, @GenericAndParams.loc10, @GenericAndParams.loc10(constants.%X, constants.%X) [concrete = constants.%.364] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NotGenericNoParams { diff --git a/toolchain/check/testdata/interface/local.carbon b/toolchain/check/testdata/interface/local.carbon index fc71f562c446..2dbf0b0963cb 100644 --- a/toolchain/check/testdata/interface/local.carbon +++ b/toolchain/check/testdata/interface/local.carbon @@ -39,6 +39,7 @@ fn F() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.G.decl [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.a93: = impl_self_witness %empty_tuple.type, @I [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %self.param_patt.154: %pattern_type.cb1 = value_param_pattern [concrete] @@ -112,6 +113,7 @@ fn F() { // CHECK:STDOUT: %.loc19_9.2: type = converted %.loc19_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, @F.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @empty_tuple.type.as.I.impl.%.loc19_9.2, @I [concrete = constants.%.a93] // CHECK:STDOUT: %.loc22_4.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %G.ref: %I.assoc_type = name_ref G, @I.WithSelf.%assoc0 [concrete = constants.%assoc0] diff --git a/toolchain/check/testdata/interface/todo_define_not_default.carbon b/toolchain/check/testdata/interface/todo_define_not_default.carbon index d0bd8fa14869..5239bba9a155 100644 --- a/toolchain/check/testdata/interface/todo_define_not_default.carbon +++ b/toolchain/check/testdata/interface/todo_define_not_default.carbon @@ -41,7 +41,7 @@ interface I { // CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] // CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %I.WithSelf.G.type: type = fn_type @I.WithSelf.G, @I.WithSelf(%Self.37e) [symbolic] @@ -109,7 +109,7 @@ interface I { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc18_27 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc18_27: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc18: Core.Form = init_form %i32.loc18_27 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc18: Core.Form = init_form %i32.loc18_27 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc18_11: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param diff --git a/toolchain/check/testdata/interop/cpp/function/export/generic.carbon b/toolchain/check/testdata/interop/cpp/function/export/generic.carbon index e42ebb59e70d..fc793f4e5349 100644 --- a/toolchain/check/testdata/interop/cpp/function/export/generic.carbon +++ b/toolchain/check/testdata/interop/cpp/function/export/generic.carbon @@ -159,6 +159,7 @@ void G() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.628: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.Doit.decl [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %.b03: = impl_self_witness %A, @I [concrete] // CHECK:STDOUT: %I.impl_witness.6ad: = impl_witness @A.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.9ef: type = pattern_type %A [concrete] // CHECK:STDOUT: %self.param_patt.04e: %pattern_type.9ef = value_param_pattern [concrete] @@ -176,6 +177,7 @@ void G() { // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] +// CHECK:STDOUT: %.d64: = impl_self_witness %B, @I [concrete] // CHECK:STDOUT: %I.impl_witness.5b8: = impl_witness @B.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.e39: type = pattern_type %B [concrete] // CHECK:STDOUT: %self.param_patt.f1f: %pattern_type.e39 = value_param_pattern [concrete] @@ -367,6 +369,7 @@ void G() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [concrete = constants.%A] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @A.as.I.impl.%Self.ref, @I [concrete = constants.%.b03] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -381,6 +384,7 @@ void G() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [concrete = constants.%B] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc17: = impl_self_witness @B.as.I.impl.%Self.ref, @I [concrete = constants.%.d64] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -497,14 +501,14 @@ void G() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F__carbon_thunkinst6400006C(%_.param.loc24_23.1: ref %B, %_.param.loc24_23.2: ref %B) { +// CHECK:STDOUT: fn @F__carbon_thunkinst6400006E(%_.param.loc24_23.1: ref %B, %_.param.loc24_23.2: ref %B) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F__carbon_thunkinst6400006C.ref: %F.type = name_ref F__carbon_thunkinst6400006C, file.%F.decl [concrete = constants.%F] +// CHECK:STDOUT: %F__carbon_thunkinst6400006E.ref: %F.type = name_ref F__carbon_thunkinst6400006E, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %I.facet.loc24_23.1: %I.type = facet_value constants.%B, (constants.%I.impl_witness.5b8) [concrete = constants.%I.facet.9f8] // CHECK:STDOUT: %.loc24_23.1: %I.type = converted constants.%B, %I.facet.loc24_23.1 [concrete = constants.%I.facet.9f8] // CHECK:STDOUT: %I.facet.loc24_23.2: %I.type = facet_value constants.%B, (constants.%I.impl_witness.5b8) [concrete = constants.%I.facet.9f8] // CHECK:STDOUT: %.loc24_23.2: %I.type = converted constants.%B, %I.facet.loc24_23.2 [concrete = constants.%I.facet.9f8] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F__carbon_thunkinst6400006C.ref, @F(constants.%I.facet.9f8) [concrete = constants.%F.specific_fn.db2] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F__carbon_thunkinst6400006E.ref, @F(constants.%I.facet.9f8) [concrete = constants.%F.specific_fn.db2] // CHECK:STDOUT: %.loc24_23.3: ref %B = splice_block %_.param.loc24_23.2 {} // CHECK:STDOUT: %.loc24_23.4: %B = acquire_value %_.param.loc24_23.1 // CHECK:STDOUT: %F.call: init %B to %.loc24_23.3 = call %F.specific_fn(%.loc24_23.4) diff --git a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon index 41fa8a15d255..7e452fc6f842 100644 --- a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon +++ b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon @@ -698,8 +698,8 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %To.fe9: 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.1, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%To.fe9) [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From.fe9: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.48d: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From.fe9) [symbolic] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.0f9: %Int.as.ImplicitAs.impl.Convert.type.48d = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.091: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] @@ -875,8 +875,8 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %To.fe9: Core.IntLiteral = symbolic_binding To, 0 [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b68(%To.fe9) [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.170: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From.fe9: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.type.3ec: type = fn_type @UInt.as.ImplicitAs.impl.Convert.1, @UInt.as.ImplicitAs.impl.3d3(%From.fe9) [symbolic] // CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.06e: %UInt.as.ImplicitAs.impl.Convert.type.3ec = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.9c4: = impl_witness imports.%ImplicitAs.impl_witness_table.42f, @Core.IntLiteral.as.ImplicitAs.impl.b68(%int_64) [concrete] diff --git a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon index 4e0ed3060c00..9791a298c695 100644 --- a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon +++ b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon @@ -646,8 +646,8 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %To.fe9: 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.1, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%To.fe9) [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From.fe9: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.48d: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From.fe9) [symbolic] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.0f9: %Int.as.ImplicitAs.impl.Convert.type.48d = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.091: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] @@ -823,8 +823,8 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %To.fe9: Core.IntLiteral = symbolic_binding To, 0 [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b68(%To.fe9) [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.170: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From.fe9: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.type.3ec: type = fn_type @UInt.as.ImplicitAs.impl.Convert.1, @UInt.as.ImplicitAs.impl.3d3(%From.fe9) [symbolic] // CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.06e: %UInt.as.ImplicitAs.impl.Convert.type.3ec = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.9c4: = impl_witness imports.%ImplicitAs.impl_witness_table.42f, @Core.IntLiteral.as.ImplicitAs.impl.b68(%int_64) [concrete] @@ -1675,8 +1675,8 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.d6d = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.e33 [concrete] // CHECK:STDOUT: %Core.import_ref.7e1: @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.Equal.type.2 (%Cpp.long_long.as.EqWith.impl.Equal.type.f2c091.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.Equal.2 (constants.%Cpp.long_long.as.EqWith.impl.Equal.ec6d64.1)] -// CHECK:STDOUT: %Core.import_ref.ba2: @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.NotEqual.type.2 (%Cpp.long_long.as.EqWith.impl.NotEqual.type.b639b1.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.NotEqual.2 (constants.%Cpp.long_long.as.EqWith.impl.NotEqual.4b5f60.1)] -// CHECK:STDOUT: %EqWith.impl_witness_table.efb = impl_witness_table (%Core.import_ref.7e1, %Core.import_ref.ba2), @Cpp.long_long.as.EqWith.impl.600 [concrete] +// CHECK:STDOUT: %Core.import_ref.ba29: @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.NotEqual.type.2 (%Cpp.long_long.as.EqWith.impl.NotEqual.type.b639b1.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.NotEqual.2 (constants.%Cpp.long_long.as.EqWith.impl.NotEqual.4b5f60.1)] +// CHECK:STDOUT: %EqWith.impl_witness_table.efb = impl_witness_table (%Core.import_ref.7e1, %Core.import_ref.ba29), @Cpp.long_long.as.EqWith.impl.600 [concrete] // CHECK:STDOUT: %Core.Equal.cce: @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.Equal.type.1 (%Cpp.long_long.as.EqWith.impl.Equal.type.f2c091.2) = import_ref Core//prelude/types/cpp/int, Equal, loaded [symbolic = @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.Equal.1 (constants.%Cpp.long_long.as.EqWith.impl.Equal.ec6d64.2)] // CHECK:STDOUT: %Core.NotEqual.422: @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.NotEqual.type.1 (%Cpp.long_long.as.EqWith.impl.NotEqual.type.b639b1.2) = import_ref Core//prelude/types/cpp/int, NotEqual, loaded [symbolic = @Cpp.long_long.as.EqWith.impl.600.%Cpp.long_long.as.EqWith.impl.NotEqual.1 (constants.%Cpp.long_long.as.EqWith.impl.NotEqual.4b5f60.2)] // CHECK:STDOUT: %Core.import_ref.06c923.2: %i64.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i64.as.ImplicitAs.impl.Convert] diff --git a/toolchain/check/testdata/interop/cpp/range_for.carbon b/toolchain/check/testdata/interop/cpp/range_for.carbon index 99f564f8996d..c09b01b56b1f 100644 --- a/toolchain/check/testdata/interop/cpp/range_for.carbon +++ b/toolchain/check/testdata/interop/cpp/range_for.carbon @@ -2076,8 +2076,8 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Iterate.facet.94d: %Iterate.type = facet_value %R.as_type, (%Iterate.lookup_impl_witness.93c) [symbolic] // CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.4c7: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.94d) [symbolic] // CHECK:STDOUT: %Iterate.WithSelf.Next.type.275: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.94d) [symbolic] -// CHECK:STDOUT: %.a62: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.4c7, %Iterate.facet.94d [symbolic] -// CHECK:STDOUT: %impl.elem2.c7b: %.a62 = impl_witness_access %Iterate.lookup_impl_witness.93c, element2 [symbolic] +// CHECK:STDOUT: %.a62a: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.4c7, %Iterate.facet.94d [symbolic] +// CHECK:STDOUT: %impl.elem2.c7b: %.a62a = impl_witness_access %Iterate.lookup_impl_witness.93c, element2 [symbolic] // CHECK:STDOUT: %impl.elem1.7a9: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.93c, element1 [symbolic] // CHECK:STDOUT: %as_type.8e4: type = facet_access_type %impl.elem1.7a9 [symbolic] // CHECK:STDOUT: %specific_impl_fn.1b8: = specific_impl_function %impl.elem2.c7b, @Iterate.WithSelf.NewCursor(%Iterate.facet.94d) [symbolic] @@ -2179,9 +2179,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %OptionalStorage.impl_witness_table.cfa = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.dc3, %Core.import_ref.c530, %Core.import_ref.ed4, %Core.import_ref.e9c, %Core.import_ref.0b2), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %Core.import_ref.eef: %facet_type.f48 = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.f93)] // CHECK:STDOUT: %Core.import_ref.fcc: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.9cd)] -// CHECK:STDOUT: %Core.import_ref.fd1: @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor.type (%T.as_type.as.Iterate.impl.NewCursor.type.953) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor (constants.%T.as_type.as.Iterate.impl.NewCursor.544)] +// CHECK:STDOUT: %Core.import_ref.fd1a: @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor.type (%T.as_type.as.Iterate.impl.NewCursor.type.953) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor (constants.%T.as_type.as.Iterate.impl.NewCursor.544)] // CHECK:STDOUT: %Core.import_ref.273: @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.Next.type (%T.as_type.as.Iterate.impl.Next.type.b36) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.Next (constants.%T.as_type.as.Iterate.impl.Next.d6b)] -// CHECK:STDOUT: %Iterate.impl_witness_table.978 = impl_witness_table (%Core.import_ref.eef, %Core.import_ref.fcc, %Core.import_ref.fd1, %Core.import_ref.273), @T.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Iterate.impl_witness_table.978 = impl_witness_table (%Core.import_ref.eef, %Core.import_ref.fcc, %Core.import_ref.fd1a, %Core.import_ref.273), @T.as_type.as.Iterate.impl [concrete] // CHECK:STDOUT: %Core.import_ref.e69: @Float.as.Copy.impl.%Float.as.Copy.impl.Op.type (%Float.as.Copy.impl.Op.type.ff3) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Float.as.Copy.impl.%Float.as.Copy.impl.Op (constants.%Float.as.Copy.impl.Op.d93)] // CHECK:STDOUT: %Copy.impl_witness_table.4e8 = impl_witness_table (%Core.import_ref.e69), @Float.as.Copy.impl [concrete] // CHECK:STDOUT: %Core.import_ref.cb3: @Float.as.AddAssignWith.impl.%Float.as.AddAssignWith.impl.Op.type (%Float.as.AddAssignWith.impl.Op.type.fdd) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Float.as.AddAssignWith.impl.%Float.as.AddAssignWith.impl.Op (constants.%Float.as.AddAssignWith.impl.Op.430)] @@ -2196,8 +2196,8 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc20_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.93c)] // CHECK:STDOUT: %Iterate.facet.loc24_19.5: %Iterate.type = facet_value %R.as_type.loc20_61.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] // CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc24_19.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.4c7)] -// CHECK:STDOUT: %.loc24_19.19: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc24_19.5 [symbolic = %.loc24_19.19 (constants.%.a62)] -// CHECK:STDOUT: %impl.elem2.loc24_19.2: @TestIterate.%.loc24_19.19 (%.a62) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc24_19.2 (constants.%impl.elem2.c7b)] +// CHECK:STDOUT: %.loc24_19.19: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc24_19.5 [symbolic = %.loc24_19.19 (constants.%.a62a)] +// CHECK:STDOUT: %impl.elem2.loc24_19.2: @TestIterate.%.loc24_19.19 (%.a62a) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc24_19.2 (constants.%impl.elem2.c7b)] // CHECK:STDOUT: %specific_impl_fn.loc24_19.4: = specific_impl_function %impl.elem2.loc24_19.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc24_19.5) [symbolic = %specific_impl_fn.loc24_19.4 (constants.%specific_impl_fn.1b8)] // CHECK:STDOUT: // CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.bac)] @@ -2218,7 +2218,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt: %pattern_type.fb7 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc20_61.1 (%R.as_type) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc24_19.1: @TestIterate.%.loc24_19.19 (%.a62) = impl_witness_access constants.%Iterate.lookup_impl_witness.93c, element2 [symbolic = %impl.elem2.loc24_19.2 (constants.%impl.elem2.c7b)] +// CHECK:STDOUT: %impl.elem2.loc24_19.1: @TestIterate.%.loc24_19.19 (%.a62a) = impl_witness_access constants.%Iterate.lookup_impl_witness.93c, element2 [symbolic = %impl.elem2.loc24_19.2 (constants.%impl.elem2.c7b)] // CHECK:STDOUT: %bound_method.loc24_19.1: = bound_method %r.ref, %impl.elem2.loc24_19.1 // CHECK:STDOUT: %Iterate.facet.loc24_19.1: %Iterate.type = facet_value constants.%R.as_type, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] // CHECK:STDOUT: %.loc24_19.1: %Iterate.type = converted constants.%R.as_type, %Iterate.facet.loc24_19.1 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] @@ -2509,8 +2509,8 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Iterate.facet.94d: %Iterate.type = facet_value %R.as_type, (%Iterate.lookup_impl_witness.93c) [symbolic] // CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.4c7: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.94d) [symbolic] // CHECK:STDOUT: %Iterate.WithSelf.Next.type.275: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.94d) [symbolic] -// CHECK:STDOUT: %.a62: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.4c7, %Iterate.facet.94d [symbolic] -// CHECK:STDOUT: %impl.elem2.c7b: %.a62 = impl_witness_access %Iterate.lookup_impl_witness.93c, element2 [symbolic] +// CHECK:STDOUT: %.a62a: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.4c7, %Iterate.facet.94d [symbolic] +// CHECK:STDOUT: %impl.elem2.c7b: %.a62a = impl_witness_access %Iterate.lookup_impl_witness.93c, element2 [symbolic] // CHECK:STDOUT: %impl.elem1.7a9: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.93c, element1 [symbolic] // CHECK:STDOUT: %as_type.8e4: type = facet_access_type %impl.elem1.7a9 [symbolic] // CHECK:STDOUT: %specific_impl_fn.1b8: = specific_impl_function %impl.elem2.c7b, @Iterate.WithSelf.NewCursor(%Iterate.facet.94d) [symbolic] @@ -2612,9 +2612,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %OptionalStorage.impl_witness_table.cfa = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.dc3, %Core.import_ref.c530, %Core.import_ref.ed4, %Core.import_ref.e9c, %Core.import_ref.0b2), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %Core.import_ref.eef: %facet_type.f48 = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.f93)] // CHECK:STDOUT: %Core.import_ref.fcc: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.9cd)] -// CHECK:STDOUT: %Core.import_ref.fd1: @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor.type (%T.as_type.as.Iterate.impl.NewCursor.type.953) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor (constants.%T.as_type.as.Iterate.impl.NewCursor.544)] +// CHECK:STDOUT: %Core.import_ref.fd1a: @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor.type (%T.as_type.as.Iterate.impl.NewCursor.type.953) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.NewCursor (constants.%T.as_type.as.Iterate.impl.NewCursor.544)] // CHECK:STDOUT: %Core.import_ref.273: @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.Next.type (%T.as_type.as.Iterate.impl.Next.type.b36) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.Iterate.impl.%T.as_type.as.Iterate.impl.Next (constants.%T.as_type.as.Iterate.impl.Next.d6b)] -// CHECK:STDOUT: %Iterate.impl_witness_table.978 = impl_witness_table (%Core.import_ref.eef, %Core.import_ref.fcc, %Core.import_ref.fd1, %Core.import_ref.273), @T.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Iterate.impl_witness_table.978 = impl_witness_table (%Core.import_ref.eef, %Core.import_ref.fcc, %Core.import_ref.fd1a, %Core.import_ref.273), @T.as_type.as.Iterate.impl [concrete] // CHECK:STDOUT: %Core.import_ref.e69: @Float.as.Copy.impl.%Float.as.Copy.impl.Op.type (%Float.as.Copy.impl.Op.type.ff3) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Float.as.Copy.impl.%Float.as.Copy.impl.Op (constants.%Float.as.Copy.impl.Op.d93)] // CHECK:STDOUT: %Copy.impl_witness_table.4e8 = impl_witness_table (%Core.import_ref.e69), @Float.as.Copy.impl [concrete] // CHECK:STDOUT: %Core.import_ref.cb3: @Float.as.AddAssignWith.impl.%Float.as.AddAssignWith.impl.Op.type (%Float.as.AddAssignWith.impl.Op.type.fdd) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Float.as.AddAssignWith.impl.%Float.as.AddAssignWith.impl.Op (constants.%Float.as.AddAssignWith.impl.Op.430)] @@ -2629,8 +2629,8 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc22_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.93c)] // CHECK:STDOUT: %Iterate.facet.loc26_19.5: %Iterate.type = facet_value %R.as_type.loc22_61.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] // CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc26_19.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.4c7)] -// CHECK:STDOUT: %.loc26_19.19: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc26_19.5 [symbolic = %.loc26_19.19 (constants.%.a62)] -// CHECK:STDOUT: %impl.elem2.loc26_19.2: @TestIterate.%.loc26_19.19 (%.a62) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc26_19.2 (constants.%impl.elem2.c7b)] +// CHECK:STDOUT: %.loc26_19.19: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc26_19.5 [symbolic = %.loc26_19.19 (constants.%.a62a)] +// CHECK:STDOUT: %impl.elem2.loc26_19.2: @TestIterate.%.loc26_19.19 (%.a62a) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc26_19.2 (constants.%impl.elem2.c7b)] // CHECK:STDOUT: %specific_impl_fn.loc26_19.4: = specific_impl_function %impl.elem2.loc26_19.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc26_19.5) [symbolic = %specific_impl_fn.loc26_19.4 (constants.%specific_impl_fn.1b8)] // CHECK:STDOUT: // CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.bac)] @@ -2651,7 +2651,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt: %pattern_type.fb7 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc22_61.1 (%R.as_type) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc26_19.1: @TestIterate.%.loc26_19.19 (%.a62) = impl_witness_access constants.%Iterate.lookup_impl_witness.93c, element2 [symbolic = %impl.elem2.loc26_19.2 (constants.%impl.elem2.c7b)] +// CHECK:STDOUT: %impl.elem2.loc26_19.1: @TestIterate.%.loc26_19.19 (%.a62a) = impl_witness_access constants.%Iterate.lookup_impl_witness.93c, element2 [symbolic = %impl.elem2.loc26_19.2 (constants.%impl.elem2.c7b)] // CHECK:STDOUT: %bound_method.loc26_19.1: = bound_method %r.ref, %impl.elem2.loc26_19.1 // CHECK:STDOUT: %Iterate.facet.loc26_19.1: %Iterate.type = facet_value constants.%R.as_type, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] // CHECK:STDOUT: %.loc26_19.1: %Iterate.type = converted constants.%R.as_type, %Iterate.facet.loc26_19.1 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] @@ -3790,7 +3790,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %.4e3: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.c03, %Iterate.facet.00c [concrete] // CHECK:STDOUT: %T.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %T.as_type.as.Iterate.impl.NewCursor.d87, @T.as_type.as.Iterate.impl.NewCursor(%facet_value.32f) [concrete] // CHECK:STDOUT: %ptr.484: type = ptr_type %tuple.type.56e [concrete] -// CHECK:STDOUT: %.24f: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.fc0, %Iterate.facet.00c [concrete] +// CHECK:STDOUT: %.24f0: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.fc0, %Iterate.facet.00c [concrete] // CHECK:STDOUT: %T.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %T.as_type.as.Iterate.impl.Next.a1a, @T.as_type.as.Iterate.impl.Next(%facet_value.32f) [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.b7b: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.7aa) [concrete] // CHECK:STDOUT: %.1ad: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.b7b, %Destroy.facet.7aa [concrete] @@ -4000,7 +4000,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc80: %ptr.484 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.24f = impl_witness_access constants.%Iterate.impl_witness.b0e, element3 [concrete = constants.%T.as_type.as.Iterate.impl.Next.a1a] +// CHECK:STDOUT: %impl.elem3: %.24f0 = impl_witness_access constants.%Iterate.impl_witness.b0e, element3 [concrete = constants.%T.as_type.as.Iterate.impl.Next.a1a] // CHECK:STDOUT: %bound_method.loc80_32.3: = bound_method %mc.ref, %impl.elem3 // CHECK:STDOUT: %facet_value.loc80_32.3: %CppRange_where.type.d682d6.1 = facet_value constants.%MutableAndConstRange, (constants.%custom_witness.fef, constants.%custom_witness.c19, constants.%custom_witness.a40, constants.%custom_witness.04a, constants.%custom_witness.dd5, constants.%custom_witness.01a, constants.%custom_witness.c66) [concrete = constants.%facet_value.32f] // CHECK:STDOUT: %.loc80_32.3: %CppRange_where.type.d682d6.1 = converted constants.%MutableAndConstRange, %facet_value.loc80_32.3 [concrete = constants.%facet_value.32f] @@ -4093,7 +4093,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.1b5 // CHECK:STDOUT: %ptr => constants.%ptr.484 // CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.fc0 -// CHECK:STDOUT: %.loc38_31.21 => constants.%.24f +// CHECK:STDOUT: %.loc38_31.21 => constants.%.24f0 // CHECK:STDOUT: %impl.elem3.loc38_31.2 => constants.%T.as_type.as.Iterate.impl.Next.a1a // CHECK:STDOUT: %specific_impl_fn.loc38_31.5 => constants.%T.as_type.as.Iterate.impl.Next.specific_fn // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.b7b diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index fc81ad06f25c..7e067d61e74c 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -724,6 +724,7 @@ impl i32 as Empty { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.d34: = impl_self_witness %i32, @Empty [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness @i32.as.Empty.impl.%Empty.impl_witness_table [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] @@ -773,6 +774,7 @@ impl i32 as Empty { // CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @i32.as.Empty.impl.%i32.loc6, @Empty [concrete = constants.%.d34] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty { diff --git a/toolchain/check/testdata/let/global.carbon b/toolchain/check/testdata/let/global.carbon index 56e25f6a9760..f40515082673 100644 --- a/toolchain/check/testdata/let/global.carbon +++ b/toolchain/check/testdata/let/global.carbon @@ -40,7 +40,7 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -101,7 +101,7 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc17: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/shadowed_decl.carbon b/toolchain/check/testdata/let/shadowed_decl.carbon index 20b8d4a0f510..e997317eb051 100644 --- a/toolchain/check/testdata/let/shadowed_decl.carbon +++ b/toolchain/check/testdata/let/shadowed_decl.carbon @@ -29,7 +29,7 @@ fn F(unused a: i32) -> i32 { // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %a.patt.28e: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -94,7 +94,7 @@ fn F(unused a: i32) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_24 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15_24: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_24 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_24 [concrete = constants.%.795f] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc15_16: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %a.loc15: %i32 = wrapper_binding a, %a.param diff --git a/toolchain/check/testdata/main_run/return_i32.carbon b/toolchain/check/testdata/main_run/return_i32.carbon index 2d6baf66ec7e..f8f99dfcad72 100644 --- a/toolchain/check/testdata/main_run/return_i32.carbon +++ b/toolchain/check/testdata/main_run/return_i32.carbon @@ -31,7 +31,7 @@ fn Run(unused argc: i32, unused argv: i32*) -> i32 { return 0; } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -80,7 +80,7 @@ fn Run(unused argc: i32, unused argv: i32*) -> i32 { return 0; } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_13: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc4_13: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -112,7 +112,7 @@ fn Run(unused argc: i32, unused argv: i32*) -> i32 { return 0; } // CHECK:STDOUT: %pattern_type.f00: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %argv.param_patt: %pattern_type.f00 = value_param_pattern [concrete] // CHECK:STDOUT: %argv.patt: %pattern_type.f00 = at_binding_pattern argv, %argv.param_patt [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: 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] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] @@ -164,7 +164,7 @@ fn Run(unused argc: i32, unused argv: i32*) -> i32 { return 0; } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_48 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc5_48: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc5_48: Core.Form = init_form %i32.loc5_48 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc5_48: Core.Form = init_form %i32.loc5_48 [concrete = constants.%.795f] // CHECK:STDOUT: %argc.param: %i32 = value_param call_param0 // CHECK:STDOUT: %i32.loc5_21: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %argc: %i32 = wrapper_binding argc, %argc.param diff --git a/toolchain/check/testdata/match_first/basic.carbon b/toolchain/check/testdata/match_first/basic.carbon index f955b4d63d11..61f97176450e 100644 --- a/toolchain/check/testdata/match_first/basic.carbon +++ b/toolchain/check/testdata/match_first/basic.carbon @@ -456,6 +456,7 @@ final match_first { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -464,6 +465,7 @@ final match_first { // CHECK:STDOUT: %.loc9_7.2: type = converted %.loc9_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref.loc9: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc9_7.2, @Z [concrete = constants.%.78e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc6_9.2 as %Z.ref.loc6 { @@ -481,6 +483,7 @@ final match_first { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness @empty_tuple.type.as.Z.impl.%Z.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -490,6 +493,7 @@ final match_first { // CHECK:STDOUT: %.loc7_9.2: type = converted %.loc7_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc7_9.2, @Z [concrete = constants.%.78e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc7_9.2 as %Z.ref { @@ -508,6 +512,7 @@ final match_first { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -516,6 +521,7 @@ final match_first { // CHECK:STDOUT: %.loc8_9.2: type = converted %.loc8_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref.loc8: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc8_9.2, @Z [concrete = constants.%.78e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc5_7.2 as %Z.ref.loc5 { @@ -533,6 +539,7 @@ final match_first { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -541,6 +548,7 @@ final match_first { // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref.loc10: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc10_7.2, @Z [concrete = constants.%.78e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc5_7.2 as %Z.ref.loc5 { @@ -558,6 +566,7 @@ final match_first { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -566,6 +575,7 @@ final match_first { // CHECK:STDOUT: %.loc9_7.2: type = converted %.loc9_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref.loc9: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc9_7.2, @Z [concrete = constants.%.78e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc6_9.2 as %Z.ref.loc6 { @@ -583,6 +593,7 @@ final match_first { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -591,6 +602,7 @@ final match_first { // CHECK:STDOUT: %.loc8_9.2: type = converted %.loc8_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref.loc8: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @empty_tuple.type.as.Z.impl.%.loc8_9.2, @Z [concrete = constants.%.78e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc5_7.2 as %Z.ref.loc5 { diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index 8f07b108b664..c2718ddd45e9 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -51,7 +51,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -109,7 +109,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc4_14: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc4_14: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/alias.carbon b/toolchain/check/testdata/namespace/alias.carbon index fb752dac47ed..37ddd146af0c 100644 --- a/toolchain/check/testdata/namespace/alias.carbon +++ b/toolchain/check/testdata/namespace/alias.carbon @@ -31,7 +31,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -93,7 +93,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19_14: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc19_14: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -102,7 +102,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc21: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc21: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -114,7 +114,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon index 4ab9121e464a..0eea09ba8103 100644 --- a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon +++ b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon @@ -33,7 +33,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -86,7 +86,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc27_14: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc27_14: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index d071940558d3..193d2aaf7564 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -44,7 +44,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -127,7 +127,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc22 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc22: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22: Core.Form = init_form %i32.loc22 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc22: Core.Form = init_form %i32.loc22 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index 7d5a09041f66..c0c560130bca 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -69,7 +69,7 @@ fn Main() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -194,7 +194,7 @@ fn Main() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon index 7ec4ecbcc736..7d4bd1ea9933 100644 --- a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon @@ -37,7 +37,7 @@ fn Main() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -115,7 +115,7 @@ fn Main() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_11: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15_11: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index 00d608d60ffd..f1d47a16b4af 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -93,6 +93,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern [concrete] // CHECK:STDOUT: %.f34: Core.Form = init_form bool [concrete] // CHECK:STDOUT: %EqWith.type.d1f: type = facet_type <@EqWith, @EqWith(%C)> [concrete] +// CHECK:STDOUT: %.53e: = impl_self_witness %C, @EqWith, @EqWith(%C) [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness @C.as.EqWith.impl.%EqWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.4a7: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.c03: %pattern_type.4a7 = value_param_pattern [concrete] @@ -146,6 +147,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %C.ref.loc6_23: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %EqWith.type: type = facet_type <@EqWith, @EqWith(constants.%C)> [concrete = constants.%EqWith.type.d1f] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @C.as.EqWith.impl.%C.ref.loc6_6, @EqWith, @EqWith(constants.%C) [concrete = constants.%.53e] // CHECK:STDOUT: %TestEqual.decl: %TestEqual.type = fn_decl @TestEqual [concrete = constants.%TestEqual] { // CHECK:STDOUT: %a.param_patt: %pattern_type.4a7 = value_param_pattern [concrete = constants.%a.param_patt] // CHECK:STDOUT: %a.patt: %pattern_type.4a7 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] @@ -386,6 +388,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern [concrete] // CHECK:STDOUT: %.f34: Core.Form = init_form bool [concrete] // CHECK:STDOUT: %EqWith.type.c2a: type = facet_type <@EqWith, @EqWith(%C)> [concrete] +// CHECK:STDOUT: %.786: = impl_self_witness %C, @EqWith, @EqWith(%C) [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness @C.as.EqWith.impl.%EqWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.eae: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.bcb: %pattern_type.eae = value_param_pattern [concrete] @@ -441,6 +444,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %C.ref.loc7_23: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %EqWith.type: type = facet_type <@EqWith, @EqWith(constants.%C)> [concrete = constants.%EqWith.type.c2a] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc7: = impl_self_witness @C.as.EqWith.impl.%C.ref.loc7_6, @EqWith, @EqWith(constants.%C) [concrete = constants.%.786] // CHECK:STDOUT: %TestRhsBad.decl: %TestRhsBad.type = fn_decl @TestRhsBad [concrete = constants.%TestRhsBad] { // CHECK:STDOUT: %a.param_patt: %pattern_type.eae = value_param_pattern [concrete = constants.%a.param_patt.70a] // CHECK:STDOUT: %a.patt: %pattern_type.eae = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.b94] diff --git a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon index 8d3a4df5c59e..c8377015e604 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -52,6 +52,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] +// CHECK:STDOUT: %.719: = impl_self_witness %C, @Inc [concrete] // CHECK:STDOUT: %Inc.impl_witness: = impl_witness @C.as.Inc.impl.%Inc.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.4a7: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.26a: %pattern_type.4a7 = ref_param_pattern [concrete] @@ -64,6 +65,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %AddAssignWith.type.2fb: type = generic_interface_type @AddAssignWith [concrete] // CHECK:STDOUT: %AddAssignWith.generic: %AddAssignWith.type.2fb = struct_value () [concrete] // CHECK:STDOUT: %AddAssignWith.type.cba: type = facet_type <@AddAssignWith, @AddAssignWith(%C)> [concrete] +// CHECK:STDOUT: %.244: = impl_self_witness %C, @AddAssignWith, @AddAssignWith(%C) [concrete] // CHECK:STDOUT: %AddAssignWith.impl_witness: = impl_witness @C.as.AddAssignWith.impl.%AddAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %other.param_patt.b8c: %pattern_type.4a7 = value_param_pattern [concrete] // CHECK:STDOUT: %other.patt.527: %pattern_type.4a7 = at_binding_pattern other, %other.param_patt.b8c [concrete] @@ -108,6 +110,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Inc.ref: type = name_ref Inc, imports.%Core.Inc [concrete = constants.%Inc.type] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @C.as.Inc.impl.%C.ref, @Inc [concrete = constants.%.719] // CHECK:STDOUT: impl_decl @C.as.AddAssignWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc22_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -115,6 +118,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %C.ref.loc22_30: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %AddAssignWith.type: type = facet_type <@AddAssignWith, @AddAssignWith(constants.%C)> [concrete = constants.%AddAssignWith.type.cba] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc22: = impl_self_witness @C.as.AddAssignWith.impl.%C.ref.loc22_6, @AddAssignWith, @AddAssignWith(constants.%C) [concrete = constants.%.244] // CHECK:STDOUT: %TestIncNonRef.decl: %TestIncNonRef.type = fn_decl @TestIncNonRef [concrete = constants.%TestIncNonRef] { // CHECK:STDOUT: %a.param_patt: %pattern_type.4a7 = value_param_pattern [concrete = constants.%a.param_patt] // CHECK:STDOUT: %a.patt: %pattern_type.4a7 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index 9a4cbac8d875..cca4e6b3046a 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -56,6 +56,7 @@ fn Test() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ImplicitAs.type.7cc: type = facet_type <@ImplicitAs, @ImplicitAs(%X)> [concrete] +// CHECK:STDOUT: %.6b4: = impl_self_witness %i32, @ImplicitAs, @ImplicitAs(%X) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.677: = impl_witness @i32.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %self.param_patt.049: %pattern_type.6b6 = value_param_pattern [concrete] // CHECK:STDOUT: %self.patt.f6c: %pattern_type.6b6 = at_binding_pattern self, %self.param_patt.049 [concrete] @@ -78,10 +79,11 @@ fn Test() { // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %i32, (%Copy.impl_witness.0e0) [concrete] // CHECK:STDOUT: %Copy.WithSelf.Op.type.d09: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] // CHECK:STDOUT: %.7a6: type = fn_type_with_self_type %Copy.WithSelf.Op.type.d09, %Copy.facet [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.4f6, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] +// CHECK:STDOUT: %.516: = impl_self_witness %X, @ImplicitAs, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.90f: = impl_witness @X.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %self.param_patt.172: %pattern_type.6cb = value_param_pattern [concrete] // CHECK:STDOUT: %self.patt.7ac: %pattern_type.6cb = at_binding_pattern self, %self.param_patt.172 [concrete] @@ -154,6 +156,7 @@ fn Test() { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%X)> [concrete = constants.%ImplicitAs.type.7cc] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc19: = impl_self_witness @i32.as.ImplicitAs.impl.%i32, @ImplicitAs, @ImplicitAs(constants.%X) [concrete = constants.%.6b4] // CHECK:STDOUT: impl_decl @X.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -161,6 +164,7 @@ fn Test() { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32)> [concrete = constants.%ImplicitAs.type.914] // CHECK:STDOUT: } +// 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 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.f0b] @@ -228,7 +232,7 @@ fn Test() { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc24_26: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc24_26: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %self.param: %X = value_param call_param0 // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %self: %X = wrapper_binding self, %self.param @@ -396,7 +400,7 @@ fn Test() { // CHECK:STDOUT: specific @Source(constants.%i32) { // CHECK:STDOUT: %T.patt.loc31_20.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc31_20.1 => constants.%i32 -// CHECK:STDOUT: %.loc31_31.2 => constants.%.795 +// CHECK:STDOUT: %.loc31_31.2 => constants.%.795f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6 // CHECK:STDOUT: %return.param_patt.loc31_31.2 => constants.%return.param_patt.a9a // CHECK:STDOUT: %return.patt.loc31_28.2 => constants.%return.patt.e1b diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 6d9f3c05e83f..b80f4f028c25 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -407,6 +407,7 @@ fn F() { // CHECK:STDOUT: %subscript.patt.bdc: %pattern_type.51d = at_binding_pattern subscript, %subscript.param_patt.fd1 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %IndexWith.type.de8: type = facet_type <@IndexWith, @IndexWith(%empty_tuple.type, %empty_tuple.type)> [concrete] +// CHECK:STDOUT: %.65d: = impl_self_witness %C, @IndexWith, @IndexWith(%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @C.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %Self.121: %IndexWith.type.de8 = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %IndexWith.WithSelf.At.type.d39: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(%empty_tuple.type, %empty_tuple.type, %Self.799) [symbolic] @@ -479,6 +480,7 @@ fn F() { // CHECK:STDOUT: %.loc8_32.2: type = converted %.loc8_31, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%empty_tuple.type, constants.%empty_tuple.type)> [concrete = constants.%IndexWith.type.de8] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.IndexWith.impl.%C.ref, @IndexWith, @IndexWith(constants.%empty_tuple.type, constants.%empty_tuple.type) [concrete = constants.%.65d] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon index 2d505dcafc44..d329bb9702ae 100644 --- a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon +++ b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon @@ -107,6 +107,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.300: = impl_self_witness %.Self, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] // CHECK:STDOUT: %impl.elem0.55a: type = impl_witness_access %.300, element0 [symbolic_self] // CHECK:STDOUT: %IndexWith_where.type.192: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f) where %impl.elem0.55a = %ElementType> [concrete] +// CHECK:STDOUT: %.769: = impl_self_witness %C, @IndexWith, @IndexWith(%SubscriptType.f8f) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @C.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -184,6 +185,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %rewrite.loc8_60.2 = requirement_rewrite %impl.elem0.loc8_47.2, %ElementType.ref.loc8_62 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.IndexWith.impl.%C.ref, @IndexWith, @IndexWith(constants.%SubscriptType.f8f) [concrete = constants.%.769] // CHECK:STDOUT: %.loc14_25.1: ref %SubscriptType.f8f = temporary_storage // CHECK:STDOUT: %.loc14_25.2: init %SubscriptType.f8f to %.loc14_25.1 = class_init () [concrete = constants.%SubscriptType.val] // CHECK:STDOUT: %.loc14_25.3: init %SubscriptType.f8f = converted @__global_init.%.loc14, %.loc14_25.2 [concrete = constants.%SubscriptType.val] @@ -319,6 +321,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.a93: = impl_self_witness %.Self, @IndexWith, @IndexWith(Core.IntLiteral) [symbolic_self] // CHECK:STDOUT: %impl.elem0.d9e: type = impl_witness_access %.a93, element0 [symbolic_self] // CHECK:STDOUT: %IndexWith_where.type.4f3: type = facet_type <@IndexWith, @IndexWith(Core.IntLiteral) where %impl.elem0.d9e = %C> [concrete] +// CHECK:STDOUT: %.291: = impl_self_witness %tuple.type.748, @IndexWith, @IndexWith(Core.IntLiteral) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @tuple.type.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.8b4: type = pattern_type %tuple.type.748 [concrete] // CHECK:STDOUT: %self.param_patt.284: %pattern_type.8b4 = value_param_pattern [concrete] @@ -393,6 +396,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %rewrite.loc8_67.2 = requirement_rewrite %impl.elem0.loc8_54.2, %C.ref.loc8_69 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @tuple.type.as.IndexWith.impl.%.loc8_11.2, @IndexWith, @IndexWith(Core.IntLiteral) [concrete = constants.%.291] // CHECK:STDOUT: %tuple.loc14: %tuple.type.748 = tuple_value (@__global_init.%.loc14_21.2, @__global_init.%.loc14_30.2) [concrete = constants.%tuple.adf] // CHECK:STDOUT: %.loc14_34: %tuple.type.748 = converted @__global_init.%.loc14_34, %tuple.loc14 [concrete = constants.%tuple.adf] // CHECK:STDOUT: %.loc14_13.1: type = splice_block %.loc14_13.3 [concrete = constants.%tuple.type.748] { @@ -520,6 +524,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.300: = impl_self_witness %.Self, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] // CHECK:STDOUT: %impl.elem0.55a: type = impl_witness_access %.300, element0 [symbolic_self] // CHECK:STDOUT: %IndexWith_where.type.192: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f) where %impl.elem0.55a = %ElementType> [concrete] +// CHECK:STDOUT: %.769: = impl_self_witness %C, @IndexWith, @IndexWith(%SubscriptType.f8f) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @C.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete] @@ -592,6 +597,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %rewrite.loc8_60.2 = requirement_rewrite %impl.elem0.loc8_47.2, %ElementType.ref.loc8_62 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.IndexWith.impl.%C.ref, @IndexWith, @IndexWith(constants.%SubscriptType.f8f) [concrete = constants.%.769] // CHECK:STDOUT: %.loc14_13.1: ref %C = temporary_storage // CHECK:STDOUT: %.loc14_13.2: init %C to %.loc14_13.1 = class_init () [concrete = constants.%C.val] // CHECK:STDOUT: %.loc14_13.3: init %C = converted @__global_init.%.loc14, %.loc14_13.2 [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index 7869f75d3381..e699d734d668 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -91,6 +91,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern [concrete] // CHECK:STDOUT: %.f34: Core.Form = init_form bool [concrete] // CHECK:STDOUT: %OrderedWith.type.108: type = facet_type <@OrderedWith, @OrderedWith(%C)> [concrete] +// CHECK:STDOUT: %.71b: = impl_self_witness %C, @OrderedWith, @OrderedWith(%C) [concrete] // CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness @C.as.OrderedWith.impl.%OrderedWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.4a7: type = pattern_type %C [concrete] // CHECK:STDOUT: %self.param_patt.c03: %pattern_type.4a7 = value_param_pattern [concrete] @@ -158,6 +159,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %C.ref.loc6_28: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %OrderedWith.type: type = facet_type <@OrderedWith, @OrderedWith(constants.%C)> [concrete = constants.%OrderedWith.type.108] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc6: = impl_self_witness @C.as.OrderedWith.impl.%C.ref.loc6_6, @OrderedWith, @OrderedWith(constants.%C) [concrete = constants.%.71b] // CHECK:STDOUT: %TestLess.decl: %TestLess.type = fn_decl @TestLess [concrete = constants.%TestLess] { // CHECK:STDOUT: %a.param_patt: %pattern_type.4a7 = value_param_pattern [concrete = constants.%a.param_patt] // CHECK:STDOUT: %a.patt: %pattern_type.4a7 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] diff --git a/toolchain/check/testdata/pointer/address_of_deref.carbon b/toolchain/check/testdata/pointer/address_of_deref.carbon index 91a5e4699de2..3c36941fbe5d 100644 --- a/toolchain/check/testdata/pointer/address_of_deref.carbon +++ b/toolchain/check/testdata/pointer/address_of_deref.carbon @@ -26,7 +26,7 @@ fn F() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -98,7 +98,7 @@ fn F() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/basic.carbon b/toolchain/check/testdata/pointer/basic.carbon index 375b816d7ac2..0c399a3c80af 100644 --- a/toolchain/check/testdata/pointer/basic.carbon +++ b/toolchain/check/testdata/pointer/basic.carbon @@ -28,7 +28,7 @@ fn F() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -117,7 +117,7 @@ fn F() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/code_after_return_value.carbon b/toolchain/check/testdata/return/code_after_return_value.carbon index 5934f9827e53..2595a7285ab1 100644 --- a/toolchain/check/testdata/return/code_after_return_value.carbon +++ b/toolchain/check/testdata/return/code_after_return_value.carbon @@ -34,7 +34,7 @@ fn F(unused b: bool) -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -90,7 +90,7 @@ fn F(unused b: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15_25: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15_25: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_16: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %b: bool = wrapper_binding b, %b.param diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index 23da86c256be..db4c3665fad7 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -45,7 +45,7 @@ fn G() -> C { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -127,7 +127,7 @@ fn G() -> C { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon index 9b3c5deb1981..243cda6f5fc9 100644 --- a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon @@ -52,7 +52,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -121,7 +121,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -130,7 +130,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc30 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc30: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc30: Core.Form = init_form %i32.loc30 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc30: Core.Form = init_form %i32.loc30 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_type_mismatch.carbon b/toolchain/check/testdata/return/fail_type_mismatch.carbon index 2322e9f5b811..9cec446dfc5a 100644 --- a/toolchain/check/testdata/return/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/return/fail_type_mismatch.carbon @@ -30,7 +30,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -63,7 +63,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 9de7b2d66065..e462d9c193b0 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -97,6 +97,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.val: %D = struct_value (%int_0.3c0, %int_0.3c0) [concrete] // CHECK:STDOUT: %C.771: type = class_type @C, @C(%int_0.3c0) [concrete] // CHECK:STDOUT: %ImplicitAs.type.24d: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [concrete] +// CHECK:STDOUT: %.8ed: = impl_self_witness %C.771, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.4c1: = impl_witness @C.as.ImplicitAs.impl.0e1.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.84d: type = pattern_type %C.771 [concrete] // CHECK:STDOUT: %self.param_patt.98b: %pattern_type.84d = value_param_pattern [concrete] @@ -108,6 +109,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.953: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %C.83b: type = class_type @C, @C(%int_1.0c6) [concrete] +// CHECK:STDOUT: %.525: = impl_self_witness %C.83b, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c46: = impl_witness @C.as.ImplicitAs.impl.f6a.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.91a: type = pattern_type %C.83b [concrete] // CHECK:STDOUT: %self.param_patt.327: %pattern_type.91a = value_param_pattern [concrete] @@ -119,6 +121,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.3cb: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.295: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.5ce: type = class_type @C, @C(%int_2.295) [concrete] +// CHECK:STDOUT: %.dea: = impl_self_witness %C.5ce, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.430: = impl_witness @C.as.ImplicitAs.impl.aab.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7dd: type = pattern_type %C.5ce [concrete] // CHECK:STDOUT: %self.param_patt.e14: %pattern_type.7dd = value_param_pattern [concrete] @@ -130,6 +133,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.763: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.410: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %C.b3e: type = class_type @C, @C(%int_3.410) [concrete] +// CHECK:STDOUT: %.870: = impl_self_witness %C.b3e, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.b6d: = impl_witness @C.as.ImplicitAs.impl.203.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.26a: type = pattern_type %C.b3e [concrete] // CHECK:STDOUT: %self.param_patt.0fc: %pattern_type.26a = value_param_pattern [concrete] @@ -141,6 +145,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.b7a: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.4eb: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %C.8ee: type = class_type @C, @C(%int_4.4eb) [concrete] +// CHECK:STDOUT: %.58e: = impl_self_witness %C.8ee, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c85: = impl_witness @C.as.ImplicitAs.impl.371.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.387: type = pattern_type %C.8ee [concrete] // CHECK:STDOUT: %self.param_patt.826: %pattern_type.387 = value_param_pattern [concrete] @@ -152,6 +157,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.c9d: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.eef: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %C.5c1: type = class_type @C, @C(%int_5.eef) [concrete] +// CHECK:STDOUT: %.ad5: = impl_self_witness %C.5c1, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.1af: = impl_witness @C.as.ImplicitAs.impl.c73.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.05e: type = pattern_type %C.5c1 [concrete] // CHECK:STDOUT: %self.param_patt.f7b: %pattern_type.05e = value_param_pattern [concrete] @@ -163,6 +169,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.be9: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_6.439: %i32 = int_value 6 [concrete] // CHECK:STDOUT: %C.57b: type = class_type @C, @C(%int_6.439) [concrete] +// CHECK:STDOUT: %.caf: = impl_self_witness %C.57b, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c9c: = impl_witness @C.as.ImplicitAs.impl.2f3.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.4b0: type = pattern_type %C.57b [concrete] // CHECK:STDOUT: %self.param_patt.e33: %pattern_type.4b0 = value_param_pattern [concrete] @@ -174,6 +181,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %bound_method.7ff: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_7.690: %i32 = int_value 7 [concrete] // CHECK:STDOUT: %C.b0a: type = class_type @C, @C(%int_7.690) [concrete] +// CHECK:STDOUT: %.468: = impl_self_witness %C.b0a, @ImplicitAs, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.642: = impl_witness @C.as.ImplicitAs.impl.28a.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.bc2: type = pattern_type %C.b0a [concrete] // CHECK:STDOUT: %self.param_patt.21a: %pattern_type.bc2 = value_param_pattern [concrete] @@ -238,6 +246,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc8: = impl_self_witness @C.as.ImplicitAs.impl.0e1.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.8ed] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.f6a [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] @@ -254,6 +263,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc9: = impl_self_witness @C.as.ImplicitAs.impl.f6a.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.525] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.aab [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] @@ -270,6 +280,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc10: = impl_self_witness @C.as.ImplicitAs.impl.aab.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.dea] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.203 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] @@ -286,6 +297,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc11: = impl_self_witness @C.as.ImplicitAs.impl.203.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.870] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.371 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] @@ -302,6 +314,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc12: = impl_self_witness @C.as.ImplicitAs.impl.371.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.58e] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.c73 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] @@ -318,6 +331,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc13: = impl_self_witness @C.as.ImplicitAs.impl.c73.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.ad5] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.2f3 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] @@ -334,6 +348,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc14: = impl_self_witness @C.as.ImplicitAs.impl.2f3.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.caf] // CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.28a [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] @@ -350,6 +365,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.24d] // CHECK:STDOUT: } +// CHECK:STDOUT: %.loc15: = impl_self_witness @C.as.ImplicitAs.impl.28a.%C, @ImplicitAs, @ImplicitAs(constants.%D) [concrete = constants.%.468] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @C.as.ImplicitAs.impl.0e1: %C as %ImplicitAs.type { diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index 4b64f02cae8b..0624a78927f0 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -66,7 +66,7 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.094: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete] +// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete] // CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.953: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -127,7 +127,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc25 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32.loc25 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32.loc25 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/returned_var_scope.carbon b/toolchain/check/testdata/return/returned_var_scope.carbon index 1e96fc6738d2..2736de647204 100644 --- a/toolchain/check/testdata/return/returned_var_scope.carbon +++ b/toolchain/check/testdata/return/returned_var_scope.carbon @@ -39,7 +39,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -111,7 +111,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc15: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -122,7 +122,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc25 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25_34: Core.Form = init_form %i32.loc25 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc25_34: Core.Form = init_form %i32.loc25 [concrete = constants.%.795f] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc25_25: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %b: bool = wrapper_binding b, %b.param diff --git a/toolchain/check/testdata/return/value.carbon b/toolchain/check/testdata/return/value.carbon index 73a7c4d78623..3469c1499c6c 100644 --- a/toolchain/check/testdata/return/value.carbon +++ b/toolchain/check/testdata/return/value.carbon @@ -23,7 +23,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [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] @@ -72,7 +72,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b] // CHECK:STDOUT: } { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795] +// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32 [concrete = constants.%.795f] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/element_access.carbon b/toolchain/check/testdata/tuple/element_access.carbon index ab15d6361c3c..b0123e241c2a 100644 --- a/toolchain/check/testdata/tuple/element_access.carbon +++ b/toolchain/check/testdata/tuple/element_access.carbon @@ -268,8 +268,8 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%a.var, element0 [concrete] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // 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: %pattern_type.6b6: type = pattern_type %i32 [concrete] diff --git a/toolchain/lower/testdata/interop/cpp/function/export/generic.carbon b/toolchain/lower/testdata/interop/cpp/function/export/generic.carbon index 1ffc46ca93e6..a7aca55cfcb7 100644 --- a/toolchain/lower/testdata/interop/cpp/function/export/generic.carbon +++ b/toolchain/lower/testdata/interop/cpp/function/export/generic.carbon @@ -152,7 +152,7 @@ fn Run() { // CHECK:STDOUT: define internal void @_ZN6CarbonL1FENS_1BE() #2 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %0 = alloca %"class.Carbon::B", align 1 -// CHECK:STDOUT: call void @_CF__carbon_thunkinst70000050.Main(ptr noundef nonnull align 1 %0) +// CHECK:STDOUT: call void @_CF__carbon_thunkinst70000052.Main(ptr noundef nonnull align 1 %0) // CHECK:STDOUT: ret void // CHECK:STDOUT: } // CHECK:STDOUT: @@ -215,7 +215,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define void @_CF__carbon_thunkinst70000050.Main(ptr %_) #4 !dbg !48 { +// CHECK:STDOUT: define void @_CF__carbon_thunkinst70000052.Main(ptr %_) #4 !dbg !48 { // CHECK:STDOUT: entry: // CHECK:STDOUT: call void @_CF.Main.bd1b6d59f703c190(ptr %_), !dbg !51 // CHECK:STDOUT: ret void, !dbg !51 @@ -307,7 +307,7 @@ fn Run() { // CHECK:STDOUT: !45 = !{!46} // CHECK:STDOUT: !46 = !DILocalVariable(arg: 1, scope: !44, type: !20) // CHECK:STDOUT: !47 = !DILocation(line: 19, column: 1, scope: !44) -// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "F__carbon_thunkinst70000050", linkageName: "_CF__carbon_thunkinst70000050.Main", scope: null, file: !1, line: 19, type: !18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !49) +// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "F__carbon_thunkinst70000052", linkageName: "_CF__carbon_thunkinst70000052.Main", scope: null, file: !1, line: 19, type: !18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !49) // CHECK:STDOUT: !49 = !{!50} // CHECK:STDOUT: !50 = !DILocalVariable(arg: 1, scope: !48, type: !20) // CHECK:STDOUT: !51 = !DILocation(line: 19, column: 1, scope: !48) diff --git a/toolchain/sem_ir/impl.h b/toolchain/sem_ir/impl.h index a122225c8ea1..64b9bd4246bf 100644 --- a/toolchain/sem_ir/impl.h +++ b/toolchain/sem_ir/impl.h @@ -51,10 +51,18 @@ struct ImplFields { // sense internally. TypeInstId constraint_id; - // The single interface to implement from `constraint_id`. - // The members are `None` if `constraint_id` isn't complete or doesn't - // correspond to a single interface. + // The single interface to implement from `constraint_id`. This comes from the + // IdentifiedFacetType of the constraint, so any `.Self` are replaced by the + // impl's self type. + // + // May be `None` if the impl's constraint is not valid. SpecificInterface interface; + // An `ImplSelfWitness` instruction, which contains the SpecificInterface + // inside it. If the impl is generic, the constant value of the instruction + // has the impl's specific applied to it, so that GetConstantValueInSpecific + // can be used to get the `interface` being implemented after deducing the + // impl's generic arguments. + InstId interface_inst_id; // The witness for the impl. This can be `BuiltinErrorInst` or an import // reference. Note that the entries in the witness are updated at the end of